Seite 1 von 1

Annäherung an Pi mit Wallischen Produkt

Verfasst: Dienstag 20. April 2021, 09:29
von Dabudda
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

Re: Annäherung an Pi mit Wallischen Produkt

Verfasst: Dienstag 20. April 2021, 10:00
von Sirius3
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