Bonjour,
En fait, il s'agit de fractions continues généralisées.
Le développement en fractions continues est souvent attribué à William Brounker (1620-1684).
Cet article fait partie de la série CodeS-SourceS:
Approximations de Pi.
Une première fraction continue induit le code suivant:
double Fraction_A(int n) {
// 1
// Pi/4 = -----------------------
// 1^2
// 1 + -------------------
// 3^2
// 2 + ---------------
// 5^2
// 2 + -----------
// 7^2
// 2 + -------
// 2 + ...
double f=0;
for (int i=2*n-1; i>0; i-=2) f = (float)i*i/(2 + f);
return 4/(1 + f); // ~ pi
}
Malheureusement, avec 100'000 itérations, on n'obtient Pi qu'avec une précision de trois ou quatre chiffres après la virgule !
Une autre fraction continue donne un résultat un peu meilleur:
double Fraction_B(int n) {
// 1^2
// Pi = 3 + -----------------------
// 3^2
// 6 + -------------------
// 5^2
// 6 + ---------------
// 7^2
// 6 + -----------
// 9^2
// 6 + -------
// 6 + ...
double f=0;
for (int i=2*n-1; i>0; i-=2) f = (float)i*i/(6 + f);
return 3+f; // ~ pi
}
Il lui faut environ 32000 itérations pour atteindre la précision
double.
Le
Zip contient le seul fichier source
FractionContinue.cpp dont voici l'
Output:
Fraction_A:
1
Pi/4 = -----------------------
1^2
1 + -------------------
3^2
2 + ---------------
5^2
2 + -----------
7^2
2 + -------
2 + ...
n= 1: pi=2.66666666666667
n= 10: pi=3.23231580940559
n= 100: pi=3.15149340107099
n= 1000: pi=3.14259165433954
n= 10000: pi=3.14169264359684
n=100000: pi=3.14160265349889
precis: pi=3.14159265358979
Fraction_B:
1^2
Pi = 3 + -----------------------
3^2
6 + -------------------
5^2
6 + ---------------
7^2
6 + -----------
9^2
6 + -------
6 + ...
n= 2000: pi=3.14159265355859
n= 4000: pi=3.14159265358589
n= 6000: pi=3.14159265358864
n= 8000: pi=3.14159265358931
n=10000: pi=3.14159265358954
n=12000: pi=3.14159265358965
n=14000: pi=3.14159265358970
n=16000: pi=3.14159265358973
n=18000: pi=3.14159265358975
n=20000: pi=3.14159265358976
n=22000: pi=3.14159265358977
n=24000: pi=3.14159265358978
n=26000: pi=3.14159265358978
n=28000: pi=3.14159265358978
n=30000: pi=3.14159265358978
n=32000: pi=3.14159265358979
precis: pi=3.14159265358979
Voir aussi
Wiki:
Fraction continue.
pi314:
Brounker.
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.