Page 1 sur 1

Diagrammes d'applications

MessagePublié: 22 Nov 2012 12:12
par michal
Bonjour,

J'ai un peu cherché sur le forum, mais je n'ai rien trouvé. Je me demande s'il existe un truc prédéfini pour dessiner des applications entre deux ensembles ("patates") à l'aide de flèches qui relient les éléments des deux ensembles.

Merci d'avance, Michal

Re: Diagrammes d'applications

MessagePublié: 22 Nov 2012 15:02
par P.Fradin
Bonjour Michal,

Je ne me souviens pas qu'il y ait eu un truc de fait pour ça, mais je pense que c'est faisable pour des ensembles finis de cardinal raisonnable.
J'essaie de prendre un peu de temps ce week-end pour réfléchir à ça !

J'imagine que c'est pour obtenir ce genre de chose:
application.png
application.png (8.49 Kio) Consulté 47283 fois

Re: Diagrammes d'applications

MessagePublié: 22 Nov 2012 17:09
par michal
Oui, c'est bien de ce type de choses que je veux parler.

Re: Diagrammes d'applications

MessagePublié: 26 Nov 2012 23:05
par P.Fradin
Bon, le week-end est passé et je n'ai pas eu le temps d'écrire cette macro, et ça va être très compliqué cette semaine... Mais je n'oublie pas :mrgreen:

Re: Diagrammes d'applications

MessagePublié: 27 Nov 2012 00:17
par michal
No soucy. Ce n'est pas du tout une urgence. Merci de s'y coller.

Re: Diagrammes d'applications

MessagePublié: 05 Jan 2013 17:26
par P.Fradin
Bonjour et bonne année à tous !

J'ai pris un peu de temps en ces vacances de fin d'année pour faire un modèle permettant de genre de dessin: drawFunction.mod.
Malheureusement l'hébergeur est en rade en ce moment et je ne peux plus mettre de nouveaux documents dans l'espace de téléchargement. Je l'ai donc mis ailleurs en attendant : drawFunction.zip

Edit: l'hébergeur a résolu le problème, un fil a donc été créé pour ce modèle dans le forum adéquat.

Un exemple:
Code: Tout sélectionner
\begin{texgraph}[name=preambule,preload="drawFunction.mod"]
  FrenchBabel:=1,
  initData(
  "E",                           //nom ensemble départ
  ["e_1", "e_2", "e_3", "e_4"],  //liste des éléments de E
  [Color:=blue,FillStyle:=gradient,FillColorB:=seagreen],  //options dessin E
  "F",                           //nom ensemble arrivée
  ["f_1","f_2","f_3","f_4","f_5"],  //liste des éléments de F
  [Color:=blue,FillStyle:=gradient,FillColorB:=pink],   //options dessin F
  [1,3, 2,1, 3,3, 4,2],        //graphe
  [arrowprm:=0.75],[],[arrowprm:=1.25],[arrowprm:=0.75]
 ),
 draw("graph",                     //dessin du graphe
       [Width:=8,Color:=red,graphsize:=12+8*i]    //options globales
     ),

 x:=(poselem(2,1)+poselem(2,3))/2,
 setB("Im(f)",x,[labelsep:=0.2,Color:=gray,FillStyle:=bdiag,
                 StrokeOpacity:=0.5,FillColor:=lightgray,scale:=0.3])       
\end{texgraph}

application.png
application.png (25.13 Kio) Consulté 47216 fois

Re: Diagrammes d'applications

MessagePublié: 05 Jan 2013 18:42
par Joffrey
J'en ai pas besoin en lycée, mais le résultat est chouette !!!

Re: Diagrammes d'applications

MessagePublié: 31 Jan 2013 11:51
par michal
Merci beaucoup. Ca a l'air chouette en effet !

Re: Diagrammes d'applications

MessagePublié: 13 Oct 2014 09:09
par Eric
Bonjour Patrick

Est-ce que tu pourrais donner le code de ton graphique pour le visualiser directement dans TexGraph sans passer par le package Latex ?

Merci d'avance.

Re: Diagrammes d'applications

MessagePublié: 13 Oct 2014 09:18
par P.Fradin
Salut Eric,

