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

中心思想

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

 

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)

  

Java 牛顿迭代法求平方根 牛顿迭代法求根python_迭代