AGM是 Arithmetic-Geometric Mean的缩写,意为算术几何平均数。其定义为,给定两个正实数a0和b0,我们定义一个迭代过程
\( a_{i+1}= \frac {a_i+b_i} {2}, \qquad b_{i+1}= \sqrt {a_i \cdot b_i } \)
前者求两个数的算术平均数,后者求2个数的几何平均数。这两个序列有同样的极限,其值表示为A(a0,b0),在AGM迭代过程中,序列收敛地非常快,一旦\(a_i\) 和\(b_i\)大小相近时,每迭代一次,有效数字加倍。下表显示了这两个序列的收敛速度[1]
n | \(a_n\) | \(b_n\) |
0 | 24 | 6 |
1 | 15 | 12 |
2 | 13.5 | 13.41640786499873817845 |
3 | 13.45820393249936908922 | 13.45813903099098487720 |
4 | 13.45817148174517698321 | 13.45817148170605385831 |
5 | 13.45817148172561542076 | 13.458171481725615420761 |
高斯发现,AGM函数可以用来求椭圆积分的值
\( A(1,x)= \frac{\pi} {2F(x)} \)
F(x)为椭圆积分函数
\( \displaystyle \int_0^{\pi \over 2} \frac{d\theta} { \sqrt {1-(1-x^2 ) \sin^2 \theta)}} ) \)
AGM函数不但可以快速的计算椭圆积分,也可用来计算对数函数ln(x).
[2]给出一个椭圆积分F(x)和对数函数ln(s)的关系式
\(
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}) \)
如果s是足够的大,F(4/s)是非常好的ln(s)的近似值。为了计算ln(s)到p位2进制数。s必须大于\(2^{p \over 2 } \)。故为了计算ln(x),我们首先需要找到一个实数s和整数m,使得
\( s=x \cdot2^m \gt 2^{p \over 2} \)
[2]给出如下求ln(x)的公式
\( \displaystyle ln(x)=\frac{\pi}{2A({4 \over s},1)} -m \ln (2) \qquad (1)\)
我们将这个公式稍作一下变形
\( \displaystyle \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)
\qquad (2) \)
反过来,利用这个公式,我们可以求AGM(1,y)的近似值,这里要求y>>1。在公式(2)中,我们取x为1,这样不但可以消去方程中的x,也可以消去ln(x),这样公式(2)变为
\( \displaystyle \frac {{1 \over 2} \pi \cdot 2^{m-2}}{A(2^{m-2},1)}=m \ln(2) \quad (3)\)
令 \(y=2^{m-2}\), 则
\( \displaystyle 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} \quad (4) \)
下表是y取某些值时,使用公式(4)得到的近似值和真实值的对比。我们可以发现,当y>10,这个近似公式可以精确到3位以上有效数字。
y | A(y,1) | 公式(4) |
10 | 4.25040709493 | 4.25819370444 |
\(2^4\) | 6.03865834042 | 6.04314685577 |
\(2^6\) | 18.1285335082 | 18.1294405673 |
\(2^8\) | 58.0140204356 | 58.0142098154 |
\(2^{16}\) | 8250.90983997 | 8250.90984041 |
\(2^{24}\) | 1462315.09787 | 1462315.09787 |
\(2^{32}\) | 286269685.042 | 286269685.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