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 récursif de n! sur Tableur et approximation de Stirling     
          Programme JavaScript        exo

On se propose de calculer n! (factorielle de n) au moyen d'un tableur en utilisant une procédure fonctionnelle : cellule faisant appel à elle-même : c'est une procédure récursive, puis, s'aidant d'un programme élémentaire, de comparer les calculs à l'approximation de De Moivre et Stirling :

où r(n) tend vers 0 lorsque n tend vers l'infini.

Programmation de la formule :

On passe en mode dit itératif autorisant les références circulaires (récursion) et plutôt que d'indiquer à chaque fois à l'ordinateur le nombre d'itérations, nous allons créer notre propre compteur et test d'arrêt.

  A

B

C

D

1
n
compteur  k
factorielle  n
drapeau d
2
10
=SI(d=0;1;SI(k<=n;k+1;k))
=SI(d=0;1;SI(k<=n;fac*k;fac))
0
 
Exemple d'exécution :
 
  A B C D
1
n
compteur  k
factorielle n
drapeau d
2
10
11
3628800
1

Factorielle n et la formule de Stirling

On écrit ici un programme simple calculant n! avec en regard l'approximation de Stirling et l'erreur relative commise par cette approximation.

A
B
C
D

1

n

n! exact
n! selon Stirling
err. rel.

2

=1

=1

=RACINE(2*PI()*A2)*((A2/EXP(1)))^A2

=ABS(B2-C2)/B2

3

=A2+1

=A3*B2

=RACINE(2*PI()*A3)*((A3/EXP(1)))^A3

=ABS(B3-C3)/B3

4

=A3+1

=A4*B3

=RACINE(2*PI()*A4)*((A4/EXP(1)))^A4

=ABS(B4-C4)/B4

5

...

...

...

...

Pour n "grand", l'important est d'avoir une erreur relative en "faible" : la formule de Stirling semble très satisfaisante :

A B C D
n n!  "exact" selon Excel... n! selon Stirling err.rel.
1 1 0,922 7,79%
2 2 1,919 4,05%
3 6 5,836 2,73%
4 24 23,506 2,06%
5 120 118,019 1,65%
6 720 710,078 1,38%
7 5040 4980,396 1,18%
8 40320 39902,395 1,04%
9 362880 359536,873 0,92%
10 3628800 3598695,619 0,83%
11 39916800 39615625,051 0,75%
12 479001600 475687486,473 0,69%
13 6227020800 6187239475,193 0,64%
14 87178291200 86661001740,599 0,59%
15 1307674368000 1300430722199,470 0,55%
16 20922789888000 20814114415223,100 0,52%
17 355687428096000 353948328666101,000 0,49%
18 6402373705728000 6372804626194310,000 0,46%
19 121645100408832000 121112786592294000,000 0,44%
20 2432902008176640000 2422786846761140000,000 0,42%
21 51090942171709440000 50888617325509700000,000 0,40%
22 1124000727777607680000 1119751494628240000000,000 0,38%
23 25852016738884976640000 25758525370529300000000,000 0,36%

 En fait, la précision d'Excel est dépassée pour n > 20 et le résultat affiché en colonne B pour n > 20 est donné par le programme Derive, logiciel de calcul formel, intégré à la calculatrice TI92 de Texas Instruments. Excel fournit en effet :

21! = 51090942171709400000        22! = 1124000727777610000000  23! = 25852016738885000000000

et aggrave son cas au-delà, tout en diminuant malgré tout l'erreur relative, ce qui ici importe plus que l'exactitude : sa précision étant de 16 chiffres significatifs, Excel ajoute des zéros intempestifs.

 Correction de la formule , calcul multiprécision de n! , PGCD récursif en JavaScript


© Serge Mehl - www.chronomath.com