Pi mit Vieta bestimmen, Problem mit Decimal und Abbruchbedingung
Verfasst: Montag 13. Juni 2022, 08:58
Hallo zusammen,
mit folgendem Skript möchte ich die Konvergenz der Pi-Bestimmung nach Vieta untersuchen, indem ich mich x Stellen an Pi annähere:
Aktuell habe ich zwei Baustellen:
1. Wie kann ich die Abbruchbedingung richtig gestalten? Aktuell läuft die Schleife endlos durch.
2. Warum wird mir bei der vorletzen Zeile nicht meine Variable pi_30 ausgegeben, sondern eine viel längere Zahl?
Über Tipps freue ich mich,
pf
mit folgendem Skript möchte ich die Konvergenz der Pi-Bestimmung nach Vieta untersuchen, indem ich mich x Stellen an Pi annähere:
Code: Alles auswählen
#https://de.wikipedia.org/wiki/Vietas_Produktdarstellung_der_Kreiszahl_Pi
from decimal import Decimal, getcontext
# pi_10=Decimal(3.1415926535)
pi_30=Decimal(3.141592653589793238462643383279)
getcontext().prec = 31
p = Decimal(1)
c = Decimal(2).sqrt()
i=1
while True:
p = Decimal(p * (c / 2))
c = Decimal(2 + c).sqrt()
print(i,Decimal(2/p))
i=i+1
if Decimal(2/p)==Decimal(pi_30):
break
print()
print("Pi with 30 digits:", Decimal(pi_30))
print("Result Vieta: ",Decimal(2/p))
1. Wie kann ich die Abbruchbedingung richtig gestalten? Aktuell läuft die Schleife endlos durch.
2. Warum wird mir bei der vorletzen Zeile nicht meine Variable pi_30 ausgegeben, sondern eine viel längere Zahl?
Über Tipps freue ich mich,
pf