Approximations de Pi: Formule de Adamchik-Wagon

Description

Bonjour,

La formule de Adamchik et Stan Wagon date de 1997.
Pi = Somme(i>=0) {(-1/4)^i * [2/(4*i+1) + 2/(4*i+2) + 1/(4*i+3)]}
Elle est dérivée de la formule BBP (Bailey-Borwein-Plouffe),
et souvent utilisée pour calculer le n-ième chiffre après la virgule de pi en base 16 (ou 4).

Cet article fait partie de la série CodeS-SourceS: Approximations de Pi.

Voici un code qui permet d'utiliser cette formule:
double Adamchik_Wagon_A(int n) {
  double pi=0.0;
  for (int i=0; i<n; ++i) {
    int d1=4*i+1, d2=d1+1, d3=d2+1;
    pi += ((i&1) ? -1.0 : 1.0) * (2.0/d1 + 2.0/d2 + 1.0/d3) / (1ll<<(2*i));
  }
  return pi;
} // Pi = Somme(i>=0) {(-1/4)^i * [2/(4*i+1) + 2/(4*i+2) + 1/(4*i+3)]}
Il ne faut que 22 itérations pour approcher pi en double précision.

Code équivalant un peu plus condensé:
double Adamchik_Wagon_B(int n) { // plus condensé
  double pi=10.0/3.0, f=1.0;
  for (int d, i=1; i<n; ++i) pi += (f*=-0.25)*(2.0/(d=4*i+1)+2.0/(d+1)+1.0/(d+2));
  return pi;
}

Par rapport à Bailey-Borwein-Plouffe, cette formule converge un peu moins vite, mais le calcul à chaque itération est plus simple.

Le Zip contient le seul fichier source Adamchik_Wagon.cpp dont voici l'Output:
Adamchik_Wagon_A:
  Pi = Somme(i>=0) {(-1/4)^i * [2/(4*i+1) + 2/(4*i+2) + 1/(4*i+3)]}
  n= 2: pi=3.11428571428571
  n= 4: pi=3.14067876567877
  n= 6: pi=3.14155370078473
  n= 8: pi=3.14159080712064
  n=10: pi=3.14159256065082
  n=12: pi=3.14159264872791
  n=14: pi=3.14159265332852
  n=16: pi=3.14159265357547
  n=18: pi=3.14159265358900
  n=20: pi=3.14159265358975
  n=22: pi=3.14159265358979
precis: pi=3.14159265358979

Adamchik_Wagon_B:
  Pi = Somme(i>=0) {(-0.25^i) * [2/(4*i+1) + 2/(4*i+2) + 1/(4*i+3)]}
  n= 2: pi=3.11428571428571
  n= 4: pi=3.14067876567877
  n= 6: pi=3.14155370078473
  n= 8: pi=3.14159080712064
  n=10: pi=3.14159256065082
  n=12: pi=3.14159264872791
  n=14: pi=3.14159265332852
  n=16: pi=3.14159265357547
  n=18: pi=3.14159265358900
  n=20: pi=3.14159265358975
  n=22: pi=3.14159265358979
precis: pi=3.14159265358979


Voir aussi Wiki: Formule BBP, Pi sayısı.
pi314: L'univers de Pi.
Wolfram MathWorld: Pi Formulas.
 
 
Bonne lecture ...

Codes Sources

A voir également

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.