2024.5.18
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)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通