Illustration suite arithmétique

Pour toute demande d'aide sur des exemples non finalisés, c'est ici.
Les exemples aboutis et intéressants seront ajoutés aux sous-forums qui suivent.

Règles du forum
Pour toute demande d'aide pour la conception (ou la confirmation d'un code) d'une figure Asymptote, c'est ici.

J'invite ceux qui ont régulièrement des questions à poser à aller dans leur panneau de l'utilisateur pour indiquer dans la signature de leurs messages :

  1. Nom du système d'exploitation (W7 ou Ubuntu 12.04 ou ...)
  2. Version d'Asymptote et éditeur utilisé pour les figures Asymptote
  3. Distribution LaTeX et éditeur utilisé pour les tex.


On va gagner du temps dans les réponses !
Nico56
Messages : 52
Enregistré le : lun. 12 janv. 2015, 16:06

Illustration suite arithmétique

Message non lu par Nico56 » lun. 25 mai 2015, 22:57

Bonsoir, j'ai récupéré un code sur la galerie, j'aimerai l'adapter mais je n'y arrive pas.
Beaucoup de lignes restent mystérieuse et j'ai beau chercher, je ne comprends pas...
Mon but est d'illustrer les 4 premiers termes de la suite puis u_{n-1} et u_n en faisant apparaître des pointillés entre u_3 et u_n et en faisant une grande flèche entre u_0 et u_n comme j'ai pu le faire.
J'aimerai aussi pouvoir avoir une flèche polygonale (vers le haut, puis vers la droite, puis vers le bas).
Merci d'avance pour votre aide!
Nico

Figure asymptote 236604d2741395ddc3c4a05c15325cbe
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. import graph;
  2. unitsize(0.5cm);
  3. real u0=0, r=3;
  4. int n=8;
  5. object objtemp, ui[];
  6. pair z[];
  7. for(int k=0; k<=n; ++k){
  8. z.push(u0+k*r); // je ne comprends pas cette ligne...
  9. objtemp = draw(Label(format("$u_%i$",k),align=N),ellipse,z[k],nullpen); // Comment est créé z[k]?
  10. ui.push(objtemp); // je ne comprends pas cette ligne...
  11. }
  12.  
  13. // Du "deferred drawing" pour le tracé des flèches entre les "objects".
  14. add(new void(picture pic, transform t) {
  15. draw(pic,Label("$+n\times r$",align=LeftSide),
  16. point(ui[0],SSE,t){SE}..{NE}point(ui[n],SSW,t),
  17. Arrow);
  18. draw(pic,Label("$+r$",align=LeftSide),
  19. point(ui[n-1],NE,t){N}..{S}point(ui[n],N,t),
  20. Arrow);
  21. for(int k=0; k<n/2; ++k)
  22. draw(pic,Label("$+r$",align=LeftSide),
  23. point(ui[k],NE,t){N}..{S}point(ui[k+1],N,t),
  24. Arrow);
  25. });
  26. xaxis(Ticks("%",Step=3,step=0,Size=1mm));
Windows 10 - Asymptote(2.32)+texlive - Editeur: texmaker (4.5)

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1337
Enregistré le : dim. 7 mars 2010, 14:50

Re: Illustration suite arithmétique

Message non lu par GM » mar. 26 mai 2015, 18:13

