Python实现斯蒂芬森迭代自动计算

 Python实现斯蒂芬森迭代自动计算

构建不动点函数,并将函数代入公式中,即可得到答案。

这里以不动点函数为(x^2+1)^(1/3)为例

  1. 改写fun1(x)的返回值;
  2. 赋予初值x=1.5;k=0;
  3. 设置误差限;
  4. 运行即可得到答案。
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)

答案如图所示:

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值