Sono un principiante pitone e voglio calcolare il pi. Ho provato a utilizzare l'algoritmo Chudnovsky perché ho sentito che è più veloce di altri algoritmi.Calcolo pi Python?
Questo è il mio codice:
from math import factorial
from decimal import Decimal, getcontext
getcontext().prec=100
def calc(n):
t= Decimal(0)
pi = Decimal(0)
deno= Decimal(0)
k = 0
for k in range(n):
t = ((-1)**k)*(factorial(6*k))*(13591409+545140134*k)
deno = factorial(3*k)*(factorial(k)**3)*(640320**(3*k))
pi += Decimal(t)/Decimal(deno)
pi = pi * Decimal(12)/Decimal(640320**(1.5))
pi = 1/pi
return pi
print calc(25)
Per qualche motivo questo codice produce il vakue di pi greco fino a soltanto 15 decimali rispetto al valore accettabile. Ho cercato di risolverlo aumentando il valore di precisione; questo aumenta il numero di cifre, ma solo i primi 15 sono ancora precisi. Ho provato a cambiare il modo in cui calcola l'algoritmo e non ha funzionato neanche. Quindi la mia domanda è, c'è qualcosa che può essere fatto a questo codice per renderlo molto più accurato o dovrei usare un altro algoritmo? Apprezzerei molto l'aiuto perché non so come operare con così tante cifre in python. Vorrei essere in grado di controllare il numero di (corrette) cifre determinate e visualizzate dal programma - sia 10, 100, 1000, ecc
Proprio per il confronto, ecco qualche codice Chudnovsky di lavoro: http://www.craig-wood.com/nick/articles/pi-chudnovsky/ – runDOSrun