4.编写一个用二分法求非线性方程根的函数,并求方程的根.
时间: 2024-10-16 13:19:07 浏览: 33
二分法是一种常用的数值解法,特别适用于在给定区间内寻找连续函数的零点。这种方法通过将搜索范围逐步缩小一半来逼近精确解。下面是一个简单的Python函数示例,用于使用二分法求解非线性方程:
```python
def bisection_method(f, a, b, epsilon=1e-6):
"""
使用二分法求解非线性方程 f(x) = 0 的根
参数:
f (function): 非线性方程
a, b (float): 区间 [a, b] 内的初始猜测值,保证 f(a) * f(b) < 0
epsilon (float): 精度阈值,默认为1e-6
"""
if f(a) * f(b) >= 0: # 如果初始区间的端点同号,无法确定中间是否有根
raise ValueError("Initial interval does not bracket the root")
c = (a + b) / 2 # 中间点
while abs(f(c)) > epsilon: # 当函数值接近0时停止迭代
if f(a) * f(c) < 0: # 如果f(a) 和 f(c) 异号,更新区间
b = c
else:
a = c
c = (a + b) / 2
return c # 返回估计的根
# 示例:求解方程 x^3 - 2x - 5 = 0 的根
def equation(x):
return x**3 - 2*x - 5
root = bisection_method(equation, -5, 5)
print(f"Root estimated by bisection method: {root}")
阅读全文