于锦海, 曾艳艳, 朱永超, 孟祥超. 2015. 超高阶次Legendre函数的跨阶数递推算法. 地球物理学报, 58(3): 748-755, doi: 10.6038/cjg20150305
YU Jin-Hai, ZENG Yan-Yan, ZHU Yong-Chao, MENG Xiang-Chao. 2015. A recursion arithmetic formula for Legendre functions of ultra-high degree and order on every other degree.
Chinese J. Geophys
. (in Chinese), 58(3): 748-755, doi: 10.6038/cjg20150305
投稿时间:2014-04-28 最后修改时间: 2014-07-09 .
基金项目:国家高技术研究发展计划(863计划)项目(2013AA122502-2),国家自然科学基金项目(41274034)与CAS/CAFEA国际创新团队项目(KZZD-EW-TZ-19)联合资助.
摘要
:本文引入了Legendre函数的跨阶数递推算法,并利用该算法在双精度数范围内计算了按间隔为1°余纬从1°变化至89°对应的直到完整的20000阶次的归一化连带Legendre函数的值.为验证计算精度,通过多种途径对该算法的计算结果进行检验,结果表明:该算法算得的每个阶次连带Legendre函数的值至少具有10
-10
这样的绝对精度.此外还对该算法的计算用时进行了统计,结果为该算法的计算用时大约是Legendre函数计算中常用的按阶数递推算法用时的1.6倍.
关键词
:
Legendre函数
A recursion arithmetic formula for Legendre functions of ultra-high degree and order on every other degree
YU Jin-Hai
1,2
, ZENG Yan-Yan
1,2
, ZHU Yong-Chao
1,2
, MENG Xiang-Chao
1,2
1. Key Laboratory of Computational Geodynamics, Chinese Academy of Sciences, Beijing 100049, China;
2. College of Earth Science, University of Chinese Academy of Sciences, Beijing 100049, China
Abstract
: The most popular arithmetic for Legendre functions in the study of the gravity field is the increasing degree recursion method (IDR). Although IDR has a simple expression in mathematics, it is not suitable to compute Legendre functions of ultra-high degree and order. For example, when degree reaches 1800, IDR cannot be used to compute Legendre functions because of under-flow in the double floating-point range. Hence, some modified versions for IDR are discussed. A typical modification is to extend the double floating-point range, and the result is that the run-time in computation increases rapidly too. In order to solve the problem in computing Legendre functions of ultra-high degree and order, a recursion arithmetic approach on every other degree for Legendre functions is presented in this paper. Our aim is to illustrate that this approach can be not only used to compute Legendre functions, but the run-time of computation is also saved.
The main method is computation, that is, the values of Legendre functions are computed based on the recursion formulas of Legendre functions on every other degree, and then the computation accuracies and the run-time are assessed.
The values of the fully normalized associated Legendre functions up to complete degree and order 20000 are computed from colatitude 1° to 89° with 1° interval in the double floating-point range. The computation accuracies are estimated according to the properties of Legendre functions. From our computation results, it can be acclaimed that the computation accuracies of Legendre functions up to complete degree and order 20000 can reach 10
-10
at least if the recursion arithmetic on every other degree is applied. The run-time for computation is listed. From the statistical results, the run-time of the arithmetic in this work is approximately 1.6 times that of IDR.
The computation of Legendre functions of ultra-high degree and order plays an important role in refining the gravity field. The recursion arithmetic on every other degree is suitable to compute Legendre functions of ultra-high degree and order. The arithmetic has two main advantages: it has enough accuracies and its run-time is also acceptable compared with IDR. In all, the recursion arithmetic on every other degree is an efficient approach to compute Legendre functions of ultra-high degree and order.
Key words
:
Legendre function
Recursion arithmetic
Double floating-point
超高阶次Legendre函数的计算是地球重力场以及相关领域中的重要研究课题,国内外有许多学 者(
Colombo,1981
;
Fantino and Casotto, 2009
;
Fukushima,2012
;
Gleason,1985
;
Holmes and Featherstone, 2002
;
Jekeli
et al
., 2007
;
Wenzel,1998
;
Wittwer
et al
., 2008
;
刘缵武等,2011
;
彭富清和夏哲仁,2004
;
王建国等,2009
;
吴星和刘雁雨,2006
;
张传定等,2004
)都讨论过超高阶次Legendre函数的计算问题.从目前的研究成果来看,计算Legendre函数的主要途径仍然是利用Legendre函数的性质对其进行递推计算.若按使用的Legendre函数的递推公式来分类的话,则递推方法大致分为三类(
刘缵武等,2011
;
王建国等,2009
;
吴星和刘雁雨,2006
):第一是按阶(次)数递推方法,该方法的优点是计算方便和用时较少,但缺点是该方法会导致计算数据向下溢出,例如在双精度数范围内大致在计算至1900阶连带Legendre函数时就会产生数据向下溢出现象.第二是Belikov递推方法.第三是跨阶数递推方法.就这三种递推算法而言,
吴星和刘雁雨(2006)
、王建强等(2009)都曾进行过分析,特别是王建强等(2009)对阶数3060时计算了
P
3060,
m
(0.1)与
P
3060,
m
(0.9)的值,得出了跨阶数递推方法更适合用于超高阶次Legendre函数计算的结论.然而在目前对超高阶次Legendre函数计算的研究中大多算法仍然仅限于按阶(次)数递推方法的研究上.
事实上,目前关于超高阶次Legendre函数计算的研究主要还是集中在按阶(次)数递推的改进方法上,而改进的途径体现在两个方面:第一是在递推过程中分离出奇异因子
sin
m
θ,从而在双精度数范围内增加递推计算Legendre函数的阶次数,例如
Holmes和Featherstone(2002)
利用该方法将Legendre函数计算至2700完整阶次;第二是采用扩充双精度数域的方法(
Fukushima,2012
;
Jekeli
et al
., 2007
;
Wittwer
et al
., 2008
),例如可以将双精度数的存储空间扩充四倍从而使得数据下溢向后 推延,但这样做的结果是计算用时也相应地增大(大约增加50倍用时以上).这里要特别指出,
Fukushima(2012)
引入了X-数域的方法,该方法是将用两个双精度数来表示一个X-数,其中第一个双精度数表示某个双精度数的有效数字,而第二个双精度数则表示该数的指数,这样就构成了一个X-数,显然X-数表示数值的范围就扩大了很多,而且计算用时也比直接将双精度数扩充四倍的方法要节约许多.
此外还有许多关于Legendre函数性质的研究工作.例如
Jekeli等(2007)
证明了连带Legendre函数
P
n,m
(
cos
θ)当m≥n
sin
θ+μ时可以近似地等于零,这里μ是一个正整数(例如:
μ
=15),这样的简化并不会影响球谐级数的计算结果,从而就极大地减少了计算Legendre函数的用时.又如
Cheong等(2012)
、
Sneeuw和Bun(1996)
、
Swarztrauber(1993)
还研究了连带Legendre函数的Fourier展 开式,特别是
Cheong等(2012)
给出了连带Legendre函数的 Fourier展开系数的算法,为Legendre函数的计算提供另一种途径.除了递推算法外,
Yu等(2012)
还研究了Legendre函数的积分表达式,给出了连带Legendre函数一种积分表达式,其中被积函数是有界的,这样可以在双精度数的范围内对任意阶次的Legendre函数进行计算.
以上简要地概括了关于超高阶次Legendre函数计算的一些主要结果,但这些结果存在着一些缺陷:例如,若采用扩充双精度数域的方法,则计算用时增加很多;若仍以双精度数作为基准,则计算过程中难以评价是否会因数据溢出而产生的发散等现象.本文的目的就是要基于跨阶数递推方法来讨论在双精度数范围内超高阶次连带Legendre函数的计算问题.在本文计算Legendre函数时将阶数取为20000,对
P
n,m
(
cos
θ)以1°为间隔从
θ
=1°至
θ
=89°进行了计算,并通过多种途径对计算结果的准确性进行了验证.
2 Legendre函数的计算公式
2.1 关于Legendre函数的记号
记
P
n
(x)是
n
阶Legendre多项式,即:
并记
P
n,m
(x)是
n
阶
m
次连带Legendre函数,即:
从公式(1)和(2)易知,
对
P
n,m
(x)进行归一化处理,则有
这里
P
n,m
(x)就是归一化的
n阶m
次连带Legendre 函数,以后简称为Legendre函数.由于本文只涉及Legendre函数的计算,而不讨论球谐函数的计算,故对
P
n,m
(x)归一化处理时并没有对m=0和m≠0进行区分.
因为在球谐级数计算中总有x=
cos
θ,这里θ∈[0,
π
]是归化余纬,所以使用符号时不再区分
P
n,m
(x)和
P
n,m
(
cos
θ),并记成
P
n,m
.又因为连带Legendre函数
P
n,m
(x)在区间[-1,+1]中当n-m是偶数时是偶函数,当n-m是奇数时是奇函数,因此下面计算时仅需讨论归化余纬θ∈[0,
π
/2]的情况.
2.2 按阶数递推算法
关于
P
n,m
的按阶数递推算法的公式为(
Fantino and Casotto, 2009
;
Fukushima,2012
;
Holmes and Featherstone, 2002
;
Jekeli
et al
., 2007
)
事实上,按阶数递推公式(5)是计算Legendre函数的基本算法,该算法在θ接近90°(即:赤道附近)具有很好的收敛性.
2.3 跨阶数递推公式
引入记号:当m>n时
则对m≥2,便有公式(
Swarztrauber,1993
;
Cheong
et al
., 2012
;
张传定等,2004
)
由于公式(8)是按跨阶数给出的,所以公式(8)被称为Legendre函数的跨阶数递推公式.
2.4 当m=0和m=1时
P
n,m
的计算
因为公式(8)仅对m≥2成立,所以还需讨论m=0和m=1时
P
n,m
的计算方法.事实上,此时
P
n
,0
和
P
n
,1
可由公式(5)给出,即:
2.5 使用跨阶数递推方法计算
P
n,m
的步骤
第一步,引入初始值
,由此利用公式(12)与(13)便可计算
P
n
,0
与
P
n
,1
;第二步,再利用初始值
P
0,0
,
P
1,0
,
P
0,1
,
P
1,1
以及
P
n
,0
与
P
n
,1
,按公式(8)便可递推计算当n≥2和m≥2时
P
n,m
的值.称上述递推计算
P
n,m
的方法为跨阶数递推算法.
3 数值计算与精度分析
利用上述给出的跨阶数递推算法可以对
P
n,m
(
cos
θ)在双精度数范围内进行计算,本文对
P
n,m
(
cos
θ)的值计算至完整20000阶次,其中余纬以1°为间隔从
θ
=1°变换至
θ
=89°.为了与
P
n,m
的理论值进行区分,下面使用
P
n,m
(
r
)
表示利用跨阶数递推算法计算得到的
P
n,m
的值.为了分析
P
n,m
(
r
)
的计算精度,下面将用几种不同的检验途径.
例1 首先引入关于
P
n,m
的恒等式如下
因为
P
n,m
(
r
)
是通过递推算法来计算的,所以仅需对最 后阶数的结果进行评估,即:η(θ)值的大小代 表了
P
n,m
(
r
)
(
cos
θ)的计算精度,显然η(θ)的值越小,
P
n,m
(
r
)
(
cos
θ)的计算精度就越高.文中计算了η(θ)的值,其分布由
图 1
给出.从
图 1
可知,当θ在1°与89°之间变化时η(θ)的值均小于10
-12
.