Tableaux de variation avec Asymptote

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

Re: Tableaux de variation avec Asymptote

Message non lu par GM » dim. 21 mars 2010, 17:42

Zaf a écrit :J'ai l'impression que lorsqu'il n'y a pas de valeurs interdites, le sens de variation est obligatoirement alterné, car sur quelques exemples compilés je trouve des tableaux faux.

Tu ne m'as pas bien lu : lire ici le commentaire sur cr, decr

cr, c'est pour déclarer un premier sens de variation croissant... donc une première valeur en bas du tableau, puis une valeur en haut, puis une valeur en bas, etc...
decr, c'est pour déclarer un premier sens de variation décroissant... donc une première valeur en haut du tableau, puis une valeur en bas, puis une valeur en haut, etc...

ainsi, avec l'un ou l'autre, de part et d'autre d'une double barre, on aura le même sens de variation.

Et j'ai dit que pour les cas où cela ne convient pas (10% à 30% des cas ?? - par exemple, si on veut une même limite de chaque côté d'une double barre)... il va falloir :
  • ne mettre : ni cr, ni decr
  • passer en paramètre un real[] (comme dans l'exemple cité dans le lien), pour choisir soi-même les hauteurs.
Je verrai plus tard si j'ajoute des tests... pour augmenter l'automatisme... mais ce n'est pas sûr car je veux pouvoir mettre des lettres (qu'il ne sera pas possible de comparer) au bout des flèches.
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 !

Zaf
Messages : 56
Enregistré le : mer. 17 mars 2010, 07:11

Re: Tableaux de variation avec Asymptote

Message non lu par Zaf » dim. 21 mars 2010, 21:50

