Jump to content

Gauss–Legendre algorithm

From Niidae Wiki
Revision as of 18:57, 23 December 2024 by imported>Gareth McCaughan (Algorithm: oops, off by one in previous edit)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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.

Algorithm

[edit]
  1. 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>
  2. 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>

  1. 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 background

[edit]

Limits of the arithmetic–geometric mean

[edit]

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 identity

[edit]

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 calculus

[edit]

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 also

[edit]
  • [[Numerical approximations of π|Numerical approximations of Template:Pi]]

References

[edit]

Template:Reflist