用二分法求方程的根的程序
时间: 2023-10-20 21:24:54 浏览: 151
matlab编的二分法求根的程序.doc.doc
5星 · 资源好评率100%
二分法(Bisection Method)又称作折半法,是一种数值计算方法,用于查找函数的根。其基本思想是将函数在指定区间内取中点,判断该中点是否为函数的根,如果不是,则根据函数在中点左右两侧的取值情况,缩小函数的查找范围,直到找到函数的根或者满足精度要求为止。
以下是用二分法求方程的根的 Python 代码示例:
```python
def bisection_method(f, a, b, epsilon):
"""
用二分法求解方程 f(x) = 0 的根
:param f: 目标方程
:param a: 查找区间的左端点
:param b: 查找区间的右端点
:param epsilon: 精度要求
:return: 方程的根
"""
# 判断查找区间是否合法
if f(a) * f(b) >= 0:
return None
# 初始化区间长度和中点
length = b - a
mid = (a + b) / 2
# 循环查找根
while length > epsilon:
# 如果中点为根,则直接返回
if f(mid) == 0:
return mid
# 根据函数在中点左右两侧的取值情况,缩小查找区间
if f(a) * f(mid) < 0:
b = mid
else:
a = mid
# 更新区间长度和中点
length = b - a
mid = (a + b) / 2
# 返回最终的根
return mid
```
该函数接受以下参数:
- f:目标方程,必须是一个可调用对象,接受一个实数参数并返回一个实数值。
- a:查找区间的左端点,必须是一个实数。
- b:查找区间的右端点,必须是一个实数。
- epsilon:精度要求,必须是一个正实数。
该函数返回方程的根,如果查找失败,则返回 None。
例如,要求解方程 x^3 - 3x^2 + 3x - 1 = 0 在区间 [0, 2] 内的根,精度要求为 0.0001,可以使用以下代码:
```python
def f(x):
return x ** 3 - 3 * x ** 2 + 3 * x - 1
root = bisection_method(f, 0, 2, 0.0001)
print(root)
```
该代码的输出结果为 0.99993896484375,即方程的一个近似根。
阅读全文