编写用牛顿迭代法求方程根的函数。方程为ax^3 +bx^2 +cx +d=0,系数a,b,c,d由主函数输入,求x在1附近的一个实根。求出跟后,由主函数输出。(Python)
def solution(a, b, c, d):
x = 1.5
x0 = x
f = a * x0**3 + b * x0**2 + c * x0 + d
fd = 3 * a * x0**2 + 2 * b * x0 + c
h = f / fd
x = x0 - h
while abs(x - x0) >= 1e-5:
x0 = x
f = a * x0**3 + b * x0**2 + c * x0 + d
fd = 3 * a * x0**2 + 2 * b * x0 + c
h = f / fd
x = x0 - h
return x
if __name__ == '__main__':
print("请输入方程的系数: ")
a, b, c, d = map(float, input().split())
print("方程的参数为:", a, b, c, d)
x = solution(a, b, c, d)
print("所求方程的根为 x=%.6f" % x)
结果: