二分法求解方程的根
def bisect_method(a, b, tol=1e-6, max_iter=1000):
"""
使用二分法求解方程 f(x) = x³ - 2x -5 = 0 在区间 [a,b] 内的根
参数:
a -- 区间左端点
b -- 区间右端点
tol -- 允许的误差 (默认 1e-6)
max_iter -- 最大迭代次数 (默认 1000)
返回:
root -- 方程的根
iter_count -- 迭代次数
"""
# 定义方程函数
def f(x):
return x ** 3 - 2 * x - 5
# 检查初始区间是否有效
if f(a) * f(b) >= 0:
raise ValueError("函数在区间端点处的函数值需要符号相反")
iter_count = 0
while (b - a) / 2 > tol and iter_count < max_iter:
c = (a + b) / 2 # 计算中点
if f(c) == 0:
return c, iter_count + 1 # 找到精确解
elif f(a) * f(c) < 0:
b = c # 根在左半区间
else:
a = c # 根在右半区间
iter_count += 1
root = (a + b) / 2 # 返回最终的近似解
return root, iter_count
# 在区间 (2,3) 内求解方程
root, iterations = bisect_method(2, 3)
print(f"方程 x³ - 2x -5 = 0 在区间 (2,3) 内的根为: {root:.6f}")
print(f"迭代次数: {iterations}")
posted on 2025-05-06 13:09 Indian_Mysore 阅读(93) 评论(0) 收藏 举报
浙公网安备 33010602011771号