Annäherung an Pi mit Wallischen Produkt

Gute Links und Tutorials könnt ihr hier posten.
Antworten
Dabudda
User
Beiträge: 3
Registriert: Dienstag 20. April 2021, 09:22

Hallo liebes Forum,

ich bin ganz neu in Python. Ich habe nun eine Übungsaufgabe bei dem ich mich an Pi annähern soll. Das ganze mit dem Walfischen Produkt.

Ich habe dies zuerst wie folgt versucht zu lösen:

Code: Alles auswählen

def wallis(n):
    pi = 0.0   
    for i in range(1, n):
        x = 1
        y = 4 * (i ** 2)
        z = float(x) + (float (x) / float (y) - float (x))
        if (i == 1):
            pi = z
        else:
            pi *= z
    pi *= 2
    return pi

print(wallis(100000))
Jedoch kommt bei mir immer wieder 0.0 raus...

kann mir jemand dabei helfen =) ?

vielen Dank
Sirius3
User
Beiträge: 17703
Registriert: Sonntag 21. Oktober 2012, 17:20

Es ist sehr unleserlich, um jede Variable float zu schreiben, obwohl das ja schon ein Float, oder zumindest eine Zahl ist.
Dass x für 1 steht, macht das Lesen auch unnötig schwierig.
Bleibt also `z = 1 + (1 / y - 1)` wo man schnell sieht, dass das nicht die richtige Formel ist.

Die Klammern beim if sind unnötig, sowie das ganze if unnötig ist, wenn man pi nicht mit 0 initialisiert (was gar nicht benutzt wird) sondern mit 1.
Der Endwert von `range` ist exclusive, die Schleife läuft also einen Schritt zu wenig.

Bleibt also (inklusive Fehler) das hier übrig:

Code: Alles auswählen

def wallis(n):
    pi = 1
    for i in range(1, n + 1):
        y = 4 * (i ** 2)
        pi *= 1 + (1 / y - 1)
    pi *= 2
    return pi
Antworten