Approximations de Pi: Formule de Madhava de Sangamagrama

Description

Bonjour,

En Inde, vers 1400, Madhava de Sangamagrama a réussi à calculer Pi avec 11 décimales correctes.
La formule qu'il a utilisé se présente sous la forme:
   pi = sqrt(12)*Somme(i >=0){(-1)^i / (2*i+1)*3^i}

Son "record" a été battu en 1424 par le mathématicien perse Al-Kachi (16 décimales).

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

Le code suivant permet de "simuler" les calculs de Madhava de Sangamagrama:
double Madhava_A(int n) {
  double s=1.0, a=1.0;
  for (int i=1; i<n; ++i) {
    a /= -3.0;
    s += a / (2*i+1);
  }
  return sqrt(12.0)*s;
} // pi = sqrt(12)*Somme(i >=0) {(-1)^i / ((2*i+1)*3^i)}
On trouve Pi avec une précision double après 28 itérations.

Codée d'une manière plus condensée ou sans calculer explicitement 2*i+1:
double Madhava_B(int n) { // Plus condensé
  double s=1.0, a=1.0;
  for (int i=1; i<n; ++i) s += (a /= -3.0) / (2*i+1);
  return sqrt(12.0)*s;
}

double Madhava_C(int n) { // Sans calcul explicite de 2*i+1
  double s=1.0, a=1.0;
  for (int i=3, N=2*n; i<N; i+=2) s += (a /= -3.0) / i;
  return sqrt(12.0)*s;
}


Le Zip contient le seul fichier source Madhava.cpp dont voici l'Output:
pi = sqrt(12)*Somme(i >=0){(-1)^i / ((2*i+1) * 3^i)}

Madhava_A:
  n=  2: pi=3.07920143567800
  n=  4: pi=3.13785289159568
  n=  6: pi=3.14130878546288
  n=  8: pi=3.14156871594178
  n= 10: pi=3.14159051093808
  n= 12: pi=3.14159245428765
  n= 14: pi=3.14159263454731
  n= 16: pi=3.14159265173400
  n= 18: pi=3.14159265340616
  n= 20: pi=3.14159265357140
  n= 22: pi=3.14159265358793
  n= 24: pi=3.14159265358960
  n= 26: pi=3.14159265358977
  n= 28: pi=3.14159265358979
précis:  pi=3.14159265358979

Madhava_B:
  n=  2: pi=3.07920143567800
  n=  4: pi=3.13785289159568
  n=  6: pi=3.14130878546288
  n=  8: pi=3.14156871594178
  n= 10: pi=3.14159051093808
  n= 12: pi=3.14159245428765
  n= 14: pi=3.14159263454731
  n= 16: pi=3.14159265173400
  n= 18: pi=3.14159265340616
  n= 20: pi=3.14159265357140
  n= 22: pi=3.14159265358793
  n= 24: pi=3.14159265358960
  n= 26: pi=3.14159265358977
  n= 28: pi=3.14159265358979
précis:  pi=3.14159265358979

Madhava_C:
  n=  2: pi=3.07920143567800
  n=  4: pi=3.13785289159568
  n=  6: pi=3.14130878546288
  n=  8: pi=3.14156871594178
  n= 10: pi=3.14159051093808
  n= 12: pi=3.14159245428765
  n= 14: pi=3.14159263454731
  n= 16: pi=3.14159265173400
  n= 18: pi=3.14159265340616
  n= 20: pi=3.14159265357140
  n= 22: pi=3.14159265358793
  n= 24: pi=3.14159265358960
  n= 26: pi=3.14159265358977
  n= 28: pi=3.14159265358979
précis:  pi=3.14159265358979


Wiki: Madhava de Sangamagrama, Madhava of Sangamagrama
 
 
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.