DIGITS et evalf
Modérateur : xcasadmin
DIGITS et evalf
Il semble impossible de fixer DIGITS selon la valeur d'un paramètre à l'inétrieur d'une procédure.
Par exemple,
precision(n):={
DIGITS:=n+1;
evalf(sqrt(2));
}
ne fonctionne pas.
Ne pourrait-on avoir un "evalf(sqrt(2),nb de digits)" ?
Par exemple,
precision(n):={
DIGITS:=n+1;
evalf(sqrt(2));
}
ne fonctionne pas.
Ne pourrait-on avoir un "evalf(sqrt(2),nb de digits)" ?
Bonne nouvelle.
Un nouveau problème maintenant avec un test qui ne passe pas.
Voici la mise en route :
Mais ce test ne fonctionne pas :
alors que celui-ci, si :
Un nouveau problème maintenant avec un test qui ne passe pas.
Voici la mise en route :
Code : Tout sélectionner
f:=x->x^2-2:;p:=20:;u0:=2:;
d:=p+size(string(floor(u0)));
k:=0;
un:=evalf(u0-f(u0)/fp(u0),d);
Code : Tout sélectionner
evalf(abs(-f(un)/fp(un)),d)>=evalf(10^(-p),d);
Code : Tout sélectionner
0.5989427408919430005625e-21>=0.9999999999999999999997e-20
On ne peut pas faire descendre la precision des reels en-dessous de 14 chiffres significatifs. La seule chose qu'on peut modifier c'est l'affichage. Donc evalf(...,5) calcule avec 14 chiffres, et ca n'a aucune influence sur le resultat affiche qui depend de Digits. Pour arrondir a 5 chiffres significatifs, il faut actuellement utiliser round. Par exemple round(pi,5).
Je peux peut-etre modifier evalf pour appeler round lorsque le nombre de chiffres est < 14.
Je peux peut-etre modifier evalf pour appeler round lorsque le nombre de chiffres est < 14.