evalf, DIGITS

Utilisation de Xcas

Modérateur : xcasadmin

Guillaume
Messages : 112
Inscription : sam. janv. 20, 2007 8:48 pm
Contact :

evalf, DIGITS

Message par Guillaume » dim. août 09, 2009 6:58 pm

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.

Guillaume
Messages : 112
Inscription : sam. janv. 20, 2007 8:48 pm
Contact :

Re: evalf, DIGITS

Message par Guillaume » dim. août 09, 2009 8:39 pm

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

Répondre