5.27
牛顿迭代法
【题目描述】
编写程序,使用牛顿迭代法求方程在x附近的一个实根。
【源代码程序】
def newton_method(a, b, c, d, x0, tolerance=1e-6, max_iterations=100):
# 定义方程及其导数
def f(x):
return a * x ** 3 + b * x ** 2 + c * x + d
def f_prime(x):
return 3 * a * x ** 2 + 2 * b * x + c
# 开始迭代
for _ in range(max_iterations):
# 计算当前迭代值
x1 = x0 - f(x0) / f_prime(x0)
# 如果迭代值的变化小于容忍误差,则认为已经找到了根
if abs(x1 - x0) < tolerance:
return round(x1, 2)
# 更新迭代值
x0 = x1
# 如果达到最大迭代次数仍未找到根,则返回None
return None
# 输入方程系数a、b、c、d和实数x
a, b, c, d, x = map(float, input().split())
# 使用牛顿迭代法求方程的实根
root = newton_method(a, b, c, d, x)
# 输出结果
print(root)
【运行测试】