1、(2) 电算实践表明:一些特殊问题的计算中,需要程序参与计算的各个变量(含常数)都按双精度(16位有效数字)或高精度(任意指定精度)运行,而计算()和ln()的各种逼近算法公式15最多只能求得10至12位有效数字,这样即使应用双精度计算P(,x),最多也只能达到与()或ln()同样的精度,并且有时会加速计算过程的误差传播和积累,从而导致死循环、迭代过程不收敛、计算结果失真等不良的现象。要解决这些问题,可以将()和ln()算法公式中的系数扩充4,7,但文4中的系数较为冗长。由于应用式(1)解决实际问题的计算时,通常只能应用各种逼近算法的近似公式114计算其中的ln(),所以上述式(1)还不是精确
2、的解析表达式,不能使求解的精度和算法程序实现达到统一。 通过对文1中有关公式进行恒等变换,找到了满足上述要求的精确解析式,把它归纳为收敛的幂级数展式和连分式展式的数值计算,并设计成一标准的子程序,已大量地应用于实际工程的数值计算中,取得了满意的效果。 综上可知,提高式(1)的计算精度,简化编程手续,出路在于建立具有统一算法基础的()和ln()精确解析式,寻求分布函数算法新解,以取代现行()、ln()和分布函数算法公式的精度和算法程序的不统一性,这无疑会有理论价值和实用意义。1 数学原理1.1 特殊函数定义 根据文1,8,9,下列含参变量的定积分式分别称为函数、不完全函数、普利姆函数、分布函数、
3、余分布函数,它们是数学里的特殊函数,都为高等超越函数。前两个是最基本的特殊函数,第一个也被称为完全函数,第三个是另一不完全函数,并有如下恒等式()=(,x)+(,x)(3)P(,x)+Q(,x)=1(4)1.2 不完全函数的级数展式和连分式展式 根据文1中的式(14)与式(22),可得(,x)=xe-xS(,x)(5)(,x)=xe-xU(,x)(6)式中S(,x)和U(,x)分别为一无限幂级数展式和连分式展式,且有(7)(8)式(8)中右边式子的分母是一无限连分式的一种简记法1,8。2 ()和ln()的算法新解2.1 ln()的双精度算法 计算ln()的斯特林公式的渐近表达式为1,8,10(
4、9)为了使ln()的计算得到双精度的数值结果,将式(9)和号部分取其前10项,并加整理得(10)式(9)和式(10)中的A为1当7时当07时,取m=+7-,求出A后将m+1赋值于上述两式右边表达式中的变量,而左边ln()中的保持不变(仍为原值),这里的为取整符号。 B2n为第2n个伯努力数,Cn与斯特林级数的项数和伯努力数B2(n+1)有关,系数Cn的取值见文7中的表1.应用恒等式()=eln(),又可得到计算()的双精度算法公式。 文4中计算()和ln()的双精度算法,其算法过程和有关系数的取值都显冗长。2.2 ()和ln()新算法的精确解析式 式(9)是一渐近级数,而不是收敛级数,式(10
5、)也只能得到双精度数值结果的近似式,它们都不是精确解析式。要得到()和ln()新算法的精确解析式,可从恒等式(3)入手。 因为式(3)为一恒等式,所以对任意的x0都成立。通过大量的数值实验分析发现,当式(3)中的x取值+1时,并用式(7)和式(8)计算其中的级数展式和连分式展式,则具有很好的收敛性和数值稳定性,还能保证计算结果的可靠性。将x=+1代入式(3),并由式(5)和式(6),可得()=(,+1)+(,+1)=(+1)e-(+1)S(,+1)+U(,+1)=eln(+1)-(+1)S(,+1)+U(,+1)(11)对式(11)两边取自然对数,可得ln()=ln(+1)-(+1)+lnS(
6、,+1)+U(,+1)(12) 上述式(11)和(12)就是分别求解()与ln()的一种新算法的精确解析式,其中S(,+1)和U(,+1)的值是分别将x=+1代入式(7)和式(8)中的x计算而得,具体的计算表达式这里从略。3 分布函数算法新解 以上已导出求解()和ln()新算法的精确解析式,可通过式(11)和式(12)以及式(7)和式(8)的计算而得,将所求的ln()代入引言部分中的式(2),再代入式(1)后,就可得到计算分布函数P(,x)的一种新算法的精确解析式。 当较大时,则分布P(,x)渐近于标准化正态分布N(0,1)=(u);当+时,则分布P(,x)就转化为标准化正态分布(u).标准化
7、正态分布函数的表达式为(13)令x=u2/2,通过变量代换并加整理得(14) 从式(14)可看出:标准化正态分布函数(u)也可用分布函数的表达式表示,其式中P(0.5,0.5u2)就是取=0.5,x=0.5u2,代入分布函数P(,x)的表达式而得,sgn(u)为u的符号函数。 因此,当较大时,分布函数也可用式(14)作近似计算;对于+时的P(,x)和标准化正态分布函数(u)完全可以用式(14)作精确的计算;当为正整数时,P(,x)具有初等函数解析表达式1。有关分布函数截断误差的估计和收敛速度的论述可见文1中的4.5与4.6. 当很大时,则计算P(,x)的级数和连分式展式的收敛速度都变慢,且越大
8、,收敛速度就越慢,特别是在x+1时,收敛速度也就更慢,为了加快计算速度,可根据P(,x)(u)的关系,用式(14)计算P(,x)的近似值,其中u用以下两式计算15(15)或(16) 式(15)和式(16)根据文1113中的2分布与N(0,1)分布的近似关系,再转化成分布与N(0,1)的近似关系7,12,然后反推而得。在多数情况下,应用式(16)比用式(15)代入式(14)求P(,x)近似值的效果更佳,且越大,P(,x)就越接近于(u),在此种情况下求解P(,x)的计算表达式,也见文15。 综上可知,本文所介绍的5个特殊函数都可用新算法的解析式来表示,而计算P(,x)的关键是需要计算出当固定时,
9、不同x的式(7)和式(8)的级数展式和连分式展式的数值。因此,可以根据所用程序设计语言的特点,将式(7)和式(8)的算法设计成标准子程序(或过程),供解题时方便地调用。对于式(7)和式(8)两式的详细推导过程和算法设计可分别参考文1,25,8,13,14。4 数值实验分析与算法应用4.1 数值实验 应用所介绍的新算法对()、ln()、P(,x)等特殊函数进行数值计算,计算程序全按双精度运行,并将计算结果与文26中的全部算例和有关数表进行比较,部分结果见表1和表2.表1 ()与ln()数值计算比较计算方法=0.5=1.5()ln()真值1.7724538509055160.57236494292
10、470010.8862269254527580-0.1207822376352452文4双精度-0.1207822376352453本文双精度1.7724538509055170.57236494292470040.8862269254527582-0.1207822376352450新算法注:(0.5)和(1.5)的精确解析表达式是和,用新算法计算时,程序中的控制精度取绝对误差限10-18。表2 分布函数P(,x)数值计算比较=0.1,x=0.031623=1,x=5=11,x=16.58312=41,x=44.82187文献20.7420260.9932620.9404270.735970
11、双精度算法0.74202683854592240.99326205300091460.94042661904770250.7359709330145240.7420268385459223 注:文献2的控制精度取310-7 ,新算法的控制精度取10-17。 ln()双精度算法公式为有限项的近似解析式,ln()新算法公式为无限项的精确解析式。因此,可以肯定在计算精度相同的条件下,一般后者比前者的计算速度稍慢一些,分布函数P(,x)的计算也是如此。以下表3仅列出应用两种算法计算文6中P型分布曲线p(或Kp)值表计算时间的比较结果。表3 p(或Kp)值表两种算法的计算时间比较计算项目控制精度:10-9 ,10-610-16,10-13p值表000019000020000038000039Kp值表000037000113000114为P(,tp)的控制精度,为tp迭代计算的控制精度,关于p值的计算方法和本表的一些计算条件,可参考文5,7,本表的计算时间是用奔腾(300MHz)计算机重新计算时而统计的。4.2 数值结果分析
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1