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 du nombre π selon Brouncker

Brouncker conjectura, à partir de la formule de Wallis, la fraction continue suivante calculant le nombre π, prouvée par Lambert :

L'objectif est ici de calculer une approximation de cette fraction continue, que nous notons F, en établissant un algorithme accessible à la programmation en JavaScript et un programme utilisable en ligne.

Programmer le développement d'une fraction continue n'est pas simple. La difficulté réside dans le fait qu'une telle fraction se calcule "à l'envers" : en partant des éléments les plus bas. Cherchons une récurrence dans le développement.

On voit, ci-dessus, que dès la seconde fraction (sous le premier 12), si l'on pose :

on pourra calculer une approximation de F en s'arrêtant à l'ordre n à condition de connaître un équivalent de Un+1 :

Exemple en choisissant n = 3 :
U3= 72/(2 + U4)   

U2= 52/(2 + U3)

U1= 32/(2 + U2)

U0= 12/(2 + U1)

Donc si U4 est donné, on calcule U3, puis U2 , puis U1 et enfin U0 et une approximation de π/4 sera :

1/(1 + U0) = 1/(1 + 12/(2 + U1)) = 1/(1 + 1/(1 + 12/(2 + 32/(2 + U2))) = ...

on retrouve bien ainsi la fraction continue de Brouncker. Maintenant, si nous choisissons n assez grand, 100 par exemple, le problème est de savoir quelle valeur donner à U100. On calcule ensuite Un , puis Un-1 , Un-2 , ... au moyen d'une boucle itérative descendante (de pas égal à -1).

Programmation de l'algorithme en JavaScript

On admet ici, bien que ce ne soit pas trivial, que pour n grand (appelé nmax dans le programme) : Un+1 ~  2n + 1. Noter que l'absence, dans le programme, de critères relatifs au contrôle d'erreurs d'arrondis nuit à la crédibilité des calculs. Facile de calculer π quand on connaît déjà sa valeur. Mais, bon...

Entrez nmax au moins égal à 100. Les calculs sont très rapides. Quelques résultats :



<SCRIPT LANGUAGE=JavaScript>

function go()
{
nmax=1000;
nmax=eval(prompt("Entrez n :",nmax))
Un=2*nmax+1;
for(n=nmax;n>=1;n--)
{
Un=(2*n+1)*(2*n+1)/(2+Un)
}
Un=1/(2+Un);
pi=4/(1+Un);
alert("pi = "+pi)
}
</SCRIPT>

Pour plus de précision... :

Autres calculs de π :


© Serge Mehl - www.chronomath.com