xcas et scripts

Utilisation de Xcas

Modérateur : xcasadmin

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

xcas et scripts

Message par colin » ven. oct. 09, 2009 5:29 pm

Bonjour,

Après avoir abandonné maple pour maxima (pour raison de gratuité), je songe à utiliser xcas dont la syntaxe me semble plus naturelle que maxima. Je suis déjà très satisfait de xcas. Il y a cependant certaines fonctionnalités que je trouve intéressante dans maxima maple et aussi matlab (je sais que ce n'est pas un logiciel de calcul formel) que je ne trouve pas dans xcas. J'aimerais savoir si elles existent
[ la plupart des questions concernent l'utilisation de xcas à partir de fichiers scripts (à la matlab voire maxima) plutôt qu'avec des feuilles de calculs ]

1) calculer le développement limité de f^(-1) à partir de celui de f (fonction revert de maxima, je n'ai pas trouvé dans maple non plus)

2) boucles for et affichage
Avec matlab
for i=1:5
i
end
provoque l'affichage 1 2 3 4 5
tandis que
for i=1:5
i;
end
n'affiche rien (avec matlab le ; à la fin indique de ne pas afficher)
tandis qu'avec xcas
for i from 1 to 5 do
i;
od;
n'affiche que 5. Est-il possible d'obtenir le même résultat que matlab (sans placer des print à chaque ligne)
rq : je crois que maple le permet en mettant des : à la fin des instructions, mais pas maxima

3) scripts
J'aime bien aussi le principe de Matlab d'écrire des suites d'instructions dans des fichiers scripts.
Tentant de le faire avec xcas je me heurte à un poblème similaire au précédent concernant l'affichage des résulats et surtout des graphiques. Par exemple, si le fichier toto.cas contient
a:=1;
b:=2:
alors read("toto.cas") donne
[Done, Done]
alors que je préfèrerais quelque chose comme
2
Done (ou même rien du tout)
et c'est pire avec des instructions graphiques comme
plot(sin(x),x=0..1);
a:=2;
qui affiche le graphique en texte.
(je pense qu'une possibilité est d'utiliser DispG mais alors j'ai un autre problème, voir 3))
Est-ce que cette manière de procéder vous semble intéressante, ou bien est-il préférable de sauver des feuilles de calculs pour sauvegarder des blocs d'instructions
[ En fait j'aimerais pouvoir écrire dans un fichier texte les instructions et que read donne le même résultat que si j'avais tapé
instr 1 enter
instr 2 enter
instr 3 enter ...]

3) export de graphiques
Si on exporte un graphique en pstricks en cliquant sur les bon boutons de la fenêtre graphique j'obtiens le résultat attendu. Mais je préférerais utiliser une commande comme graph2tex (pour avoir quelque chose de plus reproductible). J'ai remarqué qu'alors le graphique ne remplit pas exactement la fenêtre contrairement la première méthode. Ma question est donc doit-on toujours spécifier dans ce cas le xmin, xmax, ymin, ymax.

4) ligne de commande et graphiques
avec giac peut-on garder la main quand on ouvre un graphique ( quelque chose comme le & de linux) et ainsi pouvoir ouvrir plusieurs graphiques successivement (maxima et matlab le permettent).

Colin

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

Re: xcas et scripts

Message par parisse » sam. oct. 10, 2009 6:34 am