Dans l'interface graphique tu charges le modèle drawFunction.mod, un élément graphique est créé, tu l'ouvres et tu colles le code ci-dessous à la place de l'ancien:
Code: Tout sélectionner
[
      FrenchBabel:=1, //si babel est utilisé
      initData(
      "E",                           //nom ensemble départ
      ["e_1", "e_2", "e_3", "e_4"],  //liste des éléments de E
      [Color:=blue,FillStyle:=gradient,FillColorB:=seagreen],  //options dessin E
      "F",                           //nom ensemble arrivée
      ["f_1","f_2","f_3","f_4","f_5"],  //liste des éléments de F
      [Color:=blue,FillStyle:=gradient,FillColorB:=pink],   //options dessin F
      [1,3, 2,1, 3,3, 4,2],        //graphe
      [arrowprm:=0.75],[],[arrowprm:=1.25],[arrowprm:=0.75]
     ),
     draw("graph",                     //dessin du graphe
           [Width:=8,Color:=red,graphsize:=12+8*i]    //options globales
         ),

     x:=(poselem(2,1)+poselem(2,3))/2,
     setB("Im(f)",x,[labelsep:=0.2,Color:=gray,FillStyle:=bdiag,
                     StrokeOpacity:=0.5,FillColor:=lightgray,scale:=0.3])
]

Re: Diagrammes d'applications

MessagePublié: 13 Oct 2014 09:35
par Eric
J'ai fait la mise à jour et j'ai installé DrawFonction. Mais lorsque je demande de charger le modèle, TexGraph ne voit pas DrawFonction. J'ai du rater quelque chose.

Re: Diagrammes d'applications

MessagePublié: 13 Oct 2014 10:24
par P.Fradin
Si tu l'as installé via l'interface graphique, il s'installe tout seul dans le dossier TeXgraphMac.
Pour le charger: F3 et il faut aller le chercher dans le dossier TeXgraphMac.

Re: Diagrammes d'applications

MessagePublié: 13 Oct 2014 10:31
par Eric
Ok, ça marche !!! Merci !

Par hasard, as-tu en stock un schéma représentant une application en visualisant une fibre (avec l'ensemble de départ sous forme patate et l''ensemble d'arrivée représenté en-dessous comme une droite et pour un point d'ensemble d'arrivée la partie de l'ensemble de départ qui est l'image réciproque du singleton point) ? Ça permet de bien visualiser la notion de surjection.
Sinon, je vais m'y coller lorsque j'aurai le temps.

Re: Diagrammes d'applications

MessagePublié: 14 Oct 2014 14:34
par Eric
Voici une première représentation de la fibre de f au-dessus de y_0. J'en ferai certainement une autre, avec un trou dans l'ensemble X, et avec en plus une fibre vide pour un élément de Y sans antécédent.

Re: Diagrammes d'applications

MessagePublié: 14 Oct 2014 17:09
par Eric
Et voila un exemple avec les fibres au-dessus de différents points dans l'ensemble d'arrivée.

Re: Diagrammes d'applications

MessagePublié: 14 Oct 2014 19:41
par Eric
J'ai une question sur TexGraph concernant le dernier diagramme (celui du message précédent). Comment hachurer la partie de X limitée par les verticales y_0 et y_1 (ce qui permettra de visualiser l'image réciproque d'une partie de Y) ?

Re: Diagrammes d'applications

MessagePublié: 14 Oct 2014 21:44
par P.Fradin
Bonsoir,

J'ai modifié le code de l'objet1 ainsi:
Code: Tout sélectionner
[
 Width:=6,
 Droite(-4*i,-4*i+1),
 Arrows:=1, LabelSize:=normalsize,
 LabelSeg(3.5+i,3.5-2*i,"$f$", rotation:=0),
 Label(-4.2-3.75*i,"$Y$",-4.2+3.75*i,"$X$"),
 C:=Get(Mcourbe1),
 A:=1+i,
 A1:=-0.2+i,
 A2:=-1.5+i,
 A3:=-3+i,
 A4:=2.5+i,
 B:=Intersec(Droite(-4*i,-4*i+1),Droite(A,A+i)),
 D:=Intersec(Mcourbe1,Droite(A1,A1+i)),
 D1:=Intersec(Droite(-4*i,-4*i+1),Droite(A1,A1+i)),
 F:=Intersec(Mcourbe1,Droite(A2,A2+i)),G:=Intersec(Mcourbe3,Droite(A2,A2+i)),
 F1:=Intersec(Droite(-4*i,-4*i+1),Droite(A2,A2+i)),
 H:=Intersec(Mcourbe1,Droite(A3,A3+i)),
 H1:=Intersec(Droite(-4*i,-4*i+1),Droite(A3,A3+i)),
 I1:=Intersec(Droite(-4*i,-4*i+1),Droite(A4,A4+i)),
 Arrows:=0,
 // pour la zone hachurée, clipping
 SaveWin(), view(Re(F1),Re(D1),-5,5),
 FillStyle:=bdiag, FillColor:=black,
 Ligne(C,1), FillStyle:=none, Color:=black,
 RestoreWin(),
 //retour au dessin
 Seg(D[1],D[2]), Seg(F[1],G[1]), Seg(F[2],G[2]), Seg(H[1],H[2]),
 LineStyle:=dashed, Width:=4, Seg(A,B),
 Seg(D1,D[2]), Seg(F1,F[2]), Seg(H1,H[1]), Ddroite(I1,A4),
 DotStyle:=times, DotSize:=3*(1+i),
 LabelDot(A,"$x$","N",1), LabelDot(B,"$f(x)$","S",1),
 LabelDot(D1,"$y_{0}$","S",1), LabelDot(F1,"$y_{1}$","S",1),
 LabelDot(H1,"$y_{2}$","S",1), LabelDot(I1,"$y_{3}$","S",1)
]

