2024.5.18

8-10 【Python0011】牛顿迭代法
分数 10
作者 doublebest
单位 石家庄铁道大学

【题目描述】编写程序,使用牛顿迭代法求方程
图片1.png
在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)

posted @ 2024-06-13 15:40  liuxuechao  阅读(8)  评论(0编辑  收藏  举报