Figure asymptote 490d62b0babccbadff7a9ac5d19877a5
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. import graph;
  2. unitsize(0.5cm);
  3.  
  4. real u(int n){return 3*n;}
  5.  
  6. object objtemp, up[], ud[];
  7. real termes[];
  8.  
  9. int listeIND[][] = {{0,1,2,3,4},{5,6},{7,8,9}};
  10. string listeLAB[] = {"n-1","n","n+1"};
  11.  
  12. for(int k=0; k<listeIND[0].length; ++k){
  13. int rang=listeIND[0][k];
  14. termes.push(u(rang));
  15. objtemp = draw(Label(format("$u_{%i}$",rang),align=N),ellipse,(u(rang),0),nullpen);
  16. up.push(objtemp);
  17. }
  18.  
  19. for(int k=0; k<listeIND[2].length; ++k){
  20. int rang=listeIND[2][k];
  21. termes.push(u(rang));
  22. objtemp = draw(Label("$u_{"+listeLAB[k]+"}$",align=N),ellipse,(u(rang),0),nullpen);
  23. ud.push(objtemp);
  24. }
  25.  
  26. // Du "deferred drawing" pour le tracé des flèches entre les "objects".
  27. add(new void(picture pic, transform t) {
  28. for(int k=0; k<up.length-1; ++k)
  29. draw(pic,Label("$+r$",align=LeftSide),
  30. point(up[k],NNE,t){N}..{S}point(up[k+1],N,t),
  31. Arrow);
  32. for(int k=0; k<ud.length-1; ++k)
  33. draw(pic,Label("$+r$",align=LeftSide),
  34. point(ud[k],NNE,t){N}..{S}point(ud[k+1],N,t),
  35. Arrow);
  36.  
  37. draw(pic,Label("$+n\times r$",align=LeftSide),
  38. point(up[0],SSE,t){SE}..{NE}point(ud[ud.length-2],SSW,t),
  39. Arrow);
  40. });
  41. xaxis(Ticks("%",termes,Size=1mm));


Version provisoire... mais j'ai trop de boulot pour terminer l'exemple maintenant.

A noter les lignes :

Code : Tout sélectionner

real u(int n){return 3*n;}
Je définis une fonction pour le terme général de la suite (plutôt que u0 et r)... pour qu'il y ait peu de modifications à apporter, si on décide de représenter les termes d'une suite non arithmétique.

Code : Tout sélectionner

int    listeIND[][] = {{0,1,2,3,4},{5,6},{7,8,9}};
string listeLAB[]   =                    {"n-1","n","n+1"};
listeIND[0] est la liste des indices des premiers termes.
listeIND[1] ne sert à rien pour l'instant mais pour pourrait servir à préciser où créer une rupture dans l'axe des abscisses.
listeIND[2] est la liste des indices des derniers termes... qui sont remplacés à l'affichage par les valeurs de listeLAB.
Modifié en dernier par GM le mer. 27 mai 2015, 12:04, modifié 1 fois.
Raison : Remplacement de listeIND[3] par listeIND[2] dans la dernière ligne
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 10/10/17) :
PC n°1 :Windows 10 - Asymptote(2.41)+MikTeX2.9 - Editeurs : Notepad++ et TeXworks.
Mes autres PC :Ubuntu 16.04LTS - Asymptote(2.42 git) + TexLive2017 - Editeur : TeXworks.
Merci de préciser la votre pour faciliter l'aide des autres !

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1337
Enregistré le : dim. 7 mars 2010, 14:50

Re: Illustration suite arithmétique

Message non lu par GM » mar. 26 mai 2015, 18:57

Suggestion : comme je n'ai pas eu le temps de répondre aux questions du premier script... et comme il pourrait y en avoir d'autres supplémentaires sur le second, je rappelle une astuce :

Quand on ne comprend pas ce que fait une ligne comme celle ci :

Code : Tout sélectionner

z.push(u0+k*r);
on demande d'afficher en console, le contenu de la variable concernée :

Code : Tout sélectionner

write("avant : z=",z);
z.push(u0+k*r);
write("après : z=",z);
ou alors, on fait une recherche sur push dans la doc Asymptote :
Image
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 10/10/17) :
PC n°1 :Windows 10 - Asymptote(2.41)+MikTeX2.9 - Editeurs : Notepad++ et TeXworks.
Mes autres PC :Ubuntu 16.04LTS - Asymptote(2.42 git) + TexLive2017 - Editeur : TeXworks.
Merci de préciser la votre pour faciliter l'aide des autres !

Nico56
Messages : 52
Enregistré le : lun. 12 janv. 2015, 16:06

Re: Illustration suite arithmétique

Message non lu par Nico56 » mar. 26 mai 2015, 19:04

Merci pour ces réponses! Je vais éplucher ça ce soir.
Windows 10 - Asymptote(2.32)+texlive - Editeur: texmaker (4.5)

Répondre