Die Bailey-Borwein-Plouffe-Formel - benannt nach deren Entdecker David H. Bailey, Peter Borwein und Simon Plouffe:

BBP - Formel

Die Herleitung der Formel:
Für Firefox und Safari-Browser --->    Beweis der BBP-Formel    (mit MATHML)
Für alle anderen Browser ohne MATHML --->    Beweis der BBP-Formel     (mit 3 jpg-Bildern)

Das Besondere an dieser Formel ist die Möglichkeit, Pi-Nachkommastellen ab einer n. Stelle im Hexadezimalsystem zu bestimmen - ohne die höherwertigen Nachkommastellen zu kennen. Die obige Formel passt nämlich vorzüglich zum Hexadezimalsystem (Sechzehnersystem) !

Erklärung dieses Sachverhaltes (hier mit der Berechnung der Dezimalstellen noch nacheinander!):
i Bedeutung im Hexadezimalsystem jew. Klammerwert (1/(16^i)) · (4/(8i+1)-2/...) + Rest Ganzzahl als hexadez. Ziffer Rest*16 für nächste Stelle
0 Vorkommaanteil, weil 1/(16^0) den Wert 1 ergibt ... also die Einer 3,13333333333333 3 2,13333333333333
1 zur 1. Nachkommastelle: 1/(16^1) 0,129426129426129 + 2,13333333333333 2 4,2041514041514
2 zur 2. Nachkommastelle: 1/(16^2) 0,0422205245734657 + 4,2041514041514 4 3,9419508595978
3 zur 3. Nachkommastelle: 1/(16^3) 0,0207553366174056 + 3,9419508595978 3 15,4032991394432
4 zur 4. Nachkommastelle: 1/(16^4) 0,0123137491558544 + 15,4032991394432 F 6,64980621758531
5 zur 5. Nachkommastelle: 1/(16^5) 0,0081450774982058 + 6,64980621758531 6 10,5272207213362
Aus der Literatur entnimmt man für pi in hexadez. Darstellung: 3,243F6A8885A...

Also ist obige Rechnung ja in Ordnung - und wir könnten weitermachen: Wenn nicht die Rechnerungenauigkeit uns schon sehr bald einen Strich durch die Rechnung machen würde: Die Werte werden schnell falsch weil der PC nach ca. 20 Stellen rundet und nur eine begrenzte Dezimalstellenzahl verwalten kann.


ABER!

Wir überlegen nun, wie man von pi zum Beispiel die 300. Stelle nach dem Komma berechnen kann:
Dazu multiplizieren wir die Bailey-Borwein-Plouffe-Formel auf beiden Seiten mit 16^300 - das heißt wir verschieben das Komma in der pi-Hexadezimalzahl um 300 Stellen nach rechts - und interessieren uns dann nur(!) für die Stellen nach dem Komma!

BBP - Formel
Also fangen wir an die Summanden auf der rechten Seite zu bestimmen ...

1. Teil:
Zuerst einmal von i=0 bis zu i=299
Vor der Klammer ergeben sich Potenzen von 16 hoch einer positiven ganzen Zahl: Also Zahlen vom Wert 16300, 16299, 16298 ... bis zum kleinsten Wert 161
Diese Vorfaktoren werden dann nacheinander mit den Brüchen der zugehörigen Klammer multipliziert, wobei hierbei nur der Anteil nach dem Komma interessiert.

z.B. ergibt 16^300 · (+4)/(8 · 0 + 1)) den Wert 0, weil das Ergebnis eine ganze Zahl (ohne Kommaanteil!) ist.

oder das letzte Produkt 16^300 · (-1)/(8 · 0 + 6)) den Wert -4/6 ergibt, weil die (sehr große) ganze Zahl vor dem Komma wegfällt

Pro i-Wert ergibt sich dann einer Teilsumme aus den 4 Nachkommaanteilen ...
... und diese 300 Teilsummen werden aufsummiert zur Gesamtsumme A (für i:0..299) für alle 300 i-Werte: A* = -0,7073013268271
Ein negativer Wert kann sich ergeben, weil man die negativen Teilsummen ggf. "zu stark" einberechnet!
Ein Beispiel dazu:
13,23 + (-7,9) = 5,33; nun die entspr. Addition nur mit den Nachkommanteilen: 0,23 + (-0,9) = -0,67; Die Addition von +1 ergibt wieder das korrekte Ergebnis 0,33.

Nach der Korrektur (Addition von 1) ergibt sich dann A = 0,292698673172865

       -----> Wesentlich genauere Betrachtung der A-Berechnung


2. Teil:
Jetzt werden weitere 11 Terme für i=300 bis 310 bestimmt. Auf Grund der schnell sehr klein werdenden Werte (Der Vorfaktor 16^(300-i) geht rasant gegen Null; die Klammerwerte sind mittlerweile schon sehr sehr klein) reichen hier 11 Werte erst einmal gut aus.
Die Summe dieser 11 Kommawerte ist B = 0,00000276970233099773


Die Gesamtsumme A+B wäre dann 0,292701442875196
Rechnet man dies in das hexdezimale System um so ergibt sich 0,4AEE7 B54A4 171C0
Die Stelle 300 hat also den Wert 4, die 301. Stelle den Wert A; etc.
Ein Vergleich mit Literaturwerten zeigt, dass unsere Berechnung erst nach der Ziffernfolge 4AEE7 B54A4 1 zu falschen Werten führt.

       -----> C#-Code dazu



Ausprobieren? ----> Beispiel rechnen lassen