Python实现斯蒂芬森迭代自动计算
构建不动点函数,并将函数代入公式中,即可得到答案。
这里以不动点函数为(x^2+1)^(1/3)为例
- 改写fun1(x)的返回值;
- 赋予初值x=1.5;k=0;
- 设置误差限;
- 运行即可得到答案。
def fun1(x): # 不动点函数
return (x**2+1)**(1/3)
x = 1.5 # 初值
k = 0
while True:
a = x
b = fun1(x)
c = fun1(fun1(x))
x = x-((b-x)**2)/(c-2*b+a)
k += 1
b = fun1(x) # 去掉这两行就能得到第0次迭代的b c结果
c = fun1(fun1(x)) # 去掉这两行就能得到第0次迭代的b c结果
print('第{}次迭代的结果为{} {} {}'.format(k, x, b, c))
if (abs(x-a)<(1e-5)): # abs()函数返回绝对值,1e-5为10的负5次方
break
print("方程的解为:")
print(x)
答案如图所示: