Gauss–Legendre algorithm
Template:Short description The Gauss–Legendre algorithm is an algorithm to compute the digits of [[Pi|Template:Pi]]. It is notable for being rapidly convergent, with only 25 iterations producing 45 million correct digits of Template:Pi. However, it has some drawbacks (for example, it is computer memory-intensive) and therefore all record-breaking calculations for many years have used other methods, almost always the Chudnovsky algorithm. For details, see [[chronology of computation of π|Chronology of computation of Template:Pi]].
The method is based on the individual work of Carl Friedrich Gauss (1777–1855) and Adrien-Marie Legendre (1752–1833) combined with modern algorithms for multiplication and square roots. It repeatedly replaces two numbers by their arithmetic and geometric mean, in order to approximate their arithmetic-geometric mean.
The version presented below is also known as the Gauss–Euler, Brent–Salamin (or Salamin–Brent) algorithm;<ref>Brent, Richard, Old and New Algorithms for pi, Letters to the Editor, Notices of the AMS 60(1), p. 7</ref> it was independently discovered in 1975 by Richard Brent and Eugene Salamin. It was used to compute the first 206,158,430,000 decimal digits of Template:Pi on September 18 to 20, 1999, and the results were checked with Borwein's algorithm.
AlgorithmEdit
- Initial value setting: <math display="block">a_0 = 1\qquad b_0 = \frac{1}{\sqrt{2}}\qquad p_0 = 1\qquad t_0 = \frac{1}{4}.</math>
- Repeat the following instructions until the difference between <math>a_{n+1}</math> and <math>b_{n+1}</math> is within the desired accuracy: <math display="block"> \begin{align}
a_{n+1} & = \frac{a_n + b_n}{2}, \\
\\
b_{n+1} & = \sqrt{a_n b_n}, \\
\\
p_{n+1} & = 2p_n, \\
\\
t_{n+1} & = t_n - p_n(a_{n+1}-a_{n})^2. \\
\end{align}
</math>
- Template:Pi is then approximated as: <math display="block">\pi \approx \frac{(a_{n+1}+b_{n+1})^2}{4t_{n+1}}.</math>
The first three iterations give (approximations given up to and including the first incorrect digit):
- <math>3.140\dots</math>
- <math>3.14159264\dots</math>
- <math>3.1415926535897932382\dots</math>
- <math>3.14159265358979323846264338327950288419711\dots</math>
- <math>3.141592653589793238462643383279502884197169399375105820974944592307816406286208998625\dots</math>
The algorithm has quadratic convergence, which essentially means that the number of correct digits doubles with each iteration of the algorithm.
Mathematical backgroundEdit
Limits of the arithmetic–geometric meanEdit
The arithmetic–geometric mean of two numbers, a0 and b0, is found by calculating the limit of the sequences
- <math>\begin{align} a_{n+1} & = \frac{a_n+b_n}{2}, \\[6pt]
b_{n+1} & = \sqrt{a_n b_n}, \end{align}
</math>
which both converge to the same limit.
If <math>a_0=1</math> and <math>b_0=\cos\varphi</math> then the limit is <math display="inline">{\pi \over 2K(\sin\varphi)}</math> where <math>K(k)</math> is the complete elliptic integral of the first kind
- <math>K(k) = \int_0^{\pi/2} \frac{d\theta}{\sqrt{1-k^2 \sin^2\theta}}.</math>
If <math>c_0 = \sin\varphi</math>, <math>c_{i+1} = a_i - a_{i+1}</math>, then
- <math>\sum_{i=0}^\infty 2^{i-1} c_i^2 = 1 - {E(\sin\varphi)\over K(\sin\varphi)}</math>
where <math>E(k)</math> is the complete elliptic integral of the second kind:
- <math>E(k) = \int_0^{\pi/2}\sqrt {1-k^2 \sin^2\theta}\; d\theta</math>
Gauss knew of these two results.<ref name="brent">Template:Citation</ref> <ref name="salamin1">Salamin, Eugene, Computation of pi, Charles Stark Draper Laboratory ISS memo 74–19, 30 January 1974, Cambridge, Massachusetts</ref> <ref name="salamin2">Template:Citation</ref>
Legendre’s identityEdit
Legendre proved the following identity:
- <math display="block">K(\cos \theta) E(\sin \theta ) + K(\sin \theta ) E(\cos \theta) - K(\cos \theta) K(\sin \theta) = {\pi \over 2},</math>
for all <math>\theta</math>.<ref name="brent" />
Elementary proof with integral calculusEdit
The Gauss-Legendre algorithm can be proven to give results converging to π using only integral calculus. This is done here<ref>Template:Citation</ref> and here.<ref>Template:Citation</ref>
See alsoEdit
- [[Numerical approximations of π|Numerical approximations of Template:Pi]]