bonjour,
1) calculer le développement limité de f^(-1) à partir de celui de f (fonction revert de maxima, je n'ai pas trouvé dans maple non plus)
vous pouvez donner un exemple d'utilisation?
2) boucles for et affichage
Avec matlab
for i=1:5
i
end
provoque l'affichage 1 2 3 4 5
tandis que
for i=1:5
i;
end
n'affiche rien (avec matlab le ; à la fin indique de ne pas afficher)
tandis qu'avec xcas
for i from 1 to 5 do
i;
od;
n'affiche que 5. Est-il possible d'obtenir le même résultat que matlab (sans placer des print à chaque ligne)
rq : je crois que maple le permet en mettant des : à la fin des instructions, mais pas maxima
Xcas fait une distinction très claire entre afficher un résultat (commande print) et renvoyer un résultat. Ce que vous voulez ici c'est renvoyer un résultat contenant plusieurs évaluations d'une boucle, il vous faut donc une variable supplémentaire pour accumuler les résultats, par exemple en syntaxe maple res:=NULL; for j from 1 to 5 do res:=res,j; od; res;
3) scripts
J'aime bien aussi le principe de Matlab d'écrire des suites d'instructions dans des fichiers scripts.
Tentant de le faire avec xcas je me heurte à un poblème similaire au précédent concernant l'affichage des résulats et surtout des graphiques. Par exemple, si le fichier toto.cas contient
a:=1;
b:=2:
alors read("toto.cas") donne
[Done, Done]
alors que je préfèrerais quelque chose comme
2
Done (ou même rien du tout)
et c'est pire avec des instructions graphiques comme
plot(sin(x),x=0..1);
a:=2;
qui affiche le graphique en texte.
(je pense qu'une possibilité est d'utiliser DispG mais alors j'ai un autre problème, voir 3))
Lorsque vous écrivez plusieurs instructions sur une ligne de commande, c'est la dernière qui détermine le type d'affichage (il n'y a qu'un widget en réponse à une ligne de commande). Les fichiers de script sont plutot utiles avec giac (mais alors pas pour afficher des graphiques), l'équivalent en xcas c'est de sauver une session et de la faire exécuter (raccourci F9, on peut aussi forcer l'exécution d'une session au démarrage en rajoutant exec=true à la fin de la 1ère ligne // xcas version=...)
Est-ce que cette manière de procéder vous semble intéressante, ou bien est-il préférable de sauver des feuilles de calculs pour sauvegarder des blocs d'instructions
[ En fait j'aimerais pouvoir écrire dans un fichier texte les instructions et que read donne le même résultat que si j'avais tapé
instr 1 enter
instr 2 enter
instr 3 enter ...]
vous pouvez créer un fichier texte et le faire exécuter par xcas, par exemple
// xcas version=0.9.0 fontsize=20 font=0 exec=true
1+2;
2+3;
3) export de graphiques
Si on exporte un graphique en pstricks en cliquant sur les bon boutons de la fenêtre graphique j'obtiens le résultat attendu. Mais je préférerais utiliser une commande comme graph2tex (pour avoir quelque chose de plus reproductible). J'ai remarqué qu'alors le graphique ne remplit pas exactement la fenêtre contrairement la première méthode. Ma question est donc doit-on toujours spécifier dans ce cas le xmin, xmax, ymin, ymax.
ca doit venir des contraintes de taille de page et de respect des échelles en particulier pour les figures géométriques (orthonormalité du repère). Donc vous souhaiteriez que je rajoute une commande de conversion en ps, je vais y réfléchir.
4) ligne de commande et graphiques
avec giac peut-on garder la main quand on ouvre un graphique ( quelque chose comme le & de linux) et ainsi pouvoir ouvrir plusieurs graphiques successivement (maxima et matlab le permettent).

Colin
[/quote]
Non, pas pour le moment. On peut lancer une commande en tache de fonds avec background mais pas faire afficher plusieurs fenêtres graphiques, ceci n'est possible que dans xcas.

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

Re: xcas et scripts

Message par parisse » sam. oct. 10, 2009 7:58 am

un petit complément: le script pgiac qui permet de créer un fichier latex avec des commandes giac effectue des sorties postscript des figures, en appelant giac avec l'option --texmacs, c'est peut-etre adaptable au type de script que vous voulez réaliser.

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

Re: xcas et scripts

Message par colin » lun. oct. 12, 2009 10:12 am

Pour le dl d'une fonction inverse voici un exemple :

Soit f(x)=cos(x)/sin(x)-1/x (prolongée par continuité en)
on peut calculer son dl en 0
-x/3-x^3/45+...
Comme f est infiniment dérivable et f'(0)!=0, f a une inverse locale g au voisinage de 0 : f(g(x))=0 et g(f(y))=0 pour x et y assez proche de 0.
Tout comme f, g est infiniment dérivable et on peut souhaiter calculer son dl au voisinage de 0. Le problème c'est qu'on n' a pas d'expression pour f^-1.
Il existe un algo qui permet de calculer ce dl à partir de celui de f.

