guozi6

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  193 随笔 :: 0 文章 :: 1 评论 :: 3715 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
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_raphson(a, b, c, d, x0, tol=1e-8, max_iter=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

x_n = x0
for _ in range(max_iter):
x_n1 = x_n - f(x_n) / f_prime(x_n)
if abs(x_n1 - x_n) < tol:
return x_n1 # 收敛,返回结果
x_n = x_n1 # 更新迭代值

return None # 未在最大迭代次数内收敛

# 示例使用
a, b, c, d = 1, -6, 11, -6 # 示例方程 x^3 - 6x^2 + 11x - 6 = 0 的系数
x0 = 1 # 初始猜测值
root = newton_raphson(a, b, c, d, x0)
if root is not None:
print(f"方程的实根约为: {root}")
else:
print("未找到根或迭代未收敛。")
posted on   汀幻  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示