问题描述编写用牛顿迭代法求方程根的函数。方程为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)