Bizarre
Modérateur : xcasadmin
Bizarre
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
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
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.
Je viens d'ailleurs de detecter et corriger un petit bug sur ce type de tests grace a cet exemple.
Re: Bizarre
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 ?
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
oui (sauf si vous tombez sur le bug que j'ai corrige ce matin).
Re: Bizarre
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
Merci.
Stéphane Lejoly
Re: Bizarre
Bonjour, avec la dernière version Debian :
semble bien marcher mais
me renvoie une erreur syntaxe xcas pour la ligne ?
Stéphane Lejoly
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); }:;
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); }
:;
Code : Tout sélectionner
DIGITS:=n+5;
Stéphane Lejoly
Re: Bizarre
en effet, il faut que je modifie ça, actuellement le membre de droite de l'affectation de Digits doit etre un nombre.
Re: Bizarre +
Bonsoir, en prenant beaucoup de précautions : DIGITS(n+10)
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
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); }:;
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
C'est l'écriture de la commande Digits, il faut mettre Digits:=n+10;
Pour l'export Latex, je verrai demain!
Pour l'export Latex, je verrai demain!
Re: Bizarre
très bien, ça marche merci.mettre Digits:=n+10;