软件工程日报(4.10)
时长:
问题:
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_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("未找到根或迭代未收敛。")
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2023-04-16 c++训练打卡(8)