Pi super schnell mit Python berrechnen

eine weitere Bastelseite ....

Pi super schnell mit Python berrechnen

12. September 2021 Python 0

Vor einiger Zeit habe ich ein Programm geschrieben, dass Pi in Arduino(c) oder Python berechnet. Diese Programme wahren sehr sehr langsam im vergleich zu diesem. Dieses Programm Jetzt kann 10.000 Stellen in 0.94 Sekunden berechnen. Dieses Programm habe ich von dem YouTuber Mathefuchs aus diesem Video:

Wie man Pi schnell und genau berechnen kann (Pi Day 2019) – YouTube

Ich habe die eigentliche Mathematik hinter dem Programm nicht verändert. Ich habe das Programm jedoch so umprogrammiert, dass es aufhört, wenn das Ergebnis richtig ist, dass es das Ergebnis in eine Neue Datei speichert, dass es misst wie lange der Computer zum berechnen gebraucht hat und mehr.

 

Das Programm wird in dem Programmordner eine neue Datei namens „Pi“ Erstellt, in der Pi gespeichert wird.

 

Hier ist mein Programm:

zeilen = int(input("Wie viele Nachkommastellen möchtest du berechnen lassen?"))

from decimal import getcontext, Decimal
getcontext().prec = zeilen
import time

a = 1
b = 1 / Decimal(2).sqrt()
s = 1 / Decimal(4)
n = 0
counter = 1
new_time = time.time()
old_time = time.time()
answer_new = 0
answer_old = 1

print("Rechnet...:")                                        #Drucke "Rechnet...:" aus
print("")                                                   #Drucke 1 Zeile weiter unten

start = time.time()
while answer_new != answer_old:                             #Solange answer_new nicht answer_old ist, soll ... passieren
    if counter > 1:                                         #Wenn die Variabele counter größer ist als 1, dann...
        old_time = new_time                                 #Variabele old_time ist gleich die Variable new_time
        new_time = time.time()                              #Variabele new_time ist gleich der Funktion time.time()
        print(new_time - old_time)                          #Drucke die Variable new_time minus der Variabel old_time
    answer_new = answer_old                                 #Variabele answer_new ist gleich die Variable answer_old
    counter += 1                                            #Variable counter soll einz größer werden

    A = (a + b) / 2                                         #Rechnung...
    B = Decimal(a * b).sqrt()                               #Rechnung...
    S = s - 2 ** n * (a - A) ** 2                           #Rechnung...
    answer_old = (A ** 2 / s)                               #Rechnung...

    a = A                                                   #klein a ist gleich groß A
    b = B                                                   #klein b ist gleich groß B
    s = S                                                   #klein s ist gleich groß S

    n += 1                                                  #Variable n soll einz größer werden

    datei = open('Pi', 'w')                                 #Erstelle eine Datei namens "Pi" im Programmordnder
    datei.write(str(answer_new))                            #Schreibe Pi in die gerade erstellte Datei

end = time.time()                                           #Variabele end ist gleich der Funktion time.time()

print("Wurde in einer neuen Datei namens Pi Gespeichert")   #Drucke "Wurde in einer neuen Datei namens Pi Gespeichert" aus
print("")
print("Durchgänge:")
print(n)
print("")
print("Zeit:")
print(end - start)

datei = open('Pi', 'w')
datei.write(str(answer_new))

while 0 == 0:
  mach_nichts = 0

Info:

Da ich noch nicht sehr lange Python Programmiere, könnten vermutlich einige Sachen im Programm besser geschrieben werden, als ich sie geschrieben habe.