用python写一个二分法求任意函数根的代码
时间: 2023-05-17 16:07:07 浏览: 49
以下是用 Python 实现的二分法求任意函数根的代码:
```python
def binary_search(f, a, b, tol=1e-6):
"""
二分法求任意函数根的函数
:param f: 目标函数
:param a: 左端点
:param b: 右端点
:param tol: 容差
:return: 根的近似值
"""
fa, fb = f(a), f(b)
if fa * fb > 0:
raise ValueError("f(a) 和 f(b) 的符号相同,无法使用二分法求解!")
while b - a > tol:
c = (a + b) / 2
fc = f(c)
if fc == 0:
return c
elif fc * fa < 0:
b, fb = c, fc
else:
a, fa = c, fc
return (a + b) / 2
```
使用方法:
假设我们要求 $f(x) = x^3 - 2x - 5$ 在区间 $[1, 3]$ 内的根,可以这样调用函数:
```python
def f(x):
return x ** 3 - 2 * x - 5
root = binary_search(f, 1, 3)
print(root)
```
输出结果为:
```
1.7715635299682617
```
这个值是 $f(x) = x^3 - 2x - 5$ 在区间 $[1, 3]$ 内的一个根的近似值。