En gros la méthode est
g(x)=ax+bx^2+cx^3+...
on calcule le dl de f(g(x)) par composition : les coefficients dépendent de a, b, c... Comme on sait que f(g(x))=x=x+0x^2+0x^3+... En identifiant on obtient un système linéaire sur a,b,c, ... et on peut donc calculer a, b, c ....

C'est en fait plus un problème d'algèbre que d'analyse : étant donnée une série formelle f(X)=aX+bX^2+cX^3+... (a!=0) déterminer la série formelle g(X) telle que f(g(X)=X.

Si cette méthode n'est pas implémentée dans xcas je pense que ça pourrait être intéressant de l'ajouter (je ne crois pas que ce soit très difficile).


Quelques remarques concernant LaTeX et Xcas :

D'abord un détail : j'ai remarqué que dans le fichier tex obtenu en exportant une session xcas en latex il y avait des commandes du genre
...
\\
\begin{equation}
...
Or placer \\ avant une commande qui fait entrer tex en mode vertical (\vspace, $$...$$ , \begin{qqchose}, nouveau paragraphe par exemple) produit des bad box
Pour le même résultat sans bad box il vaudrait mieux remplacer
\\ par \vspace{\baselineskip}
Je dis que c'est un détail car ça ne se voit dans le fichier dvi (c'est juste affiché à la compilation, mais ça peut être pénible s'il y en a beaucoup).

Concernant les exports graphiques, ma préférence irait plutôt pour metapost
(le langage n'est pas plus compliqué que pstricks) et ça fournit des fichiers postscripts que l'on peut inclure dans un fichier latex aussi bien avec latex que pdflatex. C'est juste une suggestion car je me doute que si vous n'utilisez metapost, ça doit être un peu long à mettre au point.
La possibilité d'exporter en postscript serait intéressante (c'est probablement la solution qui conviendra le mieux à la plupart des utilisateurs)

J'ai remarqué qu'en exportant une session Xcas contenant des séquence contenant des groupes (obtenus avec edit grouper niveaux), le titre des groupes s'affichait en bas du groupe au lieu d'en haut. Est-ce un bug ?


Graphiques

- Peut-on spécifier les échelles X+ X- Y+ Y- par une commande Xcas (autre xyztrange, je ne veux spécifier toutes les options quand je veux n'en changer qu'une !)
- Les graphiques 3D ne fonctionnent pas du tout chez moi. Une idée d'où cela vient ? (ma carte graphique est a priori bien configurée et je n'ai pas touché à la configuration par défaut de Xcas.

Tableaux

Est-ce que la documentation concernant l'affection des tableaux avec
T<=valeur
est à jour ?
Parce que en initialisant mes tableaux par NULL ou par seq(0,0) j'obtiens les mêmes résultats (le même qu'avec T:=valeur)

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

Re: xcas et scripts

Message par parisse » lun. oct. 12, 2009 11:00 am

colin a écrit :Pour le dl d'une fonction inverse voici un exemple :

Si cette méthode n'est pas implémentée dans xcas je pense que ça pourrait être intéressant de l'ajouter (je ne crois pas que ce soit très difficile).
oui, ce n'est pas tres difficile a faire, ce que je voulais plutot comme exemple c'est la suite des instructions que vous tapez avec maxima.
Quelques remarques concernant LaTeX et Xcas :

