高斯-勒让德算法 是一种用于计算圆周率 (π)的算法 。它以迅速收敛 著称,只需25次迭代 即可产生π的4500万位正确数字。不过,它的缺点是内存密集,因此有时它不如梅钦类公式 使用广泛。
该方法基于德国数学家卡尔·弗里德里希·高斯 (Johann Carl Friedrich Gauß ,1777–1855)和法国数学家阿德里安-马里·勒让德 (Adrien-Marie Legendre ,1752–1833)的个人成果与乘法和平方根 运算之现代算法的结合。该算法反复替换两个数值的算术平均数 和几何平均数 ,以接近它们的算术-几何平均数 。
下文的版本也被称为高斯-欧拉,布伦特-萨拉明(或萨拉明-布伦特)算法 [1] ;它于1975年被理查德·布伦特 和尤金·萨拉明 独立发现。日本筑波大学于2009年8月17日宣布利用此算法计算出π小数点后2,576,980,370,000位数字,计算结果用波温算法 检验。[2]
知名的电脑性能测试程序Super PI 也使用此算法。
算法
设置初始值:
a
0
=
1
b
0
=
1
2
t
0
=
1
4
p
0
=
1.
{\displaystyle a_{0}=1\qquad b_{0}={\frac {1}{\sqrt {2}}}\qquad t_{0}={\frac {1}{4}}\qquad p_{0}=1.\!}
反复执行以下步骤直到
a
n
{\displaystyle a_{n}\!}
与
b
n
{\displaystyle b_{n}\!}
之间的误差到达所需精度:
a
n
+
1
=
a
n
+
b
n
2
,
b
n
+
1
=
a
n
b
n
,
t
n
+
1
=
t
n
−
p
n
(
a
n
−
a
n
+
1
)
2
,
p
n
+
1
=
2
p
n
.
{\displaystyle {\begin{aligned}a_{n+1}&={\frac {a_{n}+b_{n}}{2}},\\b_{n+1}&={\sqrt {a_{n}b_{n}}},\\t_{n+1}&=t_{n}-p_{n}(a_{n}-a_{n+1})^{2},\\p_{n+1}&=2p_{n}.\end{aligned}}}
则π的近似值为:
π
≈
(
a
n
+
1
+
b
n
+
1
)
2
4
t
n
+
1
.
{\displaystyle \pi \approx {\frac {(a_{n+1}+b_{n+1})^{2}}{4t_{n+1}}}.\!}
下面给出前三个迭代结果(近似值精确到第一个错误的位数):
3.140
…
{\displaystyle 3.140\dots \!}
3.14159264
…
{\displaystyle 3.14159264\dots \!}
3.1415926535897932382
…
{\displaystyle 3.1415926535897932382\dots \!}
该算法具有二阶收敛性,本质上说就是算法每执行一步正确位数就会加倍。
数学背景
算术-几何平均数的极限
a0 和b0 两个数的算术-几何平均数 ,是通过计算它们的序列极限得到的:
a
n
+
1
=
a
n
+
b
n
2
,
b
n
+
1
=
a
n
b
n
,
{\displaystyle {\begin{aligned}a_{n+1}&={\frac {a_{n}+b_{n}}{2}},\\b_{n+1}&={\sqrt {a_{n}b_{n}}},\end{aligned}}}
两者汇聚于同一极限。
若
a
0
=
1
{\displaystyle a_{0}=1\!}
且
b
0
=
cos
φ
{\displaystyle b_{0}=\cos \varphi \!}
,则极限为
π
2
K
(
sin
φ
)
{\displaystyle {\pi \over 2K(\sin \varphi )}\!}
,其中
K
(
k
)
{\displaystyle K(k)\!}
为第一类完全椭圆积分 :
K
(
k
)
=
∫
0
π
2
d
θ
1
−
k
2
sin
2
θ
.
{\displaystyle K(k)=\int _{0}^{\pi \over 2}{\frac {d\theta }{\sqrt {1-k^{2}\sin ^{2}\theta }}}.\!}
若
c
0
=
sin
φ
{\displaystyle c_{0}=\sin \varphi \!}
,
c
i
+
1
=
a
i
−
a
i
+
1
{\displaystyle c_{i+1}=a_{i}-a_{i+1}\!}
,则
∑
i
=
0
∞
2
i
−
1
c
i
2
=
1
−
E
(
sin
φ
)
K
(
sin
φ
)
{\displaystyle \sum _{i=0}^{\infty }2^{i-1}c_{i}^{2}=1-{E(\sin \varphi ) \over K(\sin \varphi )}\!}
其中
E
(
k
)
{\displaystyle E(k)\!}
为第二类完全椭圆积分 :
E
(
k
)
=
∫
0
π
2
1
−
k
2
sin
2
θ
d
θ
.
{\displaystyle E(k)=\int _{0}^{\pi \over 2}{\sqrt {1-k^{2}\sin ^{2}\theta }}\,d\theta .\!}
高斯知道以上这两个结果。[3] [4] [5]
勒让德恒等式
对于满足
φ
+
θ
=
1
2
π
{\displaystyle \varphi +\theta ={1 \over 2}\pi \!}
的
φ
{\displaystyle \varphi \!}
与
θ
{\displaystyle \theta \!}
,勒让德证明了以下恒等式:
K
(
sin
φ
)
E
(
sin
θ
)
+
K
(
sin
θ
)
E
(
sin
φ
)
−
K
(
sin
φ
)
K
(
sin
θ
)
=
1
2
π
.
{\displaystyle K(\sin \varphi )E(\sin \theta )+K(\sin \theta )E(\sin \varphi )-K(\sin \varphi )K(\sin \theta )={1 \over 2}\pi \!.}
[3] 高斯-欧拉法
φ
=
θ
=
π
4
{\displaystyle \varphi =\theta ={\pi \over 4}\!}
的值可以代入勒让德恒等式,且K、E的近似值可通过
a
0
=
1
{\displaystyle a_{0}=1\!}
与
b
0
=
sin
π
4
=
1
2
{\displaystyle b_{0}=\sin {\pi \over 4}={\frac {1}{\sqrt {2}}}\!}
的算术-几何平均数的序列项得到。[6]
参考文献
^ Brent, Richard , Old and New Algorithms for pi , Letters to the Editor, Notices of the AMS 60(1), p. 7
^ [円周率計算桁数世界記録樹立について (PDF) . [2009-11-29 ] . (原始内容存档 (PDF) 于2020-09-25). 円周率計算桁数世界記録樹立について ]
^ 3.0 3.1 Brent, Richard , Traub, J F , 编, Multiple-precision zero-finding methods and the complexity of elementary function evaluation , Analytic Computational Complexity (New York: Academic Press), 1975: 151–176 [8 September 2007] , (原始内容存档 于2008-07-23)
^ Salamin, Eugene , Computation of pi , Charles Stark Draper Laboratory ISS memo 74–19, 30 January, 1974, Cambridge, Massachusetts
^ Salamin, Eugene , Computation of pi Using Arithmetic-Geometric Mean, Mathematics of Computation 30 (135), 1976, 30 (135): 565–570, ISSN 0025-5718
^ Adlaj, Semjon, An eloquent formula for the perimeter of an ellipse , Notices of the AMS 59(8), p. 1096