高斯-勒让德算法

高斯-勒让德算法是一种用于计算圆周率（π）的算法。它以迅速收敛著称，只需25次迭代即可产生π的4500万位正确数字。不过，它的缺点是内存密集，因此有时它不如梅钦类公式使用广泛。 该方法基于德國數學家卡尔·弗里德里希·高斯（Johann Carl Friedrich Gauß，1777–1855）和法國數學家阿德里安-马里·勒让德（Adrien-Marie Legendre，1752–1833）的个人成果与乘法和平方根运算之现代算法的结合。该算法反复替换两个数值的算术平均数和几何平均数，以接近它们的算术-几何平均数。 下文的版本也被称为高斯-欧拉，布伦特-萨拉明（或萨拉明-布伦特）算法；它于1975年被理查德·布伦特和尤金·萨拉明独立发现。日本筑波大学于2009年8月17日宣布利用此算法计算出π小数点后2,576,980,370,000位数字，计算结果用波温算法检验。 知名的电脑性能测试程序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 .\!} 高斯知道以上这两个结果。 对于满足 φ + θ = 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 \!.} φ = θ = π 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}}}\!} 的算术-几何平均数的序列项得到。 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）.  円周率計算桁数世界記録樹立について] 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  引文格式1维护：日期与年 (link) Adlaj, Semjon, An eloquent formula for the perimeter of an ellipse, Notices of the AMS 59(8), p. 1096