PETIT PROGRAMME DELPHI POUR CALCULER LE NOMBRE PI AVEC UNE APPROXIMATION EPSILON

Signaler
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
-
Messages postés
718
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
22 novembre 2016
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/36464-petit-programme-delphi-pour-calculer-le-nombre-pi-avec-une-approximation-epsilon

Messages postés
718
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
22 novembre 2016
3
C'etait pour vous evitez de réinventer la roue !
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
31
trés drole Elguevel, mais cela n'est pas interressant pour la technique de calcul de pi.
Messages postés
718
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
22 novembre 2016
3
uses System;

function Pi: Extended;

@+
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
31
>>> 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;
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
31
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.