D'abord un détail : j'ai remarqué que dans le fichier tex obtenu en exportant une session xcas en latex il y avait des commandes du genre
...
\\
\begin{equation}
...
Or placer \\ avant une commande qui fait entrer tex en mode vertical (\vspace, $$...$$ , \begin{qqchose}, nouveau paragraphe par exemple) produit des bad box
Pour le même résultat sans bad box il vaudrait mieux remplacer
\\ par \vspace{\baselineskip}
Je dis que c'est un détail car ça ne se voit dans le fichier dvi (c'est juste affiché à la compilation, mais ça peut être pénible s'il y en a beaucoup).
Le probleme c'est que dans la traduction de l'historique en latex au moment ou je traduis la ligne de commande je ne sais pas encore que ce qui suit sera une equation et qu'il faut que je passe a la ligne. Si remplacer \\ par \vspace{\baselineskip} ne pose pas de problemes pour tous les types de niveaux qui suivent, pourquoi pas, sinon comme ca ne bloque pas je laisserai tel quel (ou alors il me faut un volontaire pour reprendre cette partie du code:-))
Concernant les exports graphiques, ma préférence irait plutôt pour metapost
(le langage n'est pas plus compliqué que pstricks) et ça fournit des fichiers postscripts que l'on peut inclure dans un fichier latex aussi bien avec latex que pdflatex. C'est juste une suggestion car je me doute que si vous n'utilisez metapost, ça doit être un peu long à mettre au point.
non, c'est plutot que j'ai une solution deja implementee et qui fonctionne a peu pres correctement, et qu'implementer l'export en metapost prendrait du temps (il faut la doc de metapost et ensuite reprendre dans tex.cc toutes les fonctions graphiques correspondantes), donc c'est tres loin d'etre prioritaire pour moi, mais comme ci-dessus si quelqu'un veut le faire je l'aiderai volontiers a comprendre les aspects giac.
La possibilité d'exporter en postscript serait intéressante (c'est probablement la solution qui conviendra le mieux à la plupart des utilisateurs)
c'est deja le cas, en fait pour les graphiques la plupart des utilisateurs utilisent l'export EPS/PNG du menu M>Export/Print (qui n'utilise pas latex/pstricks mais directement la conversion du widget graphique FLTK en PS)
J'ai remarqué qu'en exportant une session Xcas contenant des séquence contenant des groupes (obtenus avec edit grouper niveaux), le titre des groupes s'affichait en bas du groupe au lieu d'en haut. Est-ce un bug ?
oui, ca doit etre un bug, je vais regarder. Il y a surement d'autres bugs avec les niveaux dans des groupes...
Graphiques

- Peut-on spécifier les échelles X+ X- Y+ Y- par une commande Xcas (autre xyztrange, je ne veux spécifier toutes les options quand je veux n'en changer qu'une !)
oui, avec gl_x=xmin..xmax, gl_y et gl_z de meme
- Les graphiques 3D ne fonctionnent pas du tout chez moi. Une idée d'où cela vient ? (ma carte graphique est a priori bien configurée et je n'ai pas touché à la configuration par défaut de Xcas.
c'est tres certainement un probleme de configuration de l'acceleration de la carte graphique avec OpenGL. Il faudrait plus d'info sur votre configuration.
Tableaux

Est-ce que la documentation concernant l'affection des tableaux avec
T<=valeur
est à jour ?
Parce que en initialisant mes tableaux par NULL ou par seq(0,0) j'obtiens les mêmes résultats (le même qu'avec T:=valeur)

Essayez les commandes suivantes:
A:=[1,2,3];
B:=A;
A[0]=<2;
B est alors modifie (B renvoie [2,2,3])
Par contre si vous faites A[0]:=3, B n'est pas modifie, parce qu'une copie de la liste modifiee a ete cree et stockee dans A, B pointant sur la liste originale.

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

Re: xcas et scripts

Message par colin » lun. oct. 12, 2009 12:39 pm

Pour le dl d'une fonction inverse avec maxima, il suffit de faire
load("revert")$ pour charger la fonction,
t:taylor(f(x),x,0,5)
pour avoir le dl à l'ordre 5 de f
puis
revert(t,x,5)
donne celui de g à l'ordre 5.

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

Re: xcas et scripts

Message par parisse » lun. oct. 12, 2009 1:26 pm

Apparamment, revert de maxima gere uniquement les DL tels que a1!=0 et effectue le DL de la fonction reciproque en a0. On devrait pouvoir le faire meme si a1=0.

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

Re: xcas et scripts

Message par colin » lun. oct. 12, 2009 3:53 pm

En fait non. Si a_1=0, l'inverse n'a pas de développement limité. D'ailleurs le coefficient d'ordre 1 de g est 1/a_1.

Par exemple pour f(x)=x^3, l'inverse est x^(1/3) et n'a pas de développement limité.

