pi/2 = 1 + 1/3 + (1*2)/(3*5) + (1*2*3)/(3*5*7) + ...
Bon, essayons encore ceci.Utilisation d'une série pour calculer pi en Python
J'ai besoin d'écrire une fonction qui prend l'erreur maximale en tant que paramètre pour la valeur de pi et renvoie la valeur calculée de pi et le nombre d'itérations nécessaires pour arriver à ce point. Je ne peux pas utiliser un algorithme récursif.
Jusqu'à présent j'ai:
def piEuler (x):
count = 0.0
approx = 0.0
approx2 = 1.0
error = math.pi/2 - approx2
while error > x:
count = count + 1
approx3 = approx + approx2
error = math.pi/2 - approx3
#print error
approx = approx + approx2
approx2 = approx2 * count/(count + 2)
#print approx2
final = math.pi - error
return final, count
Le problème est que le programme renvoie une valeur négative. L'erreur devrait converger vers zéro. Je dois être capable de soustraire mon erreur de la valeur acceptée de pi pour obtenir une valeur approximative de la série. Qu'est-ce que je fais mal?
Les termes de votre dénominateur ne semblent pas corrects. Ne devriez-vous pas calculer le produit de '3 * 5 * ... * (2 * k + 1)' pour 'k = 1,2, .., n/2'? On dirait que vous faites 3 * 4 * 5 * ... * n'. Cela vous donnerait un plus grand nombre et expliquerait pourquoi la série est additionnée à un nombre supérieur à 'pi/2' et donc augmenter le terme d'erreur en valeur absolue (mais diminuer en valeur réelle, c'est-à-dire devenir négatif). –
@JoelCornett Vous devriez publier cela comme une réponse. –
@ Jon-Eric: Bon appel, posté. –