Berechnung der Kreiszahl Pi

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
nooby
User
Beiträge: 91
Registriert: Montag 12. März 2012, 20:39
Wohnort: 127.0.0.1

Hallo liebes Forum

Ich möchte ein Programm schreiben, dass Pi berechnet und jede neue Nachkommastelle in eine Datei schreibt.
Das Programm sollte dann auch von dort wieder fortgesetzt werden.
Ich habe bereits ein einfacher Algorithmus programmiert, welcher Pi näherungsweise bestimmt.

Code: Alles auswählen

from decimal import Decimal
summe = int(1)
for i in range(2, 2000):
    zahl = Decimal(1/(i**4))
    summe += zahl
    
summe *= 90
summe **= Decimal(0.5)
summe **= Decimal(0.5)
print(Decimal(summe))
Dies ist jedoch mit diesem Algorithmus nicht möglich.
Deshalb möchte ich mein Programm mit dem BBP Algorithmus schreiben. Dieser kann ja eine Stelle berechnen, ohne die vorhergehende zu kennen.
Ich habe auch schon diese Implementierung ausprobiert.
http://en.literateprograms.org/Pi_with_ ... a_(Python)
Das Problem ist jedoch, dass mehrere Stellen ausgegeben werden. Und wie weiss ich jetzt bis zu welcher Stelle, das ganze Stimmt und wo nicht mehr?

Vielen Dank für eure Mühe eine Python Neuling zu helfen.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo,

schau dir dazu mal diesen Thread bei Stackoverflow an. Da hast du erstmal genug Information ;-)
Das Leben ist wie ein Tennisball.
nooby
User
Beiträge: 91
Registriert: Montag 12. März 2012, 20:39
Wohnort: 127.0.0.1

Danke für den Link.
Mein Englisch ist leider (noch) nicht so gut...
Aber ich hab's probiert zu verstehen.
Heisst dass, dass dies mit dem Chudnovsky Algorithmus möglich ist, also das Fortsetzen einer bereits gestarteten Berechnung?
Und dass man den BBP Algo nur zum Überprüfen nutzen kann?
nooby
User
Beiträge: 91
Registriert: Montag 12. März 2012, 20:39
Wohnort: 127.0.0.1

Ich habe gelesen, dass das Stoppen und weiterrechnen von Pi mit dem Chudnovsky Algorithmus nicht möglich ist.
Und auch mit den anderen beiden:
Gauss–Legendre algorithm
Borwein's algorithm
Ist dies, so glaube ich, nicht möglich.
Gibt es irgendeinen Algorithmus, mit dem dies geht?
Mit dem BBP kann man ja nur als Hex berechnen.

Noch mals danke für eure Hilfe

Nooby

//Edit: Wie funktioniert beim BBP das Umwandeln in Dec genau?
Ich begreife nicht, wie das geht. Der Anfang ist ja: 243F6A8885A308D313198A2E03707344A4093822299F31D00...
Wenn ich dies in Dec umwandle erhalte ich nur 3 :K
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Ja, das hast du richtig verstanden. Erst wird Pi mit Chudnovsky bestimmt und anschließend ("die letzten Ziffern") mit BBP getestet. Zur fortlaufenden Berechnung ist das nicht wirklich gut geeignet. Gibt es einen Grund, warum du die Ziffern schrittweise berechnen willst und du sie im Dezimalsystem brauchst?
Das Leben ist wie ein Tennisball.
nooby
User
Beiträge: 91
Registriert: Montag 12. März 2012, 20:39
Wohnort: 127.0.0.1

Nein, einen Grund hat es nicht. Aber ich möchte halt, wie z.B. bei BOINC, dass mein Programm im Hintergrund Pi berechnet.
Für das muss es bei einer beliebigen Stelle beginnen.
Dies ist aber mit dem Chudnovsky auch nicht möglich, oder?
Antworten