Script zu pie?
Mus ein kurzes Script schreiben und die ersten 50 Stellen von Pie auszurechnen
2 Antworten
Zuerst brauchst Du eine Formel zur Berechnung von π. Wenn keine vorgegeben ist, würde ich die BPP-Formel nehmen. Um die gewünschte Stellenzahl zu bekommen, sollte es reichen, die Reihe so weit zu berechnen, bis 1/16^k<10^-50.
In Python kannst Du mit Brüchen exakt rechnen, das Ergebnis mal 10^50 nehmen und in einen int wandeln. Dann steht das Ergebnis da.
Falls die letzte Ziffer eine 9 ist, solltest Du noch einen Iterationsschritt drauflegen.
#!/usr/bin/env python3
from fractions import Fraction
def bpp_term ( k ):
return ( Fraction(4, 8*k+1) - Fraction(2, 8*k+4)
- Fraction(1, 8*k+5) - Fraction(1, 8*k+6) ) / 16**k
prec = 10**50
pi = bpp_term(0)
print( " %52d" % int(pi*prec) )
for k in range(1, 40):
tk = bpp_term(k)
print( "+ %52d" % int(tk*prec) )
pi += tk
print( "= %52d" % int(pi*prec) )
Ausgabe:
313333333333333333333333333333333333333333333333333
+ 808913308913308913308913308913308913308913308913
= 314142246642246642246642246642246642246642246642246
+ 16492392411510058568882098293862999745352686529
= 314158739034658152305211128740540505246387599328775
+ 506722085385878489326765188834154351395730706
...
+ 47
= 314159265358979323846264338327950288419716939937507
+ 2
= 314159265358979323846264338327950288419716939937510
+ 0
= 314159265358979323846264338327950288419716939937510
Wenn die Programmiersprache frei wählbar ist empfehle ich Python:
# Importieren der math-Bibliothek
import math
# Berechnen der ersten 50 Stellen von Pi
pi_value = math.pi
# Ausgabe der ersten 50 Stellen von Pi
print(round(pi_value, 50))
Alternativ in Java:
public class PiCalculator {
public static void main(String[] args) {
double pi = 0;
int n = 50; // Anzahl der Stellen, die berechnet werden sollen
// Berechnen der ersten 50 Stellen von Pi
for (int i = 0; i < n; i++) {
pi += (Math.pow(-1, i) / (2 * i + 1));
}
// Ausgabe der berechneten Stellen von Pi
System.out.println(pi * 4);
}
}
Das wird so nicht klappen:
Sowohl in Python als auch in Java sind Gleitpunktzahlen auf ca. 15 Stellen begrenzt. Und bei der Leibniz-Reihe muss Du wesentlich mehr als die ersten 50 Glieder berechnen, nämlich ca. 10^50/4 Glieder. Das könnte etwas dauern...