![]() ![]() programmation récursive » preuve de la formule |
On sait, ou on admettra, que :
Au lieu d'un procédé itératif, recopie vers le bas, on se propose ici d'utiliser une méthode fonctionnelle : le résultat apparaît dans une cellule bien précise en fonction de n : il y a alors des appels récursifs dans certaines cellules que nous allons étudier :
Dans les Options, on choisit Mode de Calcul et on coche l'item itération permettant d'autoriser les références circulaires, c'est à dire l'appel d'une cellule à elle-même :
Demandons là, 5000 itérations. Il s'agira ensuite de lancer les calculs de façon manuelle afin de pouvoir correctement initialiser nos calculs (Excel va très vite et est très pressé !). Pour ce faire
on implante un drapeau nommé d en A4 que l'on met à 0
en A2, le compteur : A2 contiendra la valeur de n. Il y a ici un appel à A2 elle-même (récursion)
en B2, nous doublons n : 2n.
en C2, nous prenons les carrés de 2n (numérateur)
en D2, si le drapeau est à 0, nous initialisons le produit infini à 1; sinon il est multiplié par C2 (le carré de 2n) et divisé par ce même terme diminué de 1 selon la formule de Wallis : c'est encore ici un appel récursif de D2 dans lui-même.
en E2, le tout est multiplié par 2 pour obtenir π (noté Pi dans le programme).
= Programme =
A |
B |
C |
D |
E |
|
1 |
compteur n |
2n |
(2n)^2 |
Pi/2 |
Pi |
2 |
=SI(d=0;0;A2+1) |
=2*A2 |
=B2*B2 |
=SI(d=0;1;D2*C2/(C2-1)) |
=2*D2 |
3 |
drapeau |
||||
4 |
0 |
= Après exécution : mise à 1 du drapeau =
A |
B |
C |
D |
E |
|
1 |
compteur n |
2n |
4n^2 |
Pi/2 |
Pi |
2 |
6272 |
12544 |
157351936 |
1,570733722 |
3,141467443 |
3 |
drapeau |
||||
4 |
1 |
On obtient 3,14 pour n = 500 , et 3,1415 vers n = 8500. Ne procédant pas par encadrement, on ne peut être assuré d'une bonne convergence car le propre de l'ordinateur est de faire des erreurs d'arrondi pouvant se propager de façon catastrophique ! Le procédé ne peut pas être stable pour de grandes valeurs de n car 4n2 et 4n2 + 1 sont alors sensiblement égaux pour la machine et par suite le calcul va "piétiner"...