xcas et scripts

Utilisation de Xcas

Modérateur : xcasadmin

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

Re: xcas et scripts

Message par parisse » jeu. oct. 15, 2009 8:32 am

colin a écrit : 1) Listes, séquences et := =<
J'avais posé un peu plus haut une question concernant := et =< pour les listes car j'avais l'impression que les deux opérateurs avaient le même effet. En fait j'avais confondu liste et séquence. Concernant les listes je pense avoir compris comment ça marche := recopie et pas =<. Du coup pour les copies de liste il faut utiliser a:=copy(b) quand on utilise =<. Et du point de vue de l'efficacité (rapidité des calculs), il vaut mieux utiliser =<.
Il semble en revanche que les séquences ne font pas la distinction entre := et =< ce qui me laisse à penser que les deux opérateurs procèdent à une recopie des séquence.
Est-ce le cas ? Est-ce que dans un souci d'efficacité (manipulation de séquences longues), il vaut mieux utiliser des listes que des séquences ?
Dans la documentation html il est également signalé qu'il y une différences entre initialiser une liste par [] ou par [0$0] si on utilise =<. Je crois avoir compris les explications mais les tests que j'ai faits avec Xcas ne montrent aucune différence. ??
il n'y a pas de difference en interne entre liste et sequence, la difference est la facon dont ils s'evaluent en particulier vis-a-vis de l'operateur ,
La difference entre [] et [0$0] c'est que dans le 1er cas si vous modifiez en place le [] avec =< vous modifiez le programme interprete lui-meme et a la prochaine execution, c'est la modification qui sera utilisee et pas le programme original.
Exemple:
f():={ local x; x:=[]; print(x); x[0]=<1; }
puis executez f() deux fois de suite, vous verrez qu'au 2eme coup x est initialise a [1] et pas a [].
2) Nombre de chiffres significatifs en flottants
Il semble que pour une précision supérieure à la précision machine, Digits gère à la fois la précision des calculs et la précision de l'affichage. Il pourrait être intéressant de gérer les deux indépendemment donc d'avoir deux commandes. Pour l'instant la solution que j'ai trouvée est d'utiliser Digits pour la précision de calculs puis evalf(x,n) pour la précision d'affichage, mais il faut le faire à chaque affichage et ne pas oublier les :; à la fin des lignes de calcul.
Xcas fournit-il un moyen de régler le nombre de chiffres de l'affichage sans modifier la précision des calculs ?
Non, l'affichage d'un nombre flottant machine est fait en fonction de la valeur de Digits (et la precision relative des calculs est alors de 53 ou 45 bits selon la version de xcas), mais l'affichage d'un flottant multiprecision est fait en fonction de son nombre de chiffres significatifs, qui est defini au moment de sa creation (soit par la valeur de Digits a ce moment-la, soit par le 2eme argument de evalf).
3) Réglages graphiques
Les fonctions gl_trucs sont-elles documentées quelque part. J'ai essayé
? gl
? gl_x
sans succès
et je ne trouve pas d'information non plus dans la doc html.
en effet, il a l'air de manquer certains parametres dans la doc en francais, vous pouvez les retrouver dans la doc en anglais (doc/en/cascmd_en/node546.html)
Je suis en particulier intéressé par des commandes pour fixer l'échelle, l'autoscale, repère orthonormé, graduations, texte des graduations, ...
Ce qui serait bien en particulier serait de pouvoir dire :
unité en x : ? cm
unité en y : ? cm
(ce qui fournirait un avantage à xcas sur maxima, car à ma connaissance gnuplot ne permet pas de le faire)
il y a gl_x_axis_unit et gl_x_axis_name, etc.
Vous pouvez retrouver la liste dans le source input_lexer.ll et voir si les valeurs sont prises en compte en cherchant dans Graph.cc la chaine GL_
Au fait concernant gnuplot, en jetant un oeil dans les sources de xcas je suis tombé sur un fichier (je ne sais plus lequel) ou il y avait plein de commandes GNUPLOT_machin : ça a un lien avec le grapheur ? D'autre part la commande gnuplot("splot u,v,u+v") (celle de l'aide) retourne 0 et ne dessine rien. Explication ?
[ je déteste cliquer pour régler les paramètres graphiques :-) ]
Il s'agit d'un residu des anciennes versions de xcas qui utilisaient gnuplot pour l'affichage, mais je suis passe a mes propres widgets en raison des limitations de gnuplot (par exemple pour la geometrie, ainsi que la 3-d). Il est desactive dans les sources compiles pour donner xcas, il est peut-etre encore utilise par xcas en ligne pour les graphes dans l'espace.
5) Bug ?
J'ai remarqué qu'en faisant insérer session xcas, si au moment de rentrer le nom de fichier, je change d'avis et je fais cancel cela ferme xcas. Heureusement que xcas propose d'enregistrer avant de fermer !
Bien vu, je corrige!
Merci pour les bugs reports et les interessantes remarques!
a+

Olivier
Messages : 4
Inscription : dim. oct. 04, 2009 8:45 pm
Localisation : Région parisienne

Re: xcas et scripts

Message par Olivier » jeu. oct. 15, 2009 9:31 am

Bonjour,
parisse a écrit :Ce n'est pas un bug, mais bien un comportement different de + et ^ sur une liste, car map et apply considerent la matrice comme une liste.
Je ne comprends pas très bien la logique de ce comportement. De façon générale, y a-t-il moyen de prévoir le résultat d'un apply(f,A) où A est une matrice et f une fonction quelconque ?

---
Olivier
Olivier

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

Re: xcas et scripts

Message par parisse » jeu. oct. 15, 2009 10:39 am

Pour repondre, il faut regarder ce que fait la fonction sur une liste. Par exemple une liste ^2 va renvoyer chaque element ^2, mais une liste +1 additionne au dernier (en considerant la liste comme les coeffs d'un polynome par ordre decroissant).
Je crois que le mieux c'est que je rajoute une fonction matrix_apply.

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

Re: xcas et scripts

Message par parisse » ven. oct. 16, 2009 2:18 pm

Bon, finalement ce sera map qui gérera le cas des matrices, il suffit pour cela d'ajouter matrix comme si c'était un argument de map, par exemple
map(idn(2),x->x+1,matrix)
J'ai mis à jour les versions linux, les autres ce sera pour la semaine prochaine.
a+

Olivier
Messages : 4
Inscription : dim. oct. 04, 2009 8:45 pm
Localisation : Région parisienne

Re: xcas et scripts

Message par Olivier » ven. oct. 16, 2009 2:22 pm

Merci et bravo pour la réactivité !
Olivier

colin
Messages : 7
Inscription : mer. oct. 07, 2009 7:55 am

Re: xcas et scripts

Message par colin » mer. oct. 21, 2009 9:30 am

Il semble que la fonction revert ne fonctionne pas lorsque le premier terme non nul !=1

revert(2x) donne 2x (au lieu de x/2)
revert(2x+x^2) donne 2x-2x^2 (au lieu de x/2-x^2/8)
revert(2x^2) donne 2sqrt(x)

On peut évidemment ramener le coefficient à 1 mais je pense que ce n'était pas le comportement souhaité.

Colin

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

Re: xcas et scripts

Message par parisse » mer. oct. 21, 2009 11:04 am

en effet, une petite etourderie que je corrige, j'essaierai de faire une mise a jour des binaires sur toutes les plateformes d'ici demain soir.
a+

Répondre