PETIT PROGRAMME DELPHI POUR CALCULER LE NOMBRE PI AVEC UNE APPROXIMATION EPSILON
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 2022
-
10 mars 2006 à 18:12
elguevel
Messages postés718Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention22 novembre 2016
-
21 mars 2006 à 17:29
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
elguevel
Messages postés718Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention22 novembre 20163 21 mars 2006 à 17:29
C'etait pour vous evitez de réinventer la roue !
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202234 21 mars 2006 à 03:52
trés drole Elguevel, mais cela n'est pas interressant pour la technique de calcul de pi.
elguevel
Messages postés718Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention22 novembre 20163 14 mars 2006 à 17:56
uses System;
function Pi: Extended;
@+
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202234 10 mars 2006 à 20:28
>>> Machin
Pi := 4*ArcTan(1/5) - ArcTan(1/239);
Pi := Pi*4;
>>> Machin par Takano
Pi := 12*ArcTan(1/49) + 32*ArcTan(1/57) - 5*ArcTan(1/239) + 12*ArcTan(2/110443);
Pi := Pi*4;
>>> Machin par Stormer
Pi := 44*ArcTan(1/57) + 7*ArcTan(1/239) - 12*ArcTan(1/682) + 24*ArcTan(1/12943);
Pi := Pi*4;
>>> BBP originale
For k := 0 to INF do
Pi := Pi + (1/power(16,k))*( (4/(8*k+1))-(2/(8*k+4))-(1/(8*k+5))-(1/(8*k+6)))
>>> Ramajunan
For k := 0 to INF do
Pi := Pi + ((4*Fact(k))*(1103+26390*k))/(power(Fact(k),4)*power(396,4*k));
Pi := Pi * ((2*sqrt(2))/9801);
>>> Chudnovsky
For k := 0 to INF do
Pi := Pi + ( (Power(-1,k)*Fact(6*k)*(13591409+545140134*k)) )
/ ( Fact(3*k)*power(Fact(k),3)*power(640320,(3*k+3)/2));
Pi := Pi * 12;
>>> Bellard
For i := 0 to INF do begin
i10:= 10*i;
i4 := 4*i;
Pi := Pi + ( power(-1,i)/power(2,10*i) *
(-(32/i4+1)-(1/i4+3)-(256/i10+1)-(64/i10+3)-(4/i10+5)-(4/i10+7)+(1/i10+9)));
end;
Pi := Pi * (1/64);
>>> Archimede
Pi := 223/71;
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202234 10 mars 2006 à 18:12
Salut!
holalala, quelle vielle et lourde methode de calcul de Pi ... mais tout de meme toujours interressant!
Essaye plutot la methode BBP (S.Plouffe) ou BBP de F.Bellard, elle renvois Pi avec une precision de 16 decimale pour 6 passes et le calcul est beaucoup moins lourd et plus rapide.
ou alors tu peu integrer plusieurs formules ce qui serait mathematiquement plus interressant.
ensuite, coté code tu peu eviter toute la gestion d'epsilon en remplacant la saisie de celui-ci par un combobox avec des Eps predefinis (0.1, 0.01, 0.001, 0.0001, 0.00001 ect...)
ce serat plus simple.
par contre, change le Type Real de S,S0 et EPS, par le type Extended qui est plus precis.
21 mars 2006 à 17:29
21 mars 2006 à 03:52
14 mars 2006 à 17:56
function Pi: Extended;
@+
10 mars 2006 à 20:28
Pi := 4*ArcTan(1/5) - ArcTan(1/239);
Pi := Pi*4;
>>> Machin par Takano
Pi := 12*ArcTan(1/49) + 32*ArcTan(1/57) - 5*ArcTan(1/239) + 12*ArcTan(2/110443);
Pi := Pi*4;
>>> Machin par Stormer
Pi := 44*ArcTan(1/57) + 7*ArcTan(1/239) - 12*ArcTan(1/682) + 24*ArcTan(1/12943);
Pi := Pi*4;
>>> BBP originale
For k := 0 to INF do
Pi := Pi + (1/power(16,k))*( (4/(8*k+1))-(2/(8*k+4))-(1/(8*k+5))-(1/(8*k+6)))
>>> Ramajunan
For k := 0 to INF do
Pi := Pi + ((4*Fact(k))*(1103+26390*k))/(power(Fact(k),4)*power(396,4*k));
Pi := Pi * ((2*sqrt(2))/9801);
>>> Chudnovsky
For k := 0 to INF do
Pi := Pi + ( (Power(-1,k)*Fact(6*k)*(13591409+545140134*k)) )
/ ( Fact(3*k)*power(Fact(k),3)*power(640320,(3*k+3)/2));
Pi := Pi * 12;
>>> Bellard
For i := 0 to INF do begin
i10:= 10*i;
i4 := 4*i;
Pi := Pi + ( power(-1,i)/power(2,10*i) *
(-(32/i4+1)-(1/i4+3)-(256/i10+1)-(64/i10+3)-(4/i10+5)-(4/i10+7)+(1/i10+9)));
end;
Pi := Pi * (1/64);
>>> Archimede
Pi := 223/71;
10 mars 2006 à 18:12
holalala, quelle vielle et lourde methode de calcul de Pi ... mais tout de meme toujours interressant!
Essaye plutot la methode BBP (S.Plouffe) ou BBP de F.Bellard, elle renvois Pi avec une precision de 16 decimale pour 6 passes et le calcul est beaucoup moins lourd et plus rapide.
ou alors tu peu integrer plusieurs formules ce qui serait mathematiquement plus interressant.
ensuite, coté code tu peu eviter toute la gestion d'epsilon en remplacant la saisie de celui-ci par un combobox avec des Eps predefinis (0.1, 0.01, 0.001, 0.0001, 0.00001 ect...)
ce serat plus simple.
par contre, change le Type Real de S,S0 et EPS, par le type Extended qui est plus precis.