Page 1 sur 1

evalf, DIGITS

Publié : dim. août 09, 2009 6:58 pm
par Guillaume
Bonjour,

pour avoir des approximations de pi avec la méthode d'Archimède j'ai le programme suivant :

Code : Tout sélectionner

archi(d):={
local s,c,t,k,p;
p:=d+1;
epsilon:=1e-300;
s:=3.0;
c:=0.5*sqrt(3);
t:=s/c;
k:=1;
while(evalf(t-s,p)>evalf(10^(-d),p)){
 c:=evalf(sqrt(0.5*(1+c)),p);
 s:=evalf(s/c,p);
 t:=evalf(s/c,p);
 k:=k+1;
 }
return(evalf(s,p),k)
}:;
et impossible de dépasser 10 digits. Si j'écris explicitement

Code : Tout sélectionner

DIGITS:=50:;
archi(30)
j'ai une erreur.

Re: evalf, DIGITS

Publié : dim. août 09, 2009 8:39 pm
par Guillaume
Oups...
En fait, c tend vers 1 donc il faut être prudent avec les evalf et xcas n'est pas du tout en cause !!

Code : Tout sélectionner

archi(d):={
local s,c,t,k,p;
p:=d+3;
epsilon:=1e-300;
s:=3;
c:=sqrt(3)/2;
t:=s/c;
k:=1;
while(evalf((t-s),p)>evalf(10^(-d),p)){
 c:=evalf(sqrt((1+c)/2),p);
 s:=evalf(s/c,p);
 t:=evalf(s/c,p);
 k:=k+1;
 }
s,k
}:;
fonctionne bien