paramétrer plot dans giac
Modérateur : xcasadmin
paramétrer plot dans giac
Bonjour,
Je teste avec giac (et pas trop xcas) l'énoncé suivant :
<< Représenter dans le plan complexe les 4 racines (en z) de z^4+m*z^2+1 lorsque m décrit R. >>
Le résultat est la réunion du cercle trigonométrique et des deux axes.
Chacune des quatre racines parcourt un quart du cercle trigonométrique si -2 < m < 2.
Le parcours de l'axe réel s'effectue pour m>2 en 4 morceaux ]0,1], [1,+oo[, ]-oo, -1] et [-1,0[.
L'axe imaginaire pur est atteint pour les valeurs m<-2.
J'apprécie que giac traduise automatiquement un nombre complexe en coordonnées du plan 2d.
C'est le premier logiciel de calcul formel que je vois faire cela directement !
En revanche il me reste ces trois questions :
1/ Je n'ai pas trouvé comment superposer plusieurs courbes sur un même graphe.
La commande composée sur une même ligne semble convenir :
plotparam(...graphe_1...) ; plotparam(...graphe_2...) ;
Mais il ne semble pas possible de les saisir sur 2 lignes successives.
plotparam(...graphe_1...) ;
plotparam(...graphe_2...) ;
Le système semble bloquer en attendant que la fenêtre graphique soit fermée.
J'avoue que la méthode de maple avec des variables pouvant contenir des plots est assez efficace.
p1 := plotparam (....) ; p2 := plotparam(....) ; display (p1, p2)
Sage pousse cette logique jusqu'au bout en autorisant l'opérateur + sur les dessins.
p1+p2 est le graphe réunion de p1 et de p2. A l'usage cette synaxe est très agréable !
Comment le faire avec giac sans passer par la souris et xcas.
2/ Peut-on forcer ces graphes à être représenté dans un repère orthonormé directement,
sans devoir cliquer sur le repère orthonormé de la fenêtre du plot ?
L'option équivalente de maple scaling=constrained est à ajouter dans la commande.
La commande xyztrange(...plein de paramètres...) de giac n'a pas d'effet sur le plotparam(....) suivant.
3/ Comme beaucoup d'autres systèmes, la commande plotparam semble relier par des segments les points calculés.
Est-il possible détecter plus ou moins automatiquement ces discontinuités ?
Par exemple ne pas obtenir d'escalier dans le plotparam (t+i*floor(t), t).
Bien cordialement.
F.
Je teste avec giac (et pas trop xcas) l'énoncé suivant :
<< Représenter dans le plan complexe les 4 racines (en z) de z^4+m*z^2+1 lorsque m décrit R. >>
Le résultat est la réunion du cercle trigonométrique et des deux axes.
Chacune des quatre racines parcourt un quart du cercle trigonométrique si -2 < m < 2.
Le parcours de l'axe réel s'effectue pour m>2 en 4 morceaux ]0,1], [1,+oo[, ]-oo, -1] et [-1,0[.
L'axe imaginaire pur est atteint pour les valeurs m<-2.
J'apprécie que giac traduise automatiquement un nombre complexe en coordonnées du plan 2d.
C'est le premier logiciel de calcul formel que je vois faire cela directement !
En revanche il me reste ces trois questions :
1/ Je n'ai pas trouvé comment superposer plusieurs courbes sur un même graphe.
La commande composée sur une même ligne semble convenir :
plotparam(...graphe_1...) ; plotparam(...graphe_2...) ;
Mais il ne semble pas possible de les saisir sur 2 lignes successives.
plotparam(...graphe_1...) ;
plotparam(...graphe_2...) ;
Le système semble bloquer en attendant que la fenêtre graphique soit fermée.
J'avoue que la méthode de maple avec des variables pouvant contenir des plots est assez efficace.
p1 := plotparam (....) ; p2 := plotparam(....) ; display (p1, p2)
Sage pousse cette logique jusqu'au bout en autorisant l'opérateur + sur les dessins.
p1+p2 est le graphe réunion de p1 et de p2. A l'usage cette synaxe est très agréable !
Comment le faire avec giac sans passer par la souris et xcas.
2/ Peut-on forcer ces graphes à être représenté dans un repère orthonormé directement,
sans devoir cliquer sur le repère orthonormé de la fenêtre du plot ?
L'option équivalente de maple scaling=constrained est à ajouter dans la commande.
La commande xyztrange(...plein de paramètres...) de giac n'a pas d'effet sur le plotparam(....) suivant.
3/ Comme beaucoup d'autres systèmes, la commande plotparam semble relier par des segments les points calculés.
Est-il possible détecter plus ou moins automatiquement ces discontinuités ?
Par exemple ne pas obtenir d'escalier dans le plotparam (t+i*floor(t), t).
Bien cordialement.
F.
-
- Messages : 1137
- Inscription : dim. mai 20, 2007 7:09 am
- Localisation : Paris
- Contact :
Re: paramétrer plot dans giac
Bonjour,
pour la 1 la reponse est simple, vous pouvez effectivement ranger les dessins dans des variables, mais la commande pour ne pas afficher (en mode xcas) est :;
donc:
3>> l1:=plot(sin(t),t):;
"Done"
// Time 0
4>> l2:=plot(cos(t),t):;
"Done"
// Time 0
5>> l1,l2
dessinera les 2 sur le meme dessin.
ou toute autre possibilites du genre:
l:=[l1,l2]:;
l*i+1; affiche en tournant et translatant le tout.
a+
Fred
pour la 1 la reponse est simple, vous pouvez effectivement ranger les dessins dans des variables, mais la commande pour ne pas afficher (en mode xcas) est :;
donc:
3>> l1:=plot(sin(t),t):;
"Done"
// Time 0
4>> l2:=plot(cos(t),t):;
"Done"
// Time 0
5>> l1,l2
dessinera les 2 sur le meme dessin.
ou toute autre possibilites du genre:
l:=[l1,l2]:;
l*i+1; affiche en tournant et translatant le tout.
a+
Fred
Re: paramétrer plot dans giac
On peut utiliser indifférement un saut de ligne ou rien pour séparer 2 commandes, l'interpréteur s'en moque et ça marche très bien dans xcas. Par contre avec giac un saut de ligne va provoquer l'exécution immédiate de la commande et donc l'ouverture de la fenêtre graphique correspondante. On peut bien sur stocker des objets graphiques dans des variables, donc faire un p1:=plotparam(...) puis p2:=plotparam(...) et afficher les 2 courbes simultanément en tapant p1; p2; (pas besoin de display donc, le + n'est pas trop conseillé sur des objets graphiques, par contre on peut soustraire 2 points et obtenir un complexe ou ajouter un complexe a un objet graphique).
On peut forcer le repère à être orthonormé avec gl_ortho=true, mais ce n'est pas conseillé car le comportement des commandes de configuration peut alors devenir bizarre pour l'utilisateur. En général, je pense qu'il faut donner au système les paramètres de calcul d'un graphique et laisser l'utilisateur régler les paramètres d'affichage.
Il n'y a pas de moyen de controler pour l'instant les sauts de discontinuité.
Sinon, je comprends que vous ayez envie de tester giac dans un environnement qui vous est familier, mais il faut bien être conscient que vous risquez de rater une partie des possibilités originales de xcas, en particulier pour tout ce qui touche à l'interface (aussi bien les graphiques, que la géométrie interactive formelle avec les curseurs symboliques, le tableur formel, l'éditeur de programmes, le debugger interactif mais aussi l'aide en ligne).
On peut forcer le repère à être orthonormé avec gl_ortho=true, mais ce n'est pas conseillé car le comportement des commandes de configuration peut alors devenir bizarre pour l'utilisateur. En général, je pense qu'il faut donner au système les paramètres de calcul d'un graphique et laisser l'utilisateur régler les paramètres d'affichage.
Il n'y a pas de moyen de controler pour l'instant les sauts de discontinuité.
Sinon, je comprends que vous ayez envie de tester giac dans un environnement qui vous est familier, mais il faut bien être conscient que vous risquez de rater une partie des possibilités originales de xcas, en particulier pour tout ce qui touche à l'interface (aussi bien les graphiques, que la géométrie interactive formelle avec les curseurs symboliques, le tableur formel, l'éditeur de programmes, le debugger interactif mais aussi l'aide en ligne).
Re: paramétrer plot dans giac
C'est ce qui fait le charme de Xcas, il faut construire les cas particuliers soi-même.parisse a écrit :Il n'y a pas de moyen de controler pour l'instant les sauts de discontinuité
Par exemple pour la partie entière, on peut faire (Xcas ou giac):
Code : Tout sélectionner
ep3:=display=epaisseur_ligne_3;ep2:=display=epaisseur_ligne_2;
seq([plot(k,x=k..k+1,ep3),point(k,k,display=epaisseur_point_3+point_point),
segment(k+i*(k-1.2),k+i*(k-0.8),ep2),segment(k+i*(k-1.2),k+0.1+i*(k-1.2),ep2),
segment(k+i*(k-0.8),k+0.1+i*(k-0.8),ep2)],k,-10,10,1)
Re: paramétrer plot dans giac
Je reprends la suggestion de frederic han
Je définis un objet de base sous la forme d'une liste et je construis ses images par les translations de vecteurs k+k*i
mais je crains que L+1 ne translate pas tous les éléments de la liste Lfrederic han a écrit :l:=[l1,l2]:;
l*i+1; affiche en tournant et translatant le tout.
Je définis un objet de base sous la forme d'une liste et je construis ses images par les translations de vecteurs k+k*i
Code : Tout sélectionner
0>> ep3:=affichage=epaisseur_ligne_3;ep2:=affichage=epaisseur_ligne_2;
'affichage'=epaisseur_ligne_3,'affichage'=epaisseur_ligne_2
// Time 0
1>> Objet:=[plot(0,x=0..1,ep3),point(0,affichage=epaisseur_point_3+point_point),segment(1-i*0.2,1+i*0.2,ep2),segment(1-i*0.2,1.1-i*0.2,ep2),segment(1+i*0.2,1.1+i*0.2,ep2)]:;
"Done"
// Time 0
2>> seq(Objet+[(k+k*i)$dim(Objet)],k,-10,10,1)
Re: paramétrer plot dans giac
Je pense que ça devrait marcher si on fait une liste de sous-type groupe:
l:=group[l1,l2];
l:=group[l1,l2];
Re: paramétrer plot dans giac
De quoi donner des envies de retapisser...
Code : Tout sélectionner
Objet:=group[cercle(0,1),carre(1,i)]:;
Objet:=op(seq(Objet+k+k*i,k,-10,10,1)):;
seq(group[Objet]+k*i,k,-10,10,1)
Re: paramétrer plot dans giac
J'ai eu du mal à comprendre pourquoi je n'arrivais pas au même résultat avec apply
En fait la seconde valeur de Objet est une matrice !
Ensuite je me suis aperçu que l'option matrix ne marche pas avec apply (avec map oui), l'exemple de l'aide:
apply(x->x+1,[[1,2,3],[1,2,3]],matrix) renvoie Type Argument Incorrect
En fait la seconde valeur de Objet est une matrice !
Ensuite je me suis aperçu que l'option matrix ne marche pas avec apply (avec map oui), l'exemple de l'aide:
apply(x->x+1,[[1,2,3],[1,2,3]],matrix) renvoie Type Argument Incorrect
Code : Tout sélectionner
Objet:=[cercle(0,1),carre(1,i)]:;
Objet:=seq(apply(x->x+k+k*i,Objet),k,-10,10,1):;
seq(map(Objet,x->x+k*i,matrix),k,-10,10,1)
Re: paramétrer plot dans giac
j'ai change apply, s'il y a un matrix en 3eme position, map est appele en intervertissant les 2 premiers arguments.
Re: paramétrer plot dans giac
Bonjour, et merci à tous,
C'est encore mieux qu'un cours particulier ; j'ai trois professeurs qui m'expliquent giac.
Je suis avec intérêt ces élégants exemples pour mieux entrer dans l'état d'esprit du système.
Sur ma machine l'affectation gl_ortho:=true et le paramètre gl_ortho=true dans le plot ne forcent pas l'affichage dans un repère orthonormé.
Mais je vais bien finir par m'adapter à l'interface xcas...
Par rapport aux autres systèmes giac considère les vecteurs plutôt que les listes.
Je trouve que cela concentre le code car il n'y a pas à taper vector ou matrix à chaque fois.
Cela rapproche le systeme des mathématiques même si l'on perd un peu de cohérence mathématiques lorsque l'on construit les listes de fonctions, l'équations, de chaines de caractères...
Tout mathématicien a rencontré un jour ou l'autre le graphe de fonctions comme
sin(1/x), x*floor(1/x), floor(1/x)*(x*floor(1/x)-1),etc.
Je suis toujours fasciné par les programmes qui tracent efficacement ces graphes et courbes paramétrées
sans faire intervenir l'utilisateur pour traiter à part les singularités.
Et je vois que giac évolue pour améliorer son comportement dans les cas limites.
Bien cordialement.
F.
C'est encore mieux qu'un cours particulier ; j'ai trois professeurs qui m'expliquent giac.
Je suis avec intérêt ces élégants exemples pour mieux entrer dans l'état d'esprit du système.
Sur ma machine l'affectation gl_ortho:=true et le paramètre gl_ortho=true dans le plot ne forcent pas l'affichage dans un repère orthonormé.
Mais je vais bien finir par m'adapter à l'interface xcas...
Par rapport aux autres systèmes giac considère les vecteurs plutôt que les listes.
Je trouve que cela concentre le code car il n'y a pas à taper vector ou matrix à chaque fois.
Cela rapproche le systeme des mathématiques même si l'on perd un peu de cohérence mathématiques lorsque l'on construit les listes de fonctions, l'équations, de chaines de caractères...
Tout mathématicien a rencontré un jour ou l'autre le graphe de fonctions comme
sin(1/x), x*floor(1/x), floor(1/x)*(x*floor(1/x)-1),etc.
Je suis toujours fasciné par les programmes qui tracent efficacement ces graphes et courbes paramétrées
sans faire intervenir l'utilisateur pour traiter à part les singularités.
Et je vois que giac évolue pour améliorer son comportement dans les cas limites.
Bien cordialement.
F.
Re: paramétrer plot dans giac
(de retour...)
Dans le but d'expérimenter une méthode de "plot" qui tienne compte des discontinuités et de la régularité des fonctions, je me demande s'il est possible de passer des valeurs par défaut à un paramètre à une fonction.
Le noyau de giac le permet : plot (...) ne demande pas d'énumérer tous les paramètres.
L'interpréteur peut-il le faire ou dois-je énumérer tous les paramètres lors de l'appel de "ma fonction plot".
D'avance, grand merci !
F.
Dans le but d'expérimenter une méthode de "plot" qui tienne compte des discontinuités et de la régularité des fonctions, je me demande s'il est possible de passer des valeurs par défaut à un paramètre à une fonction.
Le noyau de giac le permet : plot (...) ne demande pas d'énumérer tous les paramètres.
L'interpréteur peut-il le faire ou dois-je énumérer tous les paramètres lors de l'appel de "ma fonction plot".
D'avance, grand merci !
F.
Re: paramétrer plot dans giac
Pas directement, par contre on peut utiliser une fonction a nombre variable d'arguments et lire des arguments optionnels en utilisant args. Par exemple
testargs():={ local y; y:=args; return y[1];}:;
testargs(12,5);
testargs():={ local y; y:=args; return y[1];}:;
testargs(12,5);
Re: paramétrer plot dans giac
Salut,parisse a écrit :Pas directement, par contre on peut utiliser une fonction a nombre variable d'arguments et lire des arguments optionnels en utilisant args. Par exemple
testargs():={ local y; y:=args; return y[1];}:;
testargs(12,5);
il serait pratique d'avoir une option "optional" pour définir une fonction avec un nombre variable de paramètres.
Par exemple :
Code : Tout sélectionner
mafonction(x,optional y,optional z):={
if (y==NULL){
faire ceci} else {faire cela}
etc...
}
A+
Re: paramétrer plot dans giac
tant mieux, parce que je n'ai pas trop d'idées pour le moment pour faire marcher des arguments optionnels (ou même mieux des arguments par défaut).