Bonjour,
D'abord, je précise que je ne suis pas étudiant, et que donc ce n'est pas "urgent".
En fait, c'est parce que ça fait un petit moment que j'ai arrêté les études que je pose la question qui va suivre.
Bref, j'ai tenté de faire un calcul approché de Pi par la formule de Leibniz : Pi / 4 = Somme[i de 0 à infini]( (-1)^i / (2i+1) ) = 1 - 1/3 + 1/5 - 1/7 + 1/9...
Comme je fais un calcul approché, j'utilise évidemment un nombre fini d'éléments. J'ai remarqué qu'avec 10000 termes, 1 seul chiffre (en base 10) au milieu était différent (voir le premier résultat plus bas).
Du coup, j'ai remarqué que pour n termes, j'obtenais une bien meilleure approximation si j'ajoutais (-1)^n / n à 4 * Somme[i de 0 à n]( (-1)^i / (2i+1) )
Voici un exemple de script python illustrant le problème:
import math
#Calcul approché de Pi par la formule de Leibniz classique
def p(n):
r=0
for i in range(0,n):
r += (-1)**i / (2*i+1)
return r
#Calcul avec la correction
def corPi(n):
return p(n)*4 + (-1)**n / n
#Affichage de résultats
print('classic: ', p(10000)*4, '\ncorrected:', corPi(10000), '\nsystem: ', math.pi)
print('classic: ', p(300)*4, '\ncorrected:', corPi(300), '\nsystem: ', math.pi)
print('classic: ', p(321)*4, '\ncorrected:', corPi(321), '\nsystem: ', math.pi)
Voici les résultats pour n=10000:
classic=== 3.14149265359
corrected= 3.14159265359
system==== 3.14159265359
=> 3.141
49265359
Voici les résultats pour n=100:
classic=== 3.13159290356
corrected= 3.14159290356
system==== 3.14159265359
=> 3.1
31592
Voici les résultats pour n=321:
classic=== 3.14470791083
corrected= 3.14159264603
system==== 3.14159265359
=> 3.14
47079
Du coup, j'ai pensé que 4 * Somme[i de n à infini]( (-1)^i / (2i+1) ) tendait vers (-1)^n / n, mais ce n'est évidemment pas un calcul approché qui va prouver quoi que ce soit.
Alors, quelqu'un aurait-il une idée pour résoudre ce problème ?
Ce n'est peut-être qu'une question de bornage.
Pour info un script pour vérifier ceci:
def pr(n,m):
r=0
for i in range(n,m):
r+=(-1)**i / (2*i+1)
return r
Donne en résultat:
pr(100, 10000000)*4 = 0.0099897500312405452
1/100 = 0.01
-pr(321, 10000000)*4 = 0.0031153572392856399
1/321 ================ 0.0031152647975077881
De toutes façons, même avec cette correction, ce n'est probablement pas la meilleure méthode pour calculer pour calculer Pi.