Fibre3.png
Fibre3.png (6.84 Kio) Consulté 46981 fois

Puis j'ai rempli la courbe3 de blanc.

Re: Diagrammes d'applications

MessagePublié: 14 Oct 2014 21:51
par Eric
Je te remercie. Je regarde cela de près très vite et j'en posterai d'autres qui vont dériver de celui-ci.

Re: Diagrammes d'applications

MessagePublié: 17 Sep 2017 11:30
par Eric
Je reviens avec un nouveau problème (ça faisait un bout de temps). Je suis toujours sur mes représentations de fibres.

Je souhaite hachurer l'intersection des deux domaines dans le fichier suivant et en plus abaisser des vertical correspondant aux points extrêmes de l'intersection (une partie s'y trouve déjà mais je ne sais pas comment récupérer les deux manquants). Comment faire ?
Merci d'avance

Re: Diagrammes d'applications

MessagePublié: 17 Sep 2017 13:57
par P.Fradin
Bonjour Eric,

Content de te revoir sur le forum !
Pour ton problème, il n'y a pas de macro toute faite parce que tes deux formes ne sont pas convexes, il faut donc chercher les points d'intersection et construire à la main, le contour de la partie commune en découpant les deux formes. J'ai modifié ton élément graphique nommé objet1 ainsi:
Code: Tout sélectionner
[
     Width:=6,
     Droite(-2*i,-2*i+1),
     Arrows:=1, LabelSize:=footnotesize,
     LabelSeg(4.5+i,4.5-i,"$f$",rotation:=0),
     Label(-4.3-1.75*i,"$Y$",-3.5+2.5*i,"$A_{1}$",3.6+2.5*i,"$A_{2}$"),
   
     A0:=Get(Mcourbe1), L0:=Get(Mcourbe2),
     A:=min(A0),B:=max(A0),
     L:=min(L0),M:=max(L0),
   
     C:=Intersec(Droite(-2*i,-2*i+1),Droite(A,A+i)),
     D:=Intersec(Droite(-2*i,-2*i+1),Droite(B,B+i)),
     N:=Intersec(Droite(-2*i,-2*i+1),Droite(L,L+i)),
     P:=Intersec(Droite(-2*i,-2*i+1),Droite(M,M+i)),
     Arrows:=0,
     LineStyle:=dashed, Width:=4,
     Seg(A,C-i),  Seg(B,D-i), Seg(L,N-1.5*i), Seg(M,P-1.5*i),
    //modifications
     S:=A0 InterL L0, // points d'intersection pour découper A0 et L0
     D1:= [(A0 CutB S[1]) CutA S[2], (L0 CutB S[2]) CutA S[1]], //morceau du haut
     D2:= [(A0 CutB S[3]) CutA S[4], (L0 CutB S[4]) CutA S[3]],//morceau du bas
     U:=min(D1), V:=max(D2), Ddroite(U,U-i),Ddroite(V,V-i), //traits verticaux
     FillStyle:=bdiag, FillColor:=black, LineStyle:=noline,
     Line([D1,jump,D2],1)
    ]


Fibre_inter.png
Fibre_inter.png (8.33 Kio) Consulté 43063 fois

Re: Diagrammes d'applications

MessagePublié: 17 Sep 2017 14:03
par Eric
Je te remercie. C'est exactement ce que je voulais.