Bailey-Borwein-Plouffe-Formel
In der Mathematik bezeichnet die Bailey-Borwein-Plouffe-Formel (BBP-Formel) eine 1995 vom kanadischen Mathematiker Simon Plouffe entdeckte Summenformel zur Berechnung der Kreiszahl <math>\pi</math>.
Die von Plouffe entdeckte Reihe für <math>\pi</math> ist:
- <math>\pi = \sum_{k = 0}^{\infty} \frac{1}{16^k}
\left( \frac{4}{8k + 1} - \frac{2}{8k + 4} - \frac{1}{8k + 5} - \frac{1}{8k + 6}\right)</math>
Die Formel ist nach den Autoren David H. Bailey, Peter Borwein und Simon Plouffe des Zeitschriftenartikels benannt, in dem sie erstmals veröffentlicht wurde.<ref>Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung2</ref> Das Erstaunliche an dieser speziellen Formel ist, dass man daraus mit ein wenig Umstellen einen Algorithmus ableiten kann, der eine beliebige Ziffer der Darstellung von <math>\pi</math> im Hexadezimalsystem ohne Berechnung der vorherigen Ziffern ermittelt (Ziffer-Extraktion).
Polylogarithmische Konstante
Seit Plouffes Entdeckung wurden viele ähnliche Formeln der Gestalt
- <math>\alpha = \sum_{k = 0}^{\infty} \frac{p(k)}{b^kq(k)}</math>
entdeckt, die sich zu anderen fundamentalen mathematischen Konstanten (in der Darstellung zur Basis <math>b</math>) aufsummieren, wie z. B. zu den polylogarithmischen Konstanten <math>\pi^2, \zeta(3)</math> und zur Catalanschen Konstanten <math>G</math>. Man bezeichnet diese Formeln als BBP-Reihen zur Basis <math>b</math>. Die Frage, zu welchen mathematischen Konstanten BBP-Reihen existieren, ist bislang unbeantwortet.
Zu folgenden Primzahlen <math>p</math> existiert für <math>\log\,p</math> eine BBP-Reihe:
- 2, 3, 5, 7, 11, 13, 17, 19, 29, 31, 37, 41, 43, 61, 73, 109, 113, 127, 151, 241, 257, 331, 337, 397, 683, 1321, 1429, 1613, 2113, 2731, 5419, 8191, 14449, 26317, 38737, 43691, 61681, 65537, 87211, 131071, 174763, 246241, 262657, 268501, 279073, 312709, …<ref>Folge A104885 in OEIS</ref>
23, 47, 53 und 59 sind die kleinsten Primzahlen, die in dieser Liste fehlen. Es ist jedoch unbewiesen, ob zu <math>\log 23</math> tatsächlich keine BBP-Reihe existiert.
Vermutlich gibt es für Quadratwurzeln <math>\sqrt2, \sqrt3, \sqrt5, \dotsc</math>, die Eulersche Zahl <math>e</math> und die Eulersche Konstante <math>\gamma</math> keine BBP-Reihe, da das (vermutlich) keine polylogarithmischen Konstanten sind.
BBP-Algorithmus
An einem Beispiel soll gezeigt werden, wie man die Ziffern einer Zahlendarstellung erhält. So bekommt man z. B. die 4. dezimale Nachkommastelle von <math>\pi</math> durch
|
<math>10^3\pi = 3141{,}5926\ldots</math> |
|
<math>10^3\pi\,\bmod\, 1 = 0{,}5926\ldots</math> |
|
<math>(10^3\pi\,\bmod\, 1)\cdot 10 = 5{,}926\ldots</math> |
|
<math>\lfloor(10^3\pi\,\bmod\, 1)\cdot 10\rfloor = 5</math> |
wobei zur Notation der Modulo-Operator und die Gauß-Klammer verwendet werden.
Analog ergibt sich die <math>n</math>-te Stelle der Hexadezimaldarstellung <math>\sum_{k = 0}^{\infty} \frac {z_k}{16^k}</math> von <math>\pi</math> zu
- <math>z_n=\lfloor(16^{n-1}\pi\,\bmod\, 1) \cdot 16\rfloor.</math>
Multiplikation der Plouffe-Formel mit <math>16^{n-1}</math> ergibt nach Unterteilung in vier Terme
- <math>16^{n-1}\pi=4\sigma_1-2\sigma_4-\sigma_5-\sigma_6\quad\text{ mit } \quad\sigma_t=\sum_{k=0}^{\infty}\frac{16^{n-k-1}}{8k+t}.</math>
Da im Ausdruck für <math>z_n</math> nur der gebrochene Teil von <math>16^{n-1}\pi</math> eingeht, kann man bei der Berechnung der vier <math>\sigma_t</math> einen ganzzahligen Teil von den ersten <math>n</math> Summanden entfernen,<ref><math display="inline">\frac{16^{n-1}}{t}...\frac{16^{0}}{8(n-1)+t},\quad n\gg1</math></ref> um die Größe der Zwischenergebnisse zu begrenzen. Das erreicht man durch Anwendung des Operators <math>\bmod(8k+t)</math> auf den Zähler. Die restlichen Summanden mit <math display="inline">k\geq n\gg1</math> haben keinen ganzzahligen Teil.<ref><math display="inline">\frac{16^{-1}}{8n+t}...\frac{16^{-n-1}}{16n+t},</math> usw.</ref>
Damit erhält man (unter Verwendung des Zeichens <math>\equiv</math> für Kongruenz):
- <math>\sigma_t \; \equiv \;
\sigma'_t =
\sum_{k=0}^{n-1}\frac{16^{n-k-1}\bmod(8k+t)}{8k+t} +
\sum_{k=n}^{\infty} \frac{16^{n-k-1}}{8k+t} \pmod{1}</math>.
Die diskrete Exponentialfunktion im Zähler der ersten Summe kann man mit der binären Exponentiation effizient berechnen, wobei die Zwischenergebnisse kleiner als <math>64 n^2</math> bleiben. Damit gilt
- <math>16^{n-1}\pi \equiv 4\sigma'_1-2\sigma'_4-\sigma'_5-\sigma'_6 \pmod{1}</math>.
Da die <math>\sigma'_t</math> und ihre Linearkombination noch einen ganzzahligen Teil enthalten können, muss dieser noch entfernt werden. Somit ist
- <math>z_n = \lfloor( (4\sigma'_1-2\sigma'_4-\sigma'_5-\sigma'_6) \,\bmod\, 1) \cdot 16\rfloor.</math>
Vorteile des BBP-Algorithmus
Diese Methode, nur die gerade benötigte Stelle von <math>\pi</math> zu extrahieren, erspart den Speicherplatz für die vorherigen Stellen. Weiter kann man einfachere Datentypen für die Speicherung der gewonnenen Stellen verwenden, die wiederum auch kürzere Zugriffszeiten haben, was den Algorithmus letztlich schneller macht. Daher hat diese Methode in vielen Anwendungen alle vorherigen Algorithmen zur Berechnung von <math>\pi</math> (die größere und komplexere Datentypen benötigten) überflüssig gemacht.
Bellard-Formel
Fabrice Bellard entdeckte diese ähnliche Formel 1997. Sie ist etwa 43 % schneller als BBP:
- <math>
\pi = \sum_{k=0}^\infty \frac{(-1)^k}{2^{10k+6}} \, \left(\frac{2^8}{10k+1} -\frac{2^6}{10k+3} -\frac{2^5}{4k+1} -\frac{2^2}{10k+5} -\frac{2^2}{10k+7} +\frac1{10k+9} -\frac1{4k+3} \right) </math>.
Literatur
- Marc Chamberland: Binary BBP-Formulae for Logarithms and Generalized Gaussian-Mersenne Primes. Journal of Integer Sequences, Vol. 6, 2003, nur digital (PDF; 175 kB).
- David H. Bailey: A Compendium of BBP-Type Formulas for Mathematical Constants. 2004, online (PDF; 0,3 MB).
- Barry Cipra: Digits of Pi. In: D. Mackenzie, B. Cipra (Hrsg.): What’s Happening in the Mathematical Sciences. Band 6, S. 29–39. Am.Math.Soc. 2006.
Einzelnachweise
<references />
Weblinks
- David H Bailey Persönliche Webseite
- <templatestyles src="Webarchiv/styles.css" />Eine ausführliche Anleitung mit konkretem Beispiel ( vom 10. April 2014 im Internet Archive).
- <templatestyles src="Webarchiv/styles.css" />Implementierung in Python ( vom 16. November 2015 im Internet Archive).