Bonjour,
Nombre d'or: phi = (1 + sqrt(5)) / 2 = 1.618033988749...
J'ai trouvé deux formules équivalentes qui relient pi et le nombre d'or:
Pi = 4 * Somme(i>=0) [1/phi^(2*i+1) + 1/phi^(6*i+3)] * (-1)^i / (2*i+1)
Pi = 4 * Somme(i>=0) [(phi-1)^(2*i+1) + (2*phi-3)^(2*i+1)] * (-1)^i / (2*i+1)
Avec chacune, on obtient pi avec la précision double en 32 itérations.
Cet article fait partie de la série CodeS-SourceS:
Approximations de Pi.
Voici d'abord deux codes basés sur la première formule:
const double phi=(1+sqrt(5.0))/2, phi2=phi*phi, phi6=phi2*phi2*phi2;
double NombreOr_A(int n) {
double pi=0, a=-phi, b=a*phi2;
for (int i=0; i<n; ++i) {
a/=-phi2;
b/=-phi6;
pi+=(a+b)/(2*i+1);
}
return 4*pi;
} // Pi = 4 * Somme(i>=0) (-1)^i / (2*i+1) * [1/phi^(2*i+1) + 1/phi^(6*i+3)]
double NombreOr_B(int n) { // concentré
double pi=0, a=-phi, b=a*phi2;
for (int i=0; i<n; ++i) pi+=((a/=-phi2)+(b/=-phi6))/(2*i+1);
return 4*pi;
} // Pi = 4 * Somme(i>=0) (-1)^i / (2*i+1) * [1/phi^(2*i+1) + 1/phi^(6*i+3)]
Et deux autres basés sur la seconde formule:
Pi = 4 * Somme(i>=0) [(phi-1)^(2*i+1) + (2*phi-3)^(2*i+1)] * (-1)^i/(2*i+1)
const double phi=(1+sqrt(5.0))/2, phi1=phi-1, phi23=2*phi-3;
double NombreOr_C(int n) {
double pi=0, a=-1/phi1, b=-1/(2*phi-3);
for (int i=0; i<n; ++i) {
a*=-phi1*phi1;
b*=-phi23*phi23;
pi+=(a+b)/(2*i+1);
};
return 4*pi;
} // Pi = 4 * Somme(i>=0) [(phi-1)^(2*i+1) + (2*phi-3)^(2*i+1)] * (-1)^i/(2*i+1)
double NombreOr_D(int n) { // concentré
double pi=0, a=-1/phi1, b=-1/(2*phi-3);
for (int i=1, N=2*n; i<N; i+=2) pi+=((a*=-phi1*phi1) + (b*=-phi23*phi23))/i;
return 4*pi;
}
Le
Zip contient le seul fichier source
NombreOr.cpp dont voici l'
Output:
NombreOr_A:
Pi = 4 * Somme(i>=0) [1/phi^(2*i+1) + 1/phi^(6*i+3)] * (-1)^i/(2*i+1)
n= 4: pi=3.13712779751530
n= 8: pi=3.14154350897122
n=12: pi=3.14159194875965
n=16: pi=3.14159264227952
n=20: pi=3.14159265339661
n=24: pi=3.14159265358636
n=28: pi=3.14159265358973
n=32: pi=3.14159265358979
precis: pi=3.14159265358979
NombreOr_B:
Pi = 4 * Somme(i>=0) [1/phi^(2*i+1) + 1/phi^(6*i+3)] * (-1)^i/(2*i+1)
n= 4: pi=3.13712779751530
n= 8: pi=3.14154350897122
n=12: pi=3.14159194875965
n=16: pi=3.14159264227952
n=20: pi=3.14159265339661
n=24: pi=3.14159265358636
n=28: pi=3.14159265358973
n=32: pi=3.14159265358979
precis: pi=3.14159265358979
NombreOr_C:
Pi = 4 * Somme(i>=0) [(phi-1)^(2*i+1) + (2*phi-3)^(2*i+1)] * (-1)^i/(2*i+1)
n= 4: pi=3.13712779751530
n= 8: pi=3.14154350897122
n=12: pi=3.14159194875965
n=16: pi=3.14159264227952
n=20: pi=3.14159265339661
n=24: pi=3.14159265358636
n=28: pi=3.14159265358973
n=32: pi=3.14159265358979
precis: pi=3.14159265358979
NombreOr_D:
Pi = 4 * Somme(i>=0) [(phi-1)^(2*i+1) + (2*phi-3)^(2*i+1)] * (-1)^i/(2*i+1)
n= 4: pi=3.13712779751530
n= 8: pi=3.14154350897122
n=12: pi=3.14159194875965
n=16: pi=3.14159264227952
n=20: pi=3.14159265339661
n=24: pi=3.14159265358636
n=28: pi=3.14159265358973
n=32: pi=3.14159265358979
precis: pi=3.14159265358979
Voir aussi
Wiki:
Nombre d'or.
Des trucs et des maths:
Une formule qui relie pi et le nombre d'or.
Bonne lecture ...
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.