Leibniz formule pour le π - Est-ce bon? (Python)
Je suis en train de faire un exercice qui demande une fonction qui se rapproche de la valeur de pi à l'aide de Leibniz formule. Voici les explications sur Wikipedia:
La pensée logique vient à moi facilement, mais je n'ai pas eu beaucoup de une formation dans les maths, donc je suis un peu perdu quant à ce que le plus à gauche des symboles dans le second représentent. J'ai essayé de rendre le code pi = ( (-1)**n /(2*n + 1) ) * 4
, mais qui a renvoyé 1.9999990000005e-06
au lieu de 3.14159..., j'ai donc utilisé un accumulateur motif de la place (depuis le chapitre du guide que c'était dans les mentionne aussi) et il a bien fonctionné. Cependant, je ne peux m'empêcher de penser que c'est un peu artificiel et il y a sans doute une meilleure façon de le faire, compte tenu de Python accent sur la simplicité et de faire des programmes aussi court que possible. C'est le code complet:
def myPi(n):
denominator = 1
addto = 1
for i in range(n):
denominator = denominator + 2
addto = addto - (1/denominator)
denominator = denominator + 2
addto = addto + (1/denominator)
pi = addto * 4
return(pi)
print(myPi(1000000))
Personne ne sait mieux fonctionner?
- Que représente - calculer la somme de la joint expression pour n = 0 à l'Infini
- Merci pour l'info!
- Vous verrez que le plus gros problème n'est pas l'algorithme.
- Ouais, les nombres à virgule flottante m'ont donné plus d'un mal de tête depuis que je suis en ce.
Vous devez vous connecter pour publier un commentaire.
La capitale sigma ici est notation sigma. C'est la notation utilisée pour représenter une sommation de façon concise.
De sorte que votre somme est en fait une somme infinie. Le premier terme, pour n=0, est:
Il est ajouté à
puis à
et ainsi de suite pour toujours. La sommation est ce qui est connu mathématiquement comme un convergente de somme.
En Python vous l'écrire comme ceci:
Si vous vouliez optimiser un peu, vous pouvez éviter l'exponentiation.
La formule de Leibniz se traduit directement en Python avec pas de muss ou de chichi:
À l'aide pur Python, vous pouvez faire quelque chose comme:
puis de calculer
pi
avec le nombre de termes que vous avez besoin pour atteindre une précision donnée:C'était mon approche:
Je prends du nombre de termes de l'utilisateur veut, puis dans la boucle for je le double en compte uniquement à l'aide de la cote.
Suis pour l'amour d'une série convergente.
La version suivante utilise la formule de Ramanujan comme indiqué dans cette SORTE de post - it utilise une relation entre le pi et le "monstre de groupe", tel que discuté dans cet article.