Par contre, si f(x)=x^p+cx^(p+1)+. il est souvent intéressant d'écrire f sous la forme (x*h(x))^p. et h a une dérivée non nulle en 0 et un dl en 0 que l'on peut inverser. C'est d'ailleurs ce que je faisais dans le calcul qui m'a conduit à utiliser maxima pour inverser des dl.
[ c'est pour ça que quand j'ai découvert xcas, j'ai tout de suite cherché s'il avait cette fonction : ce n'est quand même pas le premier truc qu'on recherche dans un logiciel de calcul formel :-) ]

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

Re: xcas et scripts

Message par parisse » lun. oct. 12, 2009 4:06 pm

colin a écrit :En fait non. Si a_1=0, l'inverse n'a pas de développement limité. D'ailleurs le coefficient d'ordre 1 de g est 1/a_1.

Par exemple pour f(x)=x^3, l'inverse est x^(1/3) et n'a pas de développement limité.
oui, je me suis mal exprimé, je voulais dire naturellement un développement en séries en puissances de x^(1/k) où k est le premier indice >0 tel que a_k!=0.
En fait les coefficients de g s'obtiennent par une récurrence en composant le DAS de f à l'ordre n avec le DAS de g connu à l'ordre n-1. Dans le cas où k>1, on peut aussi faire ce type de récurrence, la formule est un chouilla plus complexe.

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

Re: xcas et scripts

Message par colin » mar. oct. 13, 2009 8:04 am

Oui effectivement c'est intéressant et ça aurait pu me rendre service parce que j'étais exactement dans ce cas de figure. Avec une fonction gérant ce cas j'aurais pu éviter quelques manipulations.

En fait je cherchais le dl (qd h tend vers 0) des n+1 racines de
(x-1)(x+1)^n=hx^[n/2]
Ce qui se ramène à inverser f(x)=(x-1)(x+1)^n/x^[n/2] au voisinage de -1 et au voisinage de 1. Et en -1 la dérivée est nulle.

Il faut aussi faire attention qu'il y a p (p=indice du premier coeff non nul) dl possibles pour l'inverse (mais je pense que vous vous en êtes déjà aperçu et de toute façon on le voit en essayant de calculer le premier coeff non nul de f^-1)).
Il suffit de connaitre un de ces dl car ils se déduisent du par composition par les exp(2ik/p)x.
Dans mon exemple, au voisinage de -1, il y a n inverses locales : un dl pour chaque racines.

Petite erreur de ma part dans le message précédent : ce n'est pas h(x) qui a un dl mais xh(h).

Petite vérification concernant les graphiques :
Quand on veut dessiner deux objets en même temps (par exemple une fonction et une ligne polygonale), il m'a semblé qu'il fallait faire
plotfunc(...),plotpolygon(...)
Est-ce bien la méthode prévue par xcas.
D'autre part j'ai un problème dans ce cas :
si je fait plotfunc(func1),plotfunc(func 2)
l'échelle est bien gérée, le graphique rempli toute la fenêtre graphique
En revanche, avec
plotfunc(), plotpolygon() (ou ; à la place de ,)
je suis obligé de régler X+ X-, .. à la main et cliquer sur le bouton autoscale n'améliore pas la situation. Il semble que soit la fonction qui déterminer X+, X-, ... pour l'autoscale.
Est-ce normal ? Y-a-t-il moyen d'y remédier ?

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

Re: xcas et scripts

Message par parisse » mer. oct. 14, 2009 6:27 pm

colin a écrit :Oui effectivement c'est intéressant et ça aurait pu me rendre service parce que j'étais exactement dans ce cas de figure. Avec une fonction gérant ce cas j'aurais pu éviter quelques manipulations.

En fait je cherchais le dl (qd h tend vers 0) des n+1 racines de
(x-1)(x+1)^n=hx^[n/2]
Ce qui se ramène à inverser f(x)=(x-1)(x+1)^n/x^[n/2] au voisinage de -1 et au voisinage de 1. Et en -1 la dérivée est nulle.

