ChronoMath, une chronologie des MATHÉMATIQUES
à l'usage des professeurs de mathématiques, des étudiants et des élèves des lycées & collèges

Calcul de π par intégration d'un développement en série #4     Programme JavaScript
            version tableur | #3 calcul semblable selon Gregory        #1 , #2

Si (un) est une suite géométrique de raison r, | r | < 1, de premier terme 1, on sait que la somme Sn = 1 + r + r2 + ... rn-1 de ses n premiers termes a pour limite le nombre :

Par suite, pour tout x de l'intervalle ouvert ]-1,+1[, nous pouvons écrire, avec r = -x2 :

(s)      

En posant fn(x) = (-1)nx2n, la série de fonctions ci-dessus converge normalement sur tout intervalle [0,a] inclus dans [0,1[. En effet, pour tout x de l'intervalle [0,a], on a : | fn(x) | = x2n  < a2n et ce dernier nombre est le terme général d'une série géométrique convergente puisque 0 < a2 < 1.

Par ailleurs, f : xtan(x) réalise une bijection de [0,π/4[ sur [0,1[. La fonction g = f-1 : xatan(x) réalise donc une bijection dérivable de [0,1[ sur [0,π/4[ et l'on a :

La convergence étant normale, on peut déduire par intégration terme à terme :

On a en particulier, lorsque a = 1/3, g(1/3) = π/6, et on en déduit :

La formule obtenue est facilement programmable et converge assez rapidement mais pour nous en assurer nous devons majorer le reste εn. Notons(Σ) la série de terme général :

(Σ) est manifestement alternée, strictement décroissante et à termes positifs. Il suit, selon un résultat de Leibniz, que |εn| est strictement inférieur à | tn+1 |.

Programmation de la méthode en JavaScript :

L'inégalité |εn| < | tn+1 | est fondamentale car non seulement elle prouve la convergence du procédé mais elle permet aussi d'évaluer l'erreur commise sur la somme de la série en s'arrêtant au rang n. Le défaut dans ce type de calcul est évident : on ajoute à une somme de type Sn-1, un terme tn tendant vers 0. On ne s'étonnera pas qu'à partir d'un certain rang, nous aurons Sn = Sn-1 car le terme | tn | décroissant vers 0 deviendra nul pour la machine ! Le résultat obtenu est remarquable à 10 -16 près au rang n = 31.

Dans ce programme fort simple, sn et snm1 désignent respectivement Sn et Sn-1. tn désigne le n-ème terme de la série (privé du facteur 23); on en tiendra compte en fin de sommation. Les calculs se poursuivent tant que sn et snm1 sont distincts : while (snm1!=sn).

 fonctions mathématiques usuelles

 

<SCRIPT LANGUAGE=JavaScript>
function go()
{
sn=1; snm1=0; tn=0; n=0; signe=1
while (snm1!=sn)   
//-- tant que sn non égal à snm1
{
n++;
tn=1/(2*n+1)/Math.pow(3,n)
signe=-signe;
snm1=sn ; sn=sn+tn*signe;
er=tn;
}
k=2*Math.sqrt(3)
alert("pi = "+k*sn+"\n"+"Erreur maxi. = "+er+"rang n = "+n)
}
</SCRIPT>


© Serge Mehl - www.chronomath.com