8-10 【Python0011】牛顿迭代法 分数 10 作者 doublebest 单位 石家庄铁道大学
【题目描述】编写程序,使用牛顿迭代法求方程
在x附近的一个实根。
【练习要求】请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释。
【输入格式】请在一行中输入方程系数a、b、c、d和实数x,数据中间以空格为间隔。
【输出格式】对每一组输入的数据,输出牛顿迭代法求出的实根(格式为保留小数点后2位,四舍五入)。
【输入样例】1.0 2.0 3.0 4.0 1.0
【输出样例】-1.65
def newton_method(a, b, c, d, x0, epsilon=1e-6, max_iterations=100):
# 迭代次数
iterations = 0
# 初始值
x = x0
# 迭代计算
while True:
# 计算当前值对应的函数值和导数值
fx = a * x ** 3 + b * x ** 2 + c * x + d
f_prime_x = 3 * a * x ** 2 + 2 * b * x + c
# 计算下一个近似值
x_next = x - fx / f_prime_x
# 判断迭代是否满足精度要求或者达到最大迭代次数
if abs(x_next - x) < epsilon or iterations >= max_iterations:
break
# 更新迭代值
x = x_next
iterations += 1
return round(x, 2) # 保留两位小数并四舍五入
# 输入方程系数和初始值
a, b, c, d, x0 = map(float, input().split())
# 使用牛顿迭代法求解实根
root = newton_method(a, b, c, d, x0)
# 输出实根
print(root)