Contenu de variables

Utilisation de Xcas

Modérateur : xcasadmin

mollet
Messages : 13
Inscription : lun. mai 04, 2009 7:31 am

Contenu de variables

Message par mollet » lun. sept. 14, 2009 2:17 pm

Bonjour,

Je travaille sur un projet qui me demande de définir des variables dépendantes. J'ai différents traitements à effectuer sur ces variables. Le problème est que xcas remplace directement les expressions par le contenu de la variable.

Je m'explique dans l'expression de p[1], j'aimerai gardé explicitement p[0], est ce possible?

// Definition of the homogeneous transformation matrices.
T0G[0]:= Trotz(q[0]) * Tdisp(lc/2,0,0);
T0G[1] := Tdisp(p[1],0,0) * Trotz(-p[0]) * Tdisp(-lr/2,0,0);
T0G[2] := Tdisp(p[1],0,0);

// Dependent parameters.
p[0] := arcsin(lc*sin(q[0])/lr);
p[1] := lc*cos(q[0]) + lr*cos(p[0]);



Merci d'avance

Alexandre
Alexandre Mollet

parisse
Messages : 5882
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Contenu de variables

Message par parisse » lun. sept. 14, 2009 4:38 pm

Oui, c'est possible en indiquant un niveau d'évaluation (2ème paramètre optionnel d'eval) ou en empechant l'évaluation par des quotes. Le niveau d'évaluation désigne le nombre de fois qu'une variable doit être remplacé par son contenu récursivement.
Par exemple
a:=b+1;
b:=c+1;
Attention à l'ordre de définition de a et b, si on définit b avant a, il faudra écrire a:='b'+1 pour que b ne soit pas remplacé par c+1 dans la définition de a.
Ensuite si on fait a+1, ça renvoie c+1+1+1 (b a été remplacé), par contre si on fait eval(a,1)+1 ca renvoie b+1+1 (b n'a pas été remplacé).
Par défaut en mode interactif, le niveau d'évaluation est de 25 (pas plus pour éviter des défintions récursives). Par contre dans un programme, le niveau est de 1. On peut changer ces paramètres dans la configuration (clic sur la ligne d'état, champs eval et prog au début).

mollet
Messages : 13
Inscription : lun. mai 04, 2009 7:31 am

Re: Contenu de variables

Message par mollet » mar. sept. 15, 2009 8:37 am

Merci pour votre réponse mais j'ai quand-même un problème avec l'attribution d'une valeur à une variable. Dans l'exemple ci-dessous:

p[0] := arcsin(lc*sin(q[0])/lr);
tmp[0]:=p[0];
purge(p[0]);
print(p[0]);
p[1] := lc*cos(q[0]) + lr*cos('p[0]');
print(p[1]);
__________________________________
p[0] --> asin((lc*sin(q[0]))/lr)
p[1] --> lc*cos(q[0])+lr*cos(p[0])

Il ne m'enlève pas la valeur de la variable...

Par contre, lorsque je veux que l'utilisateur rentre la valeur d'une variable:
Input("Quel est le nom du fichier ? ",FichierUtil);
Il n'y a rien dans la variable Fichier Util...

J'avoue que je suis un peu perdu...
Alexandre Mollet

parisse
Messages : 5882
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Contenu de variables

Message par parisse » mar. sept. 15, 2009 11:44 am

C'est parce que p[0] n'est pas un nom de variable. Lorsque vous ecrivez
p[0] := arcsin(lc*sin(q[0])/lr);
vous creez une table (dans la variable p) avec une entree 0 -> arcsin(lc*sin(q[0])/lr). Et xcas ne fait rien pour purge(p[0]). Il faudrait faire purge(p) mais ca effacerait aussi p[1].
Je pense que je vais modifier ca et faire que purge(p[0]) efface l'entree 0 de la table p.
Pour Input, ca marche bien chez moi, est-ce que vous utilisez la derniere mise a jour de Xcas et si oui pour quel OS?

mollet
Messages : 13
Inscription : lun. mai 04, 2009 7:31 am

Re: Contenu de variables

Message par mollet » jeu. sept. 17, 2009 12:24 pm

Bonjour,

Je pense que je vais pouvoir m'en sortir. Une dernière question, les champs eval et prog peuvent-ils être modifiés en cours de programme? Quelles sont les instructions à taper dans un programme pour modifier ces champs dans le programme et pas dans le paramétrage config xcas > ...

Merci d'avance
Alexandre Mollet

parisse
Messages : 5882
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Contenu de variables

Message par parisse » jeu. sept. 17, 2009 12:41 pm

J'ai fait la modif pour que purge(p[0]) marche (version win a jour, les autres prochainement).
Pour la gestion des niveaux d'evaluation, il n'y a actuellement pas de commandes Xcas mais c'est assez facile a ajouter, par exemple on pourrait definir eval_level et prog_eval_level.

mollet
Messages : 13
Inscription : lun. mai 04, 2009 7:31 am

Re: Contenu de variables

Message par mollet » ven. sept. 18, 2009 10:34 am

OK, Pourriez-vous me tenir informer si vous pouvez faire ces modifications?
Si oui, me dire dans quelle version je pourrai les retrouver?

Merci c'avance,

Alexandre Mollet

PS: Mon programme se termine, je vous enverrai un descriptif précis du tout quand il sera terminé. Merci encore pour votre aide et votre réactivité lors des derniers mois.
Alexandre Mollet

parisse
Messages : 5882
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Contenu de variables

Message par parisse » ven. oct. 02, 2009 10:28 am

j'ai oublie de vous dire que j'ai mis a jour la version de xcas pour win (et autres os), avec la commande eval_level qui je l'espere fonctionne!

Répondre