二分法
解题步骤:
使用Python模拟:
# 二分法
def f(x):
return x**3 - 2*x + 1
def bisection(f, a, b, tol):
"""
使用二分法求函数f(x)在区间[a, b]上的零点近似值。
参数:
f (function): 要求解零点的函数
a (float): 区间左端点
b (float): 区间右端点
tol (float): 精度要求
返回:
float: 函数零点的近似值
"""
if f(a) * f(b) >= 0:
print("在给定区间内没有零点或有多个零点,此时二分法不适用!")
return None
c = a
while abs(b - a) >= tol:
c = (a + b) / 2
if f(c) == 0:
break
elif f(a) * f(c) < 0:
b = c
else:
a = c
return c
# 生成数据
a = -2
b = 2
tol = 1e-6
# 求解零点
root = bisection(f, a, b, tol)
if root is not None:
print(f"函数f(x)在区间[{a}, {b}]上的零点近似值为: {root}")
else:
print("无法找到函数的零点")Last updated