AGM函数近似值的估计

AGM函数近似值的估计
AGM是 Arithmetic-Geometric Mean的缩写,意为算术几何 平均数。其定义为,给定两个正实数a0和b0,我们定义一个迭代过程
ai+1=ai+bi2,   bi+1=aibi a_{i+1}= \frac {a_i+b_i} {2}, \ \ \ b_{i+1}= \sqrt {a_i b_i } ai+1=2ai+bi,   bi+1=aibi
前者求两个数的算术平均数,后者求2个数的几何平均数。这两个序列有同样的极限,其值表示为A(a0,b0),在AGM迭代过程中,序列收敛地非常快,一旦aia_iaibib_ibi大小相近时,每迭代一次,有效数字加倍。下表显示了这两个序列的收敛速度[1]

nangn
0246
11512
213.513.416407864998738178455042
313.45820393249936908922752113.458139030990984877207090
413.45817148174517698321730513.458171481706053858316334
513.45817148172561542076682013.458171481725615420766806

高斯发现,AGM函数可以用来求椭圆积分的值,
A(1,x)=π2F(x) A(1,x)= \frac{\pi} {2F(x)} A(1,x)=2F(x)π
F(x)为椭圆积分函数
∫0π2dθ1−(1−x2)sin⁡2θ \int_0^{\pi \over 2} \frac{d\theta} { \sqrt {1-(1-x^2 ) \sin^2 \theta}} 02π1(1x2)sin2θdθ
AGM函数不但可以快速的计算椭圆积分,也可用来计算对数函数ln(x)ln(x)ln(x). [2]给出一个椭圆积分F(x)F(x)F(x)和对数函数ln(s)ln(s)ln(s)的关系式
F(4s)=ln⁡(s)+4ln⁡(s)−4s2+36ln⁡(s)−42s4+1200ln⁡(s)−14803s6+O(1s8) F(\frac{4}{s})=\ln(s)+ \frac{4\ln(s)-4}{s^2}+\frac{36\ln(s)-42}{s^4} + \frac{1200 \ln(s)-1480}{3s^6} + O(\frac{1}{s^8}) F(s4)=ln(s)+s24ln(s)4+s436ln(s)42+3s61200ln(s)1480+O(s81)

如果s是足够的大,F(4/s)F(4/s)F(4/s)是非常好的ln(s)ln(s)ln(s)的近似值。为了计算ln(s)ln(s)ln(s)到p位2进制数。s必须大于 2p22^{ p \over 2 }22p 。故为了计算ln(x)ln(x)ln(x),我们首先需要找到一个实数s和整数m,使得s=x⋅2m>2p2 s=x \cdot2^m \gt 2^{p \over 2} s=x2m>22p [2]给出如下求ln(x)的公式
ln(x)=π2A(4s,1)−mln⁡(2)    (1) ln(x)=\frac{\pi}{2A({4 \over s},1)} -m \ln (2) \ \ \ \ (1)ln(x)=2A(s4,1)πmln(2)    (1)
我们将这个公式稍作一下变形 ln⁡(x)=18πsA(s4,1)−mln⁡(2)=12π⋅x⋅2m−2A(x⋅2m−2,1)−mln⁡(2)      (2) \ln(x)=\frac{{1 \over 8}\pi s}{A({s \over 4},1)} -m \ln (2)= \frac{{1 \over 2}\pi \cdot x \cdot 2^{m-2}}{A(x \cdot 2^{m-2},1)} - m \ln(2) \ \ \ \ \ \ (2) ln(x)=A(4s,1)81πsmln(2)=A(x2m2,1)21πx2m2mln(2)      (2)
反过来,利用这个公式,我们可以求AGM(1,y)的近似值,这里要求y>>1。在公式(2)中,我们取x为1,这样不但可以消去方程中的x,也可以消去ln(x),这样公式(2)变为
12π⋅2m−2A(2m−2,1)=mln⁡(2)     (3) \frac {{1 \over 2} \pi \cdot 2^{m-2}}{A(2^{m-2},1)}=m \ln(2) \ \ \ \ \ (3)A(2m2,1)21π2m2=mln(2)     (3)
y=2m−2y=2^{m-2}y=2m2, 则
a(y,1)=12π⋅y(log2(y)+2)ln⁡2=y12π/ln⁡(2)log2(y)+2≈y2.26618007091log2(y)+2        (4) a(y,1)= \frac { {1 \over 2} \pi \cdot y} {(log2(y)+2) \ln 2} = y \frac{{1 \over 2} \pi / \ln(2)}{log2(y)+2} \approx y \frac{2.26618007091}{log2(y)+2} \ \ \ \ \ \ \ \ (4) a(y,1)=(log2(y)+2)ln221πy=ylog2(y)+221π/ln(2)ylog2(y)+22.26618007091        (4)

下表是y取某些值时,使用公式(4)得到的近似值和真实值的对比。我们可以发现,当y>10,这个近似公式可以精确到3位以上有效数字。

yA(y,1)公式(4)
104.250407094934.25819370444
2^46.038658340426.04314685577
2^618.128533508218.1294405673
2^858.014020435658.0142098154
2^168250.909839978250.90984041
2^241462315.097871462315.09787
2^32286269685.042286269685.042

参考文献
[1] agm(24, 6) at WolframAlpha. http://www.wolframalpha.com/input/?i=agm%2824%2C+6%29
[2] Muller J M. Elementary Functions: Algorithms and Implementation[M]. Springer Science+Business Media New York, 2016,130-131

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值