Il faut aussi faire attention qu'il y a p (p=indice du premier coeff non nul) dl possibles pour l'inverse (mais je pense que vous vous en êtes déjà aperçu et de toute façon on le voit en essayant de calculer le premier coeff non nul de f^-1)).
Il suffit de connaitre un de ces dl car ils se déduisent du par composition par les exp(2ik/p)x.
Dans mon exemple, au voisinage de -1, il y a n inverses locales : un dl pour chaque racines.
Voila, j'ai ajoute la fonction revert (linux/windows, pas encore recompile sous mac). Ca marche aussi si a_1=0, par contre il faut que le développement ait des exposants entiers (donc on ne peut pas toujours faire 2 revert de suite), mais je ne pense pas que ça soit une limitation réelle en pratique.
Petite vérification concernant les graphiques :
Quand on veut dessiner deux objets en même temps (par exemple une fonction et une ligne polygonale), il m'a semblé qu'il fallait faire
plotfunc(...),plotpolygon(...)
Est-ce bien la méthode prévue par xcas.
il vaut mieux mettre un ; pour des raisons de priorité (par exemple si vous définissez une variable contenant un des objets graphiques).
D'autre part j'ai un problème dans ce cas :
si je fait plotfunc(func1),plotfunc(func 2)
l'échelle est bien gérée, le graphique rempli toute la fenêtre graphique
En revanche, avec
plotfunc(), plotpolygon() (ou ; à la place de ,)
je suis obligé de régler X+ X-, .. à la main et cliquer sur le bouton autoscale n'améliore pas la situation. Il semble que soit la fonction qui déterminer X+, X-, ... pour l'autoscale.
Est-ce normal ? Y-a-t-il moyen d'y remédier ?
en effet il y a un petit bug, l'autoscale devrait tenir compte de tous les objets graphiques...

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

Re: xcas et scripts

Message par parisse » mer. oct. 14, 2009 7:24 pm

Bon, en fin de compte, ce n'est pas vraiment un bug de l'autoscale, c'est du à l'algorithme utilisé. En effet, l'autoscale prend en compte tous les points (du polygone ainsi que les points de la discrétisation du graphe de la fonction) et calcule xmin/xmax/etc. en fonction mais en éliminant les valeurs extrêmes (pour éviter qu'on ne voit presque rien de la fonction avec un zoom mal réglé par exemple si on a une asymptote verticale). C'est pour ça que les valeurs du polygonplot sont exclues car trop peu nombreuses par rapport à celles de la discrétisation de la fonction.
La solution peut etre de spécifier à la main gl_x=xmin..xmax et gl_y=ymin..ymax au début de la ligne de commande.

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

Re: xcas et scripts

Message par colin » jeu. oct. 15, 2009 7:30 am

OK. La solution avec gl_x et gl_y me convient bien.
Merci pour la fonction revert. Je la testerai bientôt, dès que j'aurai mis mon xcas à jour. Merci aussi pour les réponses.

Ayant un peu étudié xcas hier, j'ai d'ailleurs d'autres questions/remarques

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. ??

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 ?

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.
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)
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 :-) ]

4) Appliquer une fonction à une matrice
Y-a-t-il une fonction matrixmap pour appliquer une fonction à une matrice (coefficient par coefficient) ?

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 !

Bon cette fois je crois bien que c'est fini pour les questions :-)
Et encore merci pour les réponses et surtout pour avoir conçu ce magnifique logiciel.

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 7:57 am

Bonjour,
colin a écrit : 4) Appliquer une fonction à une matrice
Y-a-t-il une fonction matrixmap pour appliquer une fonction à une matrice (coefficient par coefficient) ?
A priori, on peut utiliser map et apply. Il y a par contre un bug à ce niveau :

Code : Tout sélectionner

A:=[[1,2,3],[4,5,6]]
          [[1,2,3],[4,5,6]]

apply(x->x^2,A)
          [[1,4,9],[16,25,36]]
Ok, mais :

Code : Tout sélectionner

apply(x->x+1,A)
          [[1,2,4],[4,5,7]]
Ici, seule la dernière colonne est affectée (même comportement avec map).
Olivier

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

Re: xcas et scripts

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

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. J'ai bien un matrix_apply en interne, mais effectivement pas en externe, on peut s'en sortir avec 2 apply imbriques
M:=idn(2); apply(l->apply(x->x+1,l),M)

Répondre