python用递归实现二分法求根
时间: 2023-11-19 14:07:39 浏览: 95
二分法求根是一种常见的数值计算方法,可以用递归实现。以下是一个实现二分法求根的 Python 代码:
```python
def bisection(f, a, b, eps=1e-6):
"""
使用二分法求解方程 f(x) = 0 的根。
f: 连续函数
a, b: 初始区间,满足 f(a) * f(b) < 0
eps: 精度要求
"""
c = (a + b) / 2
if abs(f(c)) < eps:
return c
if f(a) * f(c) < 0:
return bisection(f, a, c, eps)
else:
return bisection(f, c, b, eps)
```
其中,f 是需要求根的函数,a 和 b 是初始区间,eps 是精度要求。函数首先计算区间的中点 c,如果中点的函数值小于精度要求,则返回 c 作为根;否则,如果 f(a) 和 f(c) 的符号不同,则递归调用 bisection(f, a, c, eps);否则,递归调用 bisection(f, c, b, eps)。
这个函数可以用于求解任何连续函数的根,只需要将需要求根的函数作为参数传入即可。例如,要求解方程 x^2 - 2 = 0 的根,可以这样调用:
```python
def f(x):
return x**2 - 2
root = bisection(f, 0, 2)
print(root) # 输出 1.4142136573791504
```
这个函数的根是 1.4142136573791504,与实际值(sqrt(2))非常接近。
阅读全文