Approximations de Pi: Formule de Lagny

Description

Bonjour,

Thomas Fantet de Lagny a trouvé cette formule en 1682:
Pi = 6 * [1/(1*3°) - 1/(3*3¹) + 1/(5*3²) - 1/(7*3³) + ...] / racine(3)
Il l'utilisa en 1719 pour calculer 127 décimales de Pi: les 112 premiers étaient corrects !
C'est un exemple de série alternée basée sur le développement de arctangente avec l'argument 1/racine(3).

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

Voici deux codes "équivalents", dont le second est plus condensé et évite de calculer explicitement (2*i + 1):
double Lagny_A(int n) {
  double pi=1, a=1;
  for (int i=1; i<n; ++i) {
    a /= -3;
    pi += a/(2*i+1);
  }
  return 6*pi/1.73205080756887729;
}

double Lagny_B(int n) { // condensé
  double pi=1, a=1;
  for (int i=3, N=2*n+1; i<N; i+=2) pi += (a /= -3) / i;
  return 6*pi/1.73205080756887729;
}
La convergence est assez rapide puisqu'il ne faut 30 itérations pour calculer pi avec la précision double.

Le Zip contient le seul fichier source Lagny.cpp dont voici l'Output:
Lagny_A:
Pi = 6 * [1/(1*3^0) - 1/(3*3^1) + 1/(5*3^2) - 1/(7*3^3) + ...] / racine(3)
  n =  3: Pi=3.15618147156995
  n =  6: Pi=3.14130878546288
  n =  9: Pi=3.14159977381151
  n = 12: Pi=3.14159245428765
  n = 15: Pi=3.14159265952171
  n = 18: Pi=3.14159265340617
  n = 21: Pi=3.14159265359564
  n = 24: Pi=3.14159265358960
  n = 27: Pi=3.14159265358980
  n = 30: Pi=3.14159265358979
  precis: pi=3.14159265358979

Lagny_B:
Pi = 6 * [1/(1*3^0) - 1/(3*3^1) + 1/(5*3^2) - 1/(7*3^3) + ...] / racine(3)
  n =  3: Pi=3.15618147156995
  n =  6: Pi=3.14130878546288
  n =  9: Pi=3.14159977381151
  n = 12: Pi=3.14159245428765
  n = 15: Pi=3.14159265952171
  n = 18: Pi=3.14159265340617
  n = 21: Pi=3.14159265359564
  n = 24: Pi=3.14159265358960
  n = 27: Pi=3.14159265358980
  n = 30: Pi=3.14159265358979
  precis: pi=3.14159265358979


Voir aussi: Thomas Fantet de Lagny.
 
 
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.