Approximations de Pi

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 596 fois - Téléchargée 12 fois

Contenu du snippet

Bonjour,

Voici toute une série d'articles "Approximations de Pi" qui comporte des algorithmes plus ou moins simples, plus ou moins rapides.
Dans tous les codes exposés, on se borne aux calculs de précision "double" (réels sur 64 bits), ce qui nous limitera à une quinzaine de chiffres décimaux.

Remarque sur la "précision double":
Les formules et algorithmes "modernes" atteignent cette précision en quelques rares itérations !
Pour pouvoir les utiliser pleinement, il faudrait se baser sur des systèmes de nombres bien plus étendus (tels que GMP, BigInt, ?) et calculer un nombre de chiffres précis beaucoup plus grand.
J'espère que cette série vous aidera à choisir un ou plusieurs algorithmes et présenter des articles qui calculent Pi à mille, un million, un milliard, etc. de chiffres.


Le tableau ci-dessous comporte les colonnes ch/1000000it et it/15ch:

  - Algorithmes lents ==> ch/1000000it:
    Nombre de chiffres après la virgule obtenus après un million d'itérations.

  - Algorithmes rapides ==> it/15ch:
    Nombre d'itérations nécessaires pour calculer pi avec la précision double.

 Titre   Année   ch/1000000it   it/15ch  
 Formule de Madhava de Sangamagrama    ~1400       28
 Produit de Wallis    1655               5 
 Formule de Newton    1666       22
 Fractions continues   ~1680    32000 
 Formule de Leibniz    1682               6 
 Formule de Lagny    1682       30
 Formule de Viète    1692       24
 Formule de Machin    1706       10
 Formule de Euler    1735       50
 Formules avec nombres de Fibonacci       ?      (28)
 Formule avec nombres premiers       ?               8 
 Formule du Nombre d'Or       ?       32
 Méthode Monte-Carlo       ?               2
 Formule de Ramanujan    1910        2
 Algorithme de Brent-Salamin    1976        3
 Formule et série de Gosper       ?    23 ¦ 12
 Algorithmes de Borwein    1985     (1) 2
 Formule de Chudnovsky    1987     (1) 2
 Formule de Bailey-Borwein-Plouffe    1995    10 ¦ 5
 Formule de Adamchick-Wagon    1997       22
  ^^^ Cliquez sur un titre ^^^

Connaitriez-vous d'autres algorithmes ou formules qu'il serait intéressant d'ajouter ?

A titre d'exemple, voici un code introductif qui montre (partiellement) la manière dont sont traités les différents algorithmes:
#include <stdio.h>
#include <math.h>

double Leibniz(int n) {
  double pi=1.0;
  for (int i=1; i<=n; ++i) pi += ((i&1) ? -1.0 : 1.0) / (2*i + 1);
  return 4*pi;
} // pi = 4*{1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + ...}

double Viete(int n) {
  double q=0.0, pi=2.0;
  for (int i=0; i<n; ++i) {
    q = sqrt(2.0+q);
    pi *= 2.0/q;
  }
  return pi;
} // Pi = 2 * 2/sqrt(2) * 2/sqrt(2+sqrt(2)) * 2/sqrt(2+sqrt(2+sqrt(2)) * ...

void main() {
  printf("Leibniz: pi = 4*{1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + ...}n");
  for (int n=10; n<=1000000; n*=10) printf("  n=%7i: pi=%.14fn",n,Leibniz(n));
  printf("     precis: pi=3.14159265358979n");

  printf("nViete: pi = ");
  printf("2 * 2/sqrt(2) * 2/sqrt(2+sqrt(2)) * 2/sqrt(2+sqrt(2+sqrt(2)) *...n");
  for (int n=4; n<=24; n+=4) printf("  n=%2i: pi=%.14fn",n,Viete(n));
  printf("precis: pi=3.14159265358979n");

  getchar();
}

Et qui donne l'output:
Leibniz: pi = 4*{1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + ...}
  n=     10: pi=3.23231580940559
  n=    100: pi=3.15149340107099
  n=   1000: pi=3.14259165433954
  n=  10000: pi=3.14169264359053
  n= 100000: pi=3.14160265348972
  n=1000000: pi=3.14159365358877
     precis: pi=3.14159265358979

