Levin变换应用于欧拉常数数列及连分式数列改进算法的加速收敛

2021-01-12 02:17姚清照贺黎明
大学数学 2021年1期
关键词:欧拉分式表达式

姚清照, 贺黎明

(华东理工大学 >理学院,上海200237)

1 引 言

欧拉常数γ是在数学及物理领域十分重要的常数,应用也很广泛[1],如计算黎曼ζ函数[2]、Somos二次递归常数[3],以及Ising链模型中的关联长度[4]等等.对欧拉常数的计算十分重要,然而要得到高精度的近似值,仅仅对欧拉常数的原始定义

进行直接计算是比较困难的,这就需要有更高效的理论方法.有许多针对原定义数列Dn表达式进行修正实现加速收敛的工作[5-7].Lu等人[7]使用了连分式修正(modification)的方法提高收敛速度,并给出明确的余项表达式.本文在此修正数列的基础上,首次采用通用Levin变换的方法进行二次加速收敛修正欧拉常数数列,数值计算表明由此可以得到更为高效、精确的计算结果.

2 Lu等人的连分式修正[7]

用来定义欧拉常数的数列Dn收敛缓慢,收敛速度和n-1相当.Lu等人在Dn基础上提出一种运用连分式修正原定义后更快收敛到欧拉常数的数列

(1)

其中p,q是正整数.可以证明,如果取p=1时有

3 非线性数列变换[8]

非线性数列变换T是一种将已知部分和数列集合{[sm]},变换成一个有望更快收敛到原数列极限s的新数列集合{[s′m]}的运算规则

T∶{[sm]}→{[s′m]},

其中sm表示原数列的1到m项之和,m是非负整数.在实际计算中,只考虑对有限个元素构成的序列

{sl,sl+1,…,sNm}

进行变换.

Weniger对常用的加速收敛非线性数列变换方法做了很好的归纳和总结.在众多算法中,尤以Levin变换具有收敛速度快,计算效率高的突出优点.Levin变换假设数列部分和集合{[sm]}与它们的极限s满足关系式

(2)

其中ωm是余项估计,β为偏移常数.将上式移项化简并用k阶线性的差分算符Δk消去关于m的k-1阶多项式,经过整理就可以得到通用Levin变换

(3)

再用Sidi[9]的方法能得到简洁且适用于计算的通用Levin变换3项递推公式:

(4)

本文采用Weniger的建议只考虑取β=1.

余项估计值对于Levin变换是至关重要的.基于不同的余项模型的Levin变换称之为u变换、v变换等.对于有明确余项表达式的部分和序列,可采用(2)式的模型表达式,由此得到的变换式称通用Levin变换.此余项表达式的近似程度越好,Levin变换的收敛速度越快,这是Levin变换的显著优点.反之,Levin变换就不能很好地收敛,这同时也是它的显著弱点.

4 计算结果及讨论

Dn的余项大致为n-1,所以欧拉常数的直接计算是非常困难的.Lu等人[7]给出了改进的欧拉常数的系列表达式.(1)式中p越大,连分式的形式越复杂,其余项越小,收敛越快.如取p=3,可有

其余项为n-8,显然比Dn收敛快得多.

表1 连分式修正前后数列收敛的数值结果比较

表2 通用Levin变换对连分式修正前后数列加速收敛的数值结果比较

为了更细致地研究这个问题,利用计算机代数系统Maple把这里的所有结果重复进行了计算,结果列于表3右侧.使用Maple的所有计算结果都采用有理分式的形式,所以就完全克服了舍入误差的影响.与Fortran采用有限字长的浮点计算结果形成鲜明对比的是,由Maple得到的Levin变换结果的精度呈现出不断增加的趋势.

表3 通用Levin变换对加速收敛的Fortran和Maple计算结果比较

5 结 论

欧拉常数是一个具有重要应用价值的数学常数,有针对欧拉常数的专门算法研究,但是近几十年一直没有很好的进展.本文在已有的欧拉常数修正算法基础上再利用更具广泛性的非线性变换算法进行二次加速,极大的提高了计算效率.此外针对舍入误差对非线性变换的负面影响,可以利用Maple的有理式计算功能予以克服.通过与Fortran的浮点运算结果比较,克服了舍入误差的Levin变换可以使欧拉常数的计算精度不断增长的趋势保持不变.

致谢本文工作的主要结果是建立在Lu等人的对欧拉常数数列Dn连分式修正基础之上,有关非线性变换的算法主要参阅了Weniger的综述文章.在这里向这些作者一并表示感谢.

猜你喜欢
欧拉分式表达式
欧拉闪电猫
精致背后的野性 欧拉好猫GT
再谈欧拉不等式一个三角形式的类比
一个混合核Hilbert型积分不等式及其算子范数表达式
表达式转换及求值探析
浅析C语言运算符及表达式的教学误区
如何认识分式
1.3 分式
欧拉的疑惑
拆分在分式题中的应用