高斯-赛得尔迭代式 c++_4.9 函数序列的迭代算法——连分数

上一篇

梁昊:4.8 函数序列的迭代算法——反向传播​zhuanlan.zhihu.com
e323c7db1aae49b0836e154b7ebfe4a4.png

天底下真的有这么好的事情,答案是利用连分数:这对于多数人而言可能是一个相对陌生而古老的工具。为此我们需要学习一下有关连分数的两个定理:

引入记号

记作


定理1

,其中序列
满足递归关系

以及初值

证明

使用数学归纳法。对于

成立,对于
成立。下面假定对
成立,那么有

对于

也成立,故命题得证。

这样我们将一个需要从

算到
的连分式倒了过来。

定理2 有如下逆序等式成立

证明

由定理1中的递归关系可知

引入

,那么有

以及

从而可得

命题得证。

这个逆序算法相比之前的更加稳定。


这样我们有如下计算无穷连分式

的算法


其中
的设置是为了防止NAN。

回到正题,将逆向迭代式

除去一个

,引入比值
,那么有

这样就化作了一个无穷连分式的计算。对连分式取截断

,相当于上一篇文章取

这样,我们就可以通过上述算法计算得到收敛的

,然后依次计算
,则有


附注:
这套用连分数计算函数值的算法被称为修正Lentz算法,因一个叫Lentz的人修正了他自己提出的算法而得名,原始文献见
Lentz, William J.“A Method of Computing Spherical Bessel Functions of Complex Argument with Tables:” Fort Belvoir, VA: Defense Technical Information Center, September 1, 1973.
Lentz, William J. “Generating Bessel Functions in Mie Scattering Calculations Using Continued Fractions.” Applied Optics 15, No. 3 (March 1, 1976): 668 .

逆向迭代那块更经典的例子是球贝塞尔函数,Lentz算法最初提出的目的也是为了计算球贝塞尔函数。但是考虑到两类勒让德函数的行为更具有冲击性,我选择了它作为例子。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值