J'avais un peu zappé, maintenant ça marche.
Un tableau de plusieurs lignes (signe d'un produit...) n'est pas encore faisable ou il faut modifier quelque chose ?

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

Re: Tableaux de variation avec Asymptote

Message non lu par GM » lun. 22 mars 2010, 14:00

Zaf a écrit :J'avais un peu zappé, maintenant ça marche.
Un tableau de plusieurs lignes (signe d'un produit...) n'est pas encore faisable ou il faut modifier quelque chose ?


Pas encore possible mais, maintenant que je me suis lancé là-dedans, je vais proposer quelque chose... dès que j'aurai un peu de temps.
Par contre, je ne suis pas sûr d'alourdir tabvar ; je préfère proposer quelque chose d'indépendant pour faire des tableaux de signes...
... car comme je l'ai déjà sous-entendu, je suis un peu hostile aux tableaux où tu y mets tout : je suis pour un tableau donnant (voire justifiant) le signe de la dérivée et s'il est demandé, un tableau distinct pour les variations... car j'apprends à mes élèves à faire une distinction entre donner les variations et dresser un tableau de variation.
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 !

Zaf
Messages : 56
Enregistré le : mer. 17 mars 2010, 07:11

Re: Tableaux de variation avec Asymptote

Message non lu par Zaf » lun. 22 mars 2010, 23:12

Dans l'espoir de voir fleurir tes tableaux de signe, je regarde un peu plus la documentation d'Asymptote et j'essaie de comprendre la structure de ton programme tabvar.
Merci et Bon courage.

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

Re: Tableaux de variation avec Asymptote

Message non lu par GM » mar. 23 mars 2010, 19:15

Zaf a écrit :Dans l'espoir de voir fleurir tes tableaux de signe,

Je prends quelques instants pour y réfléchir...
Est-ce que ce serait compliqué/fastidieux de décrire les tableaux ainsi ?

Code : Tout sélectionner

string[] tab1={
"x          @-inf   -2     1   +inf@",
"x-1        @ .   -  |  -  0  +  . @",
"x+2        @ .   -  0  +  |  +  . @",
"(x-1)(x+2) @ .   +  0  -  0  +  . @"
};

string[] tab2={
"x               @-3     -1     4     5 @",
"x+3             @ 0   +  |  +  0  +  . @",
"x+1             @ |   -  0  +  |  +  . @",
"4-x             @ |   +  |  +  0  -  . @",
"(x+3)(x+1)(x+1) @ 0   -  0  +  0  -  . @"
};

add(tabsgn(tab1));



Zaf a écrit :je regarde un peu plus la documentation d'Asymptote

Cela peut servir : je ne l'ai encore lue que par morceaux : il faut que je la relise aussi entièrement et que j'ajoute un exemple pour chaque notion non encore utilisée.

Zaf a écrit :et j'essaie de comprendre la structure de ton programme tabvar.

Quand ce sera une extension véritable, je commenterai... et surtout, j'essaierai d'optimiser.
Pour l'instant, je laisse comme cela... le temps de tester.
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 !

Zaf
Messages : 56
Enregistré le : mer. 17 mars 2010, 07:11

Re: Tableaux de variation avec Asymptote

Message non lu par Zaf » mar. 23 mars 2010, 21:04

Bonsoir,
La réponse est non !
En effet si tu comptes en moyenne le temps que peut passer un prof de maths pour faire un tableau de signe qui est incomparable au temps qu'on mettrait à remplir ces quelques lignes dans ta procédure.
Il est évident qu'il y a toujours moyen d'améliorer et comme tu disais est-ce que cela vaut la peine de de faire quelque chose d'extrêmement compliqué si l'on sait que la fréquence d'utilisation est relativement faible.
Donc tu vois que pour commencer ce serait une très bonne chose.

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

Re: Tableaux de variation avec Asymptote

Message non lu par GM » jeu. 25 mars 2010, 23:04

Une proposition rapide... non suffisamment testée pour être déboguée, non intégrée à gm_tableaux... et pour laquelle, les barres verticales seront à revoir.

Figure asymptote 5b576ee4bd942c5b2bde01afdb9b2da9
*** 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.  
  2. import fontsize;
  3. //usepackage("fourier");
  4. picture tabsgn(string[][] tab, real ul=1, real kx=1.1, real ky=1.2 ,pen p=1bp+black, bool m=true){
  5. picture pic;
  6. string d=(m==true)?"$":"";
  7. pen stylo=fontsize(ul*10pt);
  8. int n=tab.length;
  9. object[] obj=new object[tab.length];
  10. real larg,haut;
  11. for(int k=0; k<n; ++k){
  12. obj[k]=object(Label("$"+tab[k][0]+"$",stylo));
  13. larg=max(larg,(max(obj[k])-min(obj[k])).x);
  14. haut=max(haut,(max(obj[k])-min(obj[k])).y);
  15. }
  16. string[] lx;
  17. lx=split(tab[0][1]," ");
  18. object[] lxo=new object[lx.length];
  19. real xlarg,xhaut,dxl=1.1;
  20. for(int j=0; j<lx.length; ++j){
  21. lxo[j]=object(Label(d+((m==true)?replace(lx[j],"inf","\infty"):lx[j])+d,stylo));
  22. xlarg=max(xlarg,(max(lxo[j])-min(lxo[j])).x);
  23. }
  24. larg*=kx/2; haut*=ky/2; xlarg*=kx*1.5;
  25. draw(pic,(-larg,haut-2n*haut)--(-larg,haut)--(larg,haut)--(larg,haut-2n*haut),p);
  26. for(int k=0; k<n; ++k){
  27. add(pic,shift(0,-2k*haut)*obj[k]);
  28. draw(pic,(-larg,haut-2(k+1)*haut)--(larg,haut-2(k+1)*haut),p);
  29. real L=(lxo.length-1/2)*xlarg;
  30. if(k==0) {
  31. draw(pic,(larg,haut)--(dxl^2*larg+L,haut)--(dxl^2*larg+L,-haut)--(larg,-haut),p);
  32. for(int m=0; m<lxo.length; ++m)
  33. add(pic,shift(dxl*larg+(1/4+m)*xlarg,0)*lxo[m]);
  34. } else {
  35. string[] ly;
  36. ly=split(tab[k][1]," ");
  37. for(int m=0; m<ly.length; ++m)
  38. label(pic,shift(dxl*larg+(1/4+m/2)*xlarg,-k*2haut)*(d+ly[m]+d),stylo);
  39. draw(pic,(dxl^2*larg+L,haut-k*2haut)--(dxl^2*larg+L,-haut-k*2haut)--(larg,-haut-k*2haut),p);
  40. }
  41. }
  42. return pic;
  43. }
  44. string[][] tab={
  45. {"x", "-inf -2 0 1 +inf"},
  46. {"x", " - | - 0 + | + "},
  47. {"x-1", " - | - | - 0 + "},
  48. {"x+2", " - 0 + | + | + "},
  49. {"x(x-1)(x+2)", " - 0 + 0 - 0 + "}
  50. };
  51. add(tabsgn(tab,ul=1.2)); // ul=1.1 pour 11pt, ul=1.2 pour 12pt
  52.  


La description du tableau se présente ainsi :

Code : Tout sélectionner

string[][] tab={
{"x",           "-inf -2 0 1 +inf"},
{"x",           " - | - 0 + | + "},
{"x-1",         " - | - | - 0 + "},
{"x+2",         " - 0 + | + | + "},
{"x(x-1)(x+2)", " - 0 + 0 - 0 + "}
};
La version embarquée dans un tex :

Code : Tout sélectionner

% !TEX TS-program = pdflatex
% !TEX encoding = Latin1
\documentclass[12pt]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[a4paper,%
            hmargin={1cm,1cm},%
            vmargin={1cm,1cm},%
            headheight=15pt,%
            nohead,nofoot]{geometry}
\usepackage{fourier}	
\usepackage[francais]{babel}
\usepackage{graphicx}
\usepackage{amsmath,amsfonts}	
\setlength{\parindent}{0pt}
\usepackage{asymptote}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}

Tableau de signes de l'expression $x(x-1)(x+2)$.

\begin{asy}
import fontsize;
usepackage("fourier");
picture tabsgn(string[][] tab, real ul=1, real kx=1.1, real ky=1.2 ,pen p=1bp+black, bool m=true){
   picture pic;
   string d=(m==true)?"$":"";
   pen stylo=fontsize(ul*10pt);
   int n=tab.length;
   object[] obj=new object[tab.length];
   real larg,haut;
   for(int k=0; k<n; ++k){
       obj[k]=object(Label("$"+tab[k][0]+"$",stylo));
       larg=max(larg,(max(obj[k])-min(obj[k])).x);
       haut=max(haut,(max(obj[k])-min(obj[k])).y);
   }
   string[] lx;
   lx=split(tab[0][1]," ");
   object[] lxo=new object[lx.length];
   real xlarg,xhaut,dxl=1.1;
   for(int i=0; i<lx.length; ++i){
       lxo[i]=object(Label(d+((m==true)?replace(lx[i],"inf","\infty"):lx[i])+d,stylo));
       xlarg=max(xlarg,(max(lxo[i])-min(lxo[i])).x);
   }
   larg*=kx/2; haut*=ky/2; xlarg*=kx*1.5;
   draw(pic,(-larg,haut-2n*haut)--(-larg,haut)--(larg,haut)--(larg,haut-2n*haut),p);
   for(int k=0; k<n; ++k){
       add(pic,shift(0,-2k*haut)*obj[k]);
       draw(pic,(-larg,haut-2(k+1)*haut)--(larg,haut-2(k+1)*haut),p);
       real L=(lxo.length-1/2)*xlarg;
       if(k==0) {
          draw(pic,(larg,haut)--(dxl^2*larg+L,haut)--(dxl^2*larg+L,-haut)--(larg,-haut),p);
          for(int i=0; i<lxo.length; ++i)
            add(pic,shift(dxl*larg+(1/4+i)*xlarg,0)*lxo[i]);
       } else {
         string[] ly;
         ly=split(tab[k][1]," ");
         for(int i=0; i<ly.length; ++i)
            label(pic,shift(dxl*larg+(1/4+i/2)*xlarg,-k*2haut)*(d+ly[i]+d),stylo);
            draw(pic,(dxl^2*larg+L,haut-k*2haut)--(dxl^2*larg+L,-haut-k*2haut)--(larg,-haut-k*2haut),p);
       }
   }
   return pic;
}
string[][] tab={
{"x",           "-inf -2 0 1 +inf"},
{"x",           " - | - 0 + | + "},
{"x-1",         " - | - | - 0 + "},
{"x+2",         " - 0 + | + | + "},
{"x(x-1)(x+2)", " - 0 + 0 - 0 + "}
};
add(tabsgn(tab,ul=1.2)); // ul=1.1 pour 11pt, ul=1.2 pour 12pt
\end{asy}
\end{document}
Je propose cela pour dépanner... mais je vais devoir y revenir quand j'aurai un peu de temps pour m'en occuper avec le sérieux nécessaire.
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 !

Zaf
Messages : 56
Enregistré le : mer. 17 mars 2010, 07:11

Re: Tableaux de variation avec Asymptote

Message non lu par Zaf » jeu. 25 mars 2010, 23:18

Bonsoir Gaëtan,
Merci infiniment, c'est très gentil d'avoir fait cela, je sais que le temps nous manque souvent bien que les mauvaises langues parlent de nous comme "18 h par semaine..." :lol:
Apparemment c'est très beaux et ça convient, je vais me mettre à tester.
Merci encore.

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

Re: Tableaux de variation avec Asymptote

Message non lu par GM » ven. 26 mars 2010, 00:09

GM a écrit :Une proposition rapide... non suffisamment testée pour être déboguée, non intégrée à gm_tableaux... et pour laquelle, les barres verticales seront à revoir.
Je me suis dit que je n'étais pas à quelques minutes près... au niveau du retard dans mon boulot et j'ai finalement ajouté des barres plus soignées.

J'ai remis le choix entre 0 et O pour les zéros ; je suis d'accord cette fois : les 0 sont mieux que les O.

Figure asymptote 5ae99a2096494e03f32461aeccd5f5c5
*** 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.  
  2. import fontsize;
  3. //usepackage("fourier");
  4. picture tabsgn(string[][] tab, real ul=1, real kx=1.1, real ky=1.2 ,pen p=1bp+black, bool m=true){
  5. picture pic;
  6. string d=(m==true)?"$":"";
  7. pen stylo=fontsize(ul*8pt);
  8. int n=tab.length;
  9. object[] obj=new object[tab.length];
  10. real larg,haut;
  11. for(int k=0; k<n; ++k){
  12. obj[k]=object(Label("$"+tab[k][0]+"$",stylo));
  13. larg=max(larg,(max(obj[k])-min(obj[k])).x);
  14. haut=max(haut,(max(obj[k])-min(obj[k])).y);
  15. }
  16. string[] lx;
  17. lx=split(tab[0][1]," ");
  18. object[] lxo=new object[lx.length];
  19. real xlarg,xhaut,dxl=1.1;
  20. for(int k=0; k<lx.length; ++k){
  21. lxo[k]=object(Label(d+((m==true)?replace(lx[k],"inf","\infty"):lx[k])+d,stylo));
  22. xlarg=max(xlarg,(max(lxo[k])-min(lxo[k])).x);
  23. }
  24. larg*=kx/2; haut*=ky/2; xlarg*=kx*1.5;
  25. draw(pic,(-larg,haut-2n*haut)--(-larg,haut)--(larg,haut)--(larg,haut-2n*haut),p);
  26. for(int k=0; k<n; ++k){
  27. add(pic,shift(0,-2k*haut)*obj[k]);
  28. draw(pic,(-larg,haut-2(k+1)*haut)--(larg,haut-2(k+1)*haut),p);
  29. real L=(lxo.length-1/2)*xlarg;
  30. if(k==0) {
  31. draw(pic,(larg,haut)--(dxl^2*larg+L,haut)--(dxl^2*larg+L,-haut)--(larg,-haut),p);
  32. for(int kk=0; kk<lxo.length; ++kk)
  33. add(pic,shift(dxl*larg+(1/4+kk)*xlarg,0)*lxo[kk]);
  34. } else {
  35. string[] ly;
  36. real l=xlarg/30;
  37. ly=split(tab[k][1]," ");
  38. for(int j=0; j<ly.length; ++j){
  39. real xla = dxl*larg+(1/4+j/2)*xlarg;
  40. if(ly[j]=="O") {
  41. draw(pic,circle((xla,-k*2haut),haut/2),linewidth(1bp));
  42. draw(pic,(xla,-k*2haut-haut)--(xla,-k*2haut+haut),p); }
  43. else if(ly[j]=="0") {
  44. label(pic,shift(xla,-k*2haut)*(d+ly[j]+d),stylo);
  45. draw(pic,(xla,-k*2haut-haut)--(xla,-k*2haut+haut),p); }
  46. else if(ly[j]=="|")
  47. draw(pic,(xla,-k*2haut-haut)--(xla,-k*2haut+haut),p);
  48. else if(ly[j]=="||")
  49. draw(pic,(xla-l,-k*2haut-haut)--(xla-l,-k*2haut+haut)
  50. ^^(xla+l,-k*2haut-haut)--(xla+l,-k*2haut+haut),linewidth(1bp));
  51. else label(pic,shift(xla,-k*2haut)*(d+ly[j]+d),stylo);
  52. }
  53. draw(pic,(dxl^2*larg+L,haut-k*2haut)--(dxl^2*larg+L,-haut-k*2haut)--(larg,-haut-k*2haut),p);
  54. }
  55. }
  56. return pic;
  57. }
  58. string[][] tab={
  59. {"x", "-inf -2 0 1 +inf"},
  60. {"x", " - | - 0 + | + "},
  61. {"x-1", " - | - | - 0 + "},
  62. {"(x+2)^2", " + 0 + | + | + "},
  63. {"\frac{x(x-1)}{(x+2)^2}", " + || + O - O + "}
  64. };
  65. add(tabsgn(tab,ul=2,ky=1.1,p=1bp+blue)); // ul=1.1 pour 11pt, ul=1.2 pour 12pt
  66.  

Code : Tout sélectionner

string[][] tab={
{"x",                      "-inf -2 0 1 +inf"},
{"x",                      " - | - 0 + | + "},
{"x-1",                    " - | - | - 0 + "},
{"(x+2)^2",                " + 0 + | + | + "},
{"\frac{x(x-1)}{(x+2)^2}", " + || + O - O + "}
};
add(tabsgn(tab,ul=2,ky=1.1,p=1bp+blue)); // ul=1.1 pour 11pt, ul=1.2 pour 12pt
ul donne la taille de la police et donc du tableau
ky un coefficient multiplicateur pour la hauteur de ligne, par rapport à la hauteur de l'étiquette la plus haute. kx existe aussi pour la largeur.
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 : 1364
Enregistré le : dim. 7 mars 2010, 14:50

Re: Tableaux de variation avec Asymptote

Message non lu par GM » ven. 26 mars 2010, 00:22

Figure asymptote bd596e51acf9f199fcd6d4d59e627f66
*** 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.  
  2. import fontsize;
  3. //usepackage("fourier");
  4. picture tabsgn(string[][] tab, real ul=1, real kx=1.1, real ky=1.2 ,pen p=1bp+black, bool m=true){
  5. picture pic;
  6. string d=(m==true)?"$":"";
  7. pen stylo=fontsize(ul*10pt);
  8. int n=tab.length;
  9. object[] obj=new object[tab.length];
  10. real larg,haut;
  11. for(int k=0; k<n; ++k){
  12. obj[k]=object(Label("$"+tab[k][0]+"$",stylo));
  13. larg=max(larg,(max(obj[k])-min(obj[k])).x);
  14. haut=max(haut,(max(obj[k])-min(obj[k])).y);
  15. }
  16. string[] lx;
  17. lx=split(tab[0][1]," ");
  18. object[] lxo=new object[lx.length];
  19. real xlarg,xhaut,dxl=1.1;
  20. for(int k=0; k<lx.length; ++k){
  21. lxo[k]=object(Label(d+((m==true)?replace(lx[k],"inf","\infty"):lx[k])+d,stylo));
  22. xlarg=max(xlarg,(max(lxo[k])-min(lxo[k])).x);
  23. }
  24. larg*=kx/2; haut*=ky/2; xlarg*=kx*1.5;
  25. draw(pic,(-larg,haut-2n*haut)--(-larg,haut)--(larg,haut)--(larg,haut-2n*haut),p);
  26. for(int k=0; k<n; ++k){
  27. add(pic,shift(0,-2k*haut)*obj[k]);
  28. draw(pic,(-larg,haut-2(k+1)*haut)--(larg,haut-2(k+1)*haut),p);
  29. real L=(lxo.length-1/2)*xlarg;
  30. if(k==0) {
  31. draw(pic,(larg,haut)--(dxl^2*larg+L,haut)--(dxl^2*larg+L,-haut)--(larg,-haut),p);
  32. for(int kk=0; kk<lxo.length; ++kk)
  33. add(pic,shift(dxl*larg+(1/4+kk)*xlarg,0)*lxo[kk]);
  34. } else {
  35. string[] ly;
  36. real l=xlarg/30;
  37. ly=split(tab[k][1]," ");
  38. for(int j=0; j<ly.length; ++j){
  39. real xla = dxl*larg+(1/4+j/2)*xlarg;
  40. if(ly[j]=="O") {
  41. draw(pic,circle((xla,-k*2haut),haut/2),linewidth(1bp));
  42. draw(pic,(xla,-k*2haut-haut)--(xla,-k*2haut+haut),p); }
  43. else if(ly[j]=="0") {
  44. label(pic,shift(xla,-k*2haut)*(d+ly[j]+d),stylo);
  45. draw(pic,(xla,-k*2haut-haut)--(xla,-k*2haut+haut),p); }
  46. else if(ly[j]=="|")
  47. draw(pic,(xla,-k*2haut-haut)--(xla,-k*2haut+haut),p);
  48. else if(ly[j]=="||")
  49. draw(pic,(xla-l,-k*2haut-haut)--(xla-l,-k*2haut+haut)
  50. ^^(xla+l,-k*2haut-haut)--(xla+l,-k*2haut+haut),linewidth(1bp));
  51. else label(pic,shift(xla,-k*2haut)*(d+ly[j]+d),stylo);
  52. }
  53. draw(pic,(dxl^2*larg+L,haut-k*2haut)--(dxl^2*larg+L,-haut-k*2haut)--(larg,-haut-k*2haut),p);
  54. }
  55. }
  56. return pic;
  57. }
  58. string[][] tab={
  59. {"x", "-inf -2 0 1 +inf"},
  60. {"x", " - | - 0 + | + "},
  61. {"x-1", " - | - | - 0 + "},
  62. {"(x+2)^2", " + 0 + | + | + "},
  63. {"f(x)", " + || + O - O + "}
  64. };
  65. add(tabsgn(tab,ul=1.8,kx=1.5,ky=1,p=.8bp+orange)); // ul=1.1 pour 11pt, ul=1.2 pour 12pt
  66.  
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 !

Répondre