Page 1 sur 1
Bizarre
Publié : mar. oct. 20, 2009 7:43 am
par slejoly
Bonjour, quand je rentre :
ApproxNombredOr(n):={
a:=sqrt(1);
k:=1;
Or:=(1+sqrt(5))/2;
tantque Or-a>10^(-n)faire a:=sqrt(1+a) ; k:=1+k;ftantque;
return(k); }
ApproxNombredOr(14) renvoie 29
puis
ApproxNombredOr(15) renvoie 31
et ApproxNombredOr(16) puis 17 18 etc. renvoient toujours 32.
Qu'est-ce qui bloque ce compteur à 32 ?
Testé sous windows+ xcas 0.8.1
Stéphane Lejoly
Re: Bizarre
Publié : mar. oct. 20, 2009 8:14 am
par parisse
C'est la facon dont le test > est effectue. En effet, il y a evaluation numerique en utilisant la precision en vigueur au moment du test. Il y a donc meme un risque de bouclage infini. Il faut en effet s'assurer que la perte de precision due a la soustraction de 2 nombres flottants proches ne perturbe pas la validite du test, ce qui se fait en changeant la precision, disons au moins a n+4 ou n+5 Digits.
Je viens d'ailleurs de detecter et corriger un petit bug sur ce type de tests grace a cet exemple.
Re: Bizarre
Publié : mar. oct. 20, 2009 11:40 am
par slejoly
Cela signifie qu'en modifiant comme cela :
ApproxNombredOr(n):={
a:=sqrt(1);
k:=1;
Or:=(1+sqrt(5))/2;
DIGITS:=n+5;
tantque Or-a>10^(-n)faire a:=sqrt(1+a) ; k:=1+k;ftantque;
return(k); }
cela devrait marcher ?
Re: Bizarre
Publié : mar. oct. 20, 2009 12:22 pm
par parisse
oui (sauf si vous tombez sur le bug que j'ai corrige ce matin).
Re: Bizarre
Publié : mar. oct. 20, 2009 3:45 pm
par slejoly
D'accord, donc au lycée il faudrait je demande de réinstaller (dans quelque jours) Xcas et les élèves qui font le TPE réinstalleront Xcas chez eux une fois le paquet corrigé.
Merci.
Stéphane Lejoly
Re: Bizarre
Publié : lun. nov. 09, 2009 2:11 pm
par slejoly
Bonjour, avec la dernière version Debian :
Code : Tout sélectionner
ApproxNombredOr(n):={
a:=sqrt(1);
k:=1;
Or:=(1+sqrt(5))/2;
DIGITS:=999;
tantque Or-a>10^(-n)faire a:=sqrt(1+a) ; k:=1+k;ftantque;
return(k); }:;
semble bien marcher mais
Code : Tout sélectionner
ApproxNombredOrBis(n):={
a:=sqrt(1);
k:=1;
Or:=(1+sqrt(5))/2;
DIGITS:=n+5;
tantque Or-a>10^(-n)faire a:=sqrt(1+a) ; k:=1+k;ftantque;
return(k); }
:;
me renvoie une erreur syntaxe xcas pour la ligne
?
Stéphane Lejoly
Re: Bizarre
Publié : lun. nov. 09, 2009 3:22 pm
par parisse
en effet, il faut que je modifie ça, actuellement le membre de droite de l'affectation de Digits doit etre un nombre.
Re: Bizarre +
Publié : lun. nov. 30, 2009 8:09 pm
par slejoly
Bonsoir, en prenant beaucoup de précautions : DIGITS(n+10)
Code : Tout sélectionner
ApproxNombredOr(n):={
local a,k,Or;
DIGITS(n+10);
a:=sqrt(1);
k:=1;
Or:=(1+sqrt(5))/2;
tantque Or-a>10^(-n)faire
a:=sqrt(1+a) ;
k:=1+k;
ftantque;
return(k); }:;
je suis toujours avec ApproxNombredOr(16) -> 32 ; ApproxNombredOr(25) -> 32 ?
De plus, l'export LaTeX ne marche plus bien sous Ubuntu : il ne me sauve que le premier niveau de la session, et surtout Xcas quitte après cet export ? Je n'ai pas ce problème sous Mac.
Stéphane Lejoly
Re: Bizarre
Publié : lun. nov. 30, 2009 8:44 pm
par parisse
C'est l'écriture de la commande Digits, il faut mettre Digits:=n+10;
Pour l'export Latex, je verrai demain!
Re: Bizarre
Publié : lun. nov. 30, 2009 9:44 pm
par slejoly
mettre Digits:=n+10;
très bien, ça marche merci.