上一篇
梁昊:4.8 函数序列的迭代算法——反向传播zhuanlan.zhihu.com天底下真的有这么好的事情,答案是利用连分数:这对于多数人而言可能是一个相对陌生而古老的工具。为此我们需要学习一下有关连分数的两个定理:
引入记号
记作
定理1
以及初值
证明
使用数学归纳法。对于
对于
这样我们将一个需要从
定理2 有如下逆序等式成立
证明
由定理1中的递归关系可知
引入
以及
从而可得
命题得证。
这个逆序算法相比之前的更加稳定。
这样我们有如下计算无穷连分式
其中
回到正题,将逆向迭代式
除去一个
这样就化作了一个无穷连分式的计算。对连分式取截断
这样,我们就可以通过上述算法计算得到收敛的
附注:
这套用连分数计算函数值的算法被称为修正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算法最初提出的目的也是为了计算球贝塞尔函数。但是考虑到两类勒让德函数的行为更具有冲击性,我选择了它作为例子。