Viete: pi = 2 * 2/sqrt(2) * 2/sqrt(2+sqrt(2)) * 2/sqrt(2+sqrt(2+sqrt(2)) *...
  n= 4: pi=3.13654849054594
  n= 8: pi=3.14157294036709
  n=12: pi=3.14159257658487
  n=16: pi=3.14159265328899
  n=20: pi=3.14159265358862
  n=24: pi=3.14159265358979
precis: pi=3.14159265358979

Par la suite, je pense déposer une autre série d'articles consacrée aux
"calculs beaucoup plus précis de Pi".
Mais, ayant très peu d'expérience avec les "grands nombres" (GMP, BigInt, ?), conseillez-moi pour installer, tester et utiliser l'une ou l'autre de ces librairies.
 
 
Quelques liens intéressants
Wiki: Pi , L'Histoire de Pi, Approximations of pi
CodeS-SourceS: Calcul de pi
NOMBRES: Constante Pi
Des trucs et des maths: Le nombre pi
Gérard Sookahet: Formules et algorithmes pour évaluer pi
Pi314: L'univers de pi
Fabien Durand: La longue histoire de Pi
Wolfram MathWorld: Pi Formulas
Math²: Le calcul du nombre Pi
 
 
Moyen mnémotechnique pour pi = 3,1415926535 :
  Que j'aime à faire apprendre ce nombre utile aux sages
La longueur de chaque mot donne une décimale.
 
 
Merci d'avance pour vos éventuels conseils, suggestions ou corrections.

Bonne lecture ...

Compatibilité : 0: Annonce d'une série d'approximations de Pi

A voir également

Ajouter un commentaire

Commentaires

KX
Messages postés
16007
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
19 août 2019
86 -
Bonjour,

J'apprécie ton travail, tu as souvent des codes intéressants. Cependant les snippets sont faites pour exposer du code, pour les questions je te demanderais d'utiliser le forum.

http://codes-sources.commentcamarche.net/forum/

Merci.
William VOIROL
Messages postés
264
Date d'inscription
mardi 12 décembre 2006
Statut
Membre
Dernière intervention
10 juin 2019
> KX
Messages postés
16007
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
19 août 2019
-
Bonjour,

Merci pour votre commentaire.

Je vous présente mes excuses pour ne pas avoir suivi la procédure habituelle.
Ma vieille mémoire semble avoir un comportement contraire au vin qui s'améliore avec les années.

Vous m'avez donné l'idée d'ajouter à ce snippet un code qui montre avec des exemples partiels la manière dont seront traités les différents algorithmes.

La modification mentionnée sera faite tout soudain ...
pgl10
Messages postés
313
Date d'inscription
samedi 18 décembre 2004
Statut
Membre
Dernière intervention
6 juillet 2019
1 -
Bonjour M. William Voirol,
Je note le départ d'un travail qui va intéresser beaucoup de visiteurs. Bravo !
Aujourd'hui le pointeur vers "L'Histoire de Pi" est tronqué, donc en erreur.
Voici encore une autre référence : http://www.mathinfo.u-picardie.fr/fdurand/pi2006.pdf
Et voici une référence pour s'amuser : http://crypto.stanford.edu/pbc/notes/pi/code.html
Cordialement, pgl10
William VOIROL
Messages postés
264
Date d'inscription
mardi 12 décembre 2006
Statut
Membre
Dernière intervention
10 juin 2019
> pgl10
Messages postés
313
Date d'inscription
samedi 18 décembre 2004
Statut
Membre
Dernière intervention
6 juillet 2019
-
Bonjour,

Merci pour votre message et vos encouragements.

Pour la prochaine adaptation du snippet, je vais corriger le lien de L'Histoire de Pi.

De plus, je me permettrai d'y ajouter l'adresse du pdf de La longue histoire de pi.

Le denier lien (pour s'amuser) que vous proposez, montre le "record" surprenant d'écrire un code C de 160 caractères, et qui calcule et affiche les 800 premiers chiffres décimaux de Pi. J'avais déjà prévu de l'utiliser comme "introduction" à la prochaine série pré-annoncée des calculs beaucoup plus précis de Pi. Si le coté "record" vous intéresse, il me semble avoir réussi à gagner encore un caractère !
William VOIROL
Messages postés
264
Date d'inscription
mardi 12 décembre 2006
Statut
Membre
Dernière intervention
10 juin 2019
-
Bonjour,

En ce qui concerne la mise en page de ce snippet, quelqu'un peut-il m'indiquer comment centrer les valeurs des deux dernières colonnes du tableau vert-clair ?
Pour le moment, je crée ce tableau avec un texte de la forme:
{| border="2" cellspacing="2px" bgcolor=#CCFF77
|-
|! Titre
|! Année
|! ch/1000000it
|! it/15ch
|-
|! Produit de Wallis
|! 1655
|!
|!
|-
|! Formule de Leibniz
|! 1682
|! 6 <<<<<<<<<< à centrer !
|!
|-
|! Produit de Viète
|! 1692
|!
|!
|-
|}

Merci d'avance ...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.