python入门学习笔记003--趣学Python算法--第3例牛顿迭代法求方程根

问题描述编写用牛顿迭代法求方程根的函数。方程为ax3+bx2+cx+d=0,系数a、b、c、d由主函数输入,求x在1附近的一个实根。求出根后,由主函数输出。牛顿迭代法的公式:x=x0-[f(x0)/f'(x0)],设迭代到|x-x0|≤10-5时结束。

中心思想

牛顿迭代法是取x0之后,在这个基础上找到比x0更接近的方程根,一步一步迭代,从而找到更接近方程根的近似根。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def solution(a,b,c,d):
    x=1.5
    x0=x
    #f用来描述方程的值,fd用来描述方程求导之后的值
    f=a*x0*x0*x0+b*x0*x0+c*x0+d
    fd=3*a*x0*x0+2*b*x0+c
    h=f/fd
    x=x0-h
    #求更接近方程根的x的值
    while abs(x-x0)>=1e-5:
        x0=x
        f=a*x0*x0*x0+b*x0*x0+c*x0+d
        fd=3*a*x0*x0+2*b*x0+c
        h=f/fd
        x=x0-h
    return x
 
print("请输入方程的系数:")
a,b,c,d=map(float, input().split())
print("方程的参数为:",a,b,c,d)
x=solution(a,b,c,d)
print("所求方程的根为x=%.6f"%x)

  

 

posted @   猴子突突  阅读(124)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示