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 :
- Nom du système d'exploitation (W7 ou Ubuntu 12.04 ou ...)
- Version d'Asymptote et éditeur utilisé pour les figures Asymptote
- Distribution LaTeX et éditeur utilisé pour les tex.
On va gagner du temps dans les réponses !
-
maurice
- Messages : 262
- Enregistré le : jeu. 25 mars 2010, 13:00
-
Contact :
Message non lu
par maurice » mar. 5 juin 2012, 00:37
Bonsoir, pour ne pas poluer le sujet
sur l'impression, je lance un nouveau.
Pour le début, voir
ici.GM a écrit :J'ai oublié de dire que :
- les fonctions choisies ci-dessus n'ont pas de valeurs interdites, donc il suffirait de deux états pour le booléen : un pair qui ne satisfait pas la condition n'est simplement pas tracé... et le premier pair qui suit et qui satisfait la condition débute nécessairement un nouveau guide ;
- l'intérêt d'un booléen trois états est pour moi dans le tracé de la courbe d'une fonction ayant une valeur interdite, car il faut alors pouvoir écrire une condition de test fonctionnant ainsi :
- si l'état est true, le pair testé est ajouté au guide courant ;
- si l'état est default, le pair testé est le premier pair d'un nouveau guide qui devient le guide courant ;
- si l'état est false, le pair testé n'est à ajouter à aucun guide et le prochain pair qui vérifiera la condition débutera un nouveau guide.
J'espère que j'ai été clair.
J'ai essayé de représenter la fonction
, je n'ai pas eu besoin de l'état default.
Si on remplace true par default, aucune ligne n'estbtracé, ce qui est normal vu la doc sur
graph.
*** 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
import graph;
size(300, IgnoreAspect);
int xmin=-3, xmax=3, ymin=-3, ymax=3;
real f(real x){return 1/x;}
bool3 cond(real x) {return ((x!=0)&&(f(x)>ymin)&&(f(x)<ymax)) ? true : false;}
guide[] Cf=graph(f,xmin,xmax,n=10*(xmax-xmin),cond);
draw(Cf, red, dot());
xaxis(xmin=xmin,xmax=xmax,Ticks(Step=1));
yaxis(ymin=ymin,ymax=ymax,Ticks(Step=1));
Ce n'est donc pas que tu n'as pas été clair mais je tarde à bien comprendre.
bruno
Doc 3D
Si ça ne marche pas, essayez
la version pdf
Fedora 23 -- Asymptote 2.35 -- TeXlive 2013 -- emacs et/ou gedit
-
GM
- Administrateur du site
- Messages : 1512
- Enregistré le : dim. 7 mars 2010, 14:50
Message non lu
par GM » mar. 5 juin 2012, 05:42
Avec ton exemple, je n'ai fait que changer la valeur de n pour planter le fonctionnement :
*** 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
import graph;
size(300, IgnoreAspect);
int xmin=-3, xmax=3, ymin=-3, ymax=3;
real f(real x){return 1/x;}
bool3 cond(real x) {return ((x!=0)&&(f(x)>ymin)&&(f(x)<ymax)) ? true : false;}
guide[] Cf=graph(f,xmin,xmax,n=(xmax-xmin)+1,cond);
draw(Cf, red, dot());
xaxis(xmin=xmin,xmax=xmax,Ticks(Step=1));
yaxis(ymin=ymin,ymax=ymax,Ticks(Step=1));
Dans le cas de la fonction inverse... il faut prendre en compte le changement de signe.
Remarque : Quand j'ai écrit
l'intérêt d'un booléen trois états est pour moi dans le tracé de la courbe d'une fonction ayant une valeur interdite, car ...
j'aurais dû écrire 'l'intérêt essentiel" car je ne doute pas que l'on peut inventer d'autres usages.
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 24/02/21) :
PC n°1 :
Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 :
Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur :
Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !
-
OG
- V.I.P.
- Messages : 142
- Enregistré le : dim. 7 mars 2010, 22:27
Message non lu
par OG » mar. 5 juin 2012, 10:21
Bonjour
Pour la fonction 1/x il y a l'exemple sur le site asymptote, qui comme le dit Gaëtan
tient compte du changement de signe. Mais si j'ai bien compris il y a deux pbs à gérer
le 1/x et le pb du "bug".
Sur le modèle du 1/x je m'étais amusé à tracé la partie entière
*** 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
import graph;
size(200,IgnoreAspect);
real f(real x) {return (real) floor(x);};
bool3 branch(real x)
{
static int lastsign=-50;
if(x-floor(x) == 0) return false;
int sign=floor(x);
bool b=lastsign ==-50 || sign == lastsign;
lastsign=sign;
return b ? true : default;
}
draw(graph(f,-4,4,n=1000,branch),black+1bp);
axes("$x$","$y$",red);
Évidemment on peut préférer les tracés avec les crochets aux extrémités de chaque partie constante
de la fonction.
O.G.
-
GM
- Administrateur du site
- Messages : 1512
- Enregistré le : dim. 7 mars 2010, 14:50
Message non lu
par GM » mar. 5 juin 2012, 11:39
OG a écrit :je m'étais amusé à tracé la partie entière
Rappel d'une version différente :
http://www.marris.org/asymptote/Courbes_fonctions/index.html#fig_fa03_131111_fonction_partie_entiere
*** 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
usepackage("amsmath");
import graph;
size(8cm,0);
real Floor(real x) {return floor(x);}
pair[] ListeDesPointsCompris;
pair[] ListeDesPointsExclus;
//==================
// bool3 est un booléen à trois états : true, default et false
bool3 TestRelierOuPas(real x) {
static real lasty;
static bool first = true;
real y = floor(x);
bool memebranche = first || lasty == y;
first = false;
if(!memebranche) { ListeDesPointsExclus.push((x,lasty));
ListeDesPointsCompris.push((x,y));
}
lasty=y;
return memebranche ? true : default;
};
//==================
draw(graph(Floor,-5.5,5.5,500,TestRelierOuPas));
axes("$x$",rotate(0)*"$\lfloor x\rfloor$",red);
dot(ListeDesPointsCompris);
dot(ListeDesPointsExclus,UnFill);
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 24/02/21) :
PC n°1 :
Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 :
Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur :
Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !
-
GM
- Administrateur du site
- Messages : 1512
- Enregistré le : dim. 7 mars 2010, 14:50
Message non lu
par GM » mar. 5 juin 2012, 11:47
Sur le même thème, je rappelle un exemple déjà donné... dont je ne sais plus dire s'il y a le problème d'impression de traits supplémentaires avec adobereader (qu'il faudrait donc aménager si tel est le cas).
*** 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
defaultpen(fontsize(10pt));
import graph_pi;
import geometry;
usepackage("fourier");
usepackage("mathrsfs");
size(450,0);
real a=3;
graphicrules(xunit=.8cm, yunit=1.5cm,
xmin=-3pi, xmax=3pi,
ymin=-4, ymax=4,
crop=Crop
);
// Définition et tracé de la grille
grid(xStep=pi/4, xstep=pi/12,
yStep=1, ystep=.25,
pTick=.7bp+.4white,
ptick=.7bp+.8white,
above=false
);
// Définition et tracé des axes
cartesianaxis(
xticks=Ticks(labelfrac(factor=pi,
symbol="\pi",
symbolin=true,
zero=false),
Step=pi/2, step=pi/12,
pTick=1bp+black,
ptick=1bp+gray),
yticks=Ticks(labelfrac(zero=false),
Step=1, step=.5,
pTick=1bp+black,
ptick=1bp+gray),
Arrow
);
real f(real x) {return tan(x);}
bool3 condition(real x)
{
static int derniersigne=0;
real a=x/(pi/2);
if(a==floor(a)) return false;
int signe = sgn(tan(x));
bool b = derniersigne == 0 || signe == derniersigne;
derniersigne = signe;
return b ? true : default;
}
guide[] Cf=graph(f,-3pi-.5,3pi+.5,n=1000,condition);
draw(Cf,linewidth(1bp)+blue);
xlimits(-3pi-.7,3pi+.7,Crop);
ylimits(-3.25,3.25,Crop);
label("$\mathscr{C}_{\tan}$",(-10pi/6,f(-10pi/6)),E);
label("La fonction $x\mapsto\tan(x)$ est p\'eriodique de p\'eriode $\pi$ \qquad et impaire.",truepoint(N),N);
distance("$T= \pi$",(0,f(0)),(pi,f(pi)),offset=-5mm,Arrows);
Edition par GM : je modifierai le code plus tard et supprimerai ce commentaire....... car je viens de réaliser, que la modification de graph_pi ne donne plus le découpage espéré que l'on avait avant : le même graphe avec la version de graph_pi précédente.
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 24/02/21) :
PC n°1 :
Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 :
Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur :
Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !
-
maurice
- Messages : 262
- Enregistré le : jeu. 25 mars 2010, 13:00
-
Contact :
Message non lu
par maurice » mar. 5 juin 2012, 15:00
Bonjour, merci pour vos réponses.
Code : Tout sélectionner
bool3 branch(real x)
{
static int lastsign=-50;
if(x-floor(x) == 0) return false;
int sign=floor(x);
bool b=lastsign ==-50 || sign == lastsign;
lastsign=sign;
return b ? true : default;
}
Si je comprends en gros ce code, quel est l'intéret du static ?
De plus, quelle est la signification exacte de cette ligne :
Là se sont mes (faibles) connaissances en informatique qui sont dépassées.
Bruno
Doc 3D
Si ça ne marche pas, essayez
la version pdf
Fedora 23 -- Asymptote 2.35 -- TeXlive 2013 -- emacs et/ou gedit
-
OG
- V.I.P.
- Messages : 142
- Enregistré le : dim. 7 mars 2010, 22:27
Message non lu
par OG » mar. 5 juin 2012, 16:53
Re
Merci pour l'exemple de la tangente.
Sans static une nouvelle variable est créée et initialisée à chaque appel
(donc pas de mémoire et le résultat n'est pas celui qu'on attend). Avec static
c'est la même case mémoire qui sert donc pour deux appels c'est la "même" variable.
== teste l'égalité
|| ou logique
O.G.
-
maurice
- Messages : 262
- Enregistré le : jeu. 25 mars 2010, 13:00
-
Contact :
Message non lu
par maurice » mar. 5 juin 2012, 16:57
Bonjour, merci pour les explications pour static
OG a écrit :
== teste l'égalité
|| ou logique
O.G.
Ca je savais, mais en gros :
déclare le booléen b qui est true si lastsgn égal -50 ou si sign égal lastsign ...
C'est ça qui n'est pas très clair...
Merci
Bruno
Doc 3D
Si ça ne marche pas, essayez
la version pdf
Fedora 23 -- Asymptote 2.35 -- TeXlive 2013 -- emacs et/ou gedit
-
GM
- Administrateur du site
- Messages : 1512
- Enregistré le : dim. 7 mars 2010, 14:50
Message non lu
par GM » mar. 5 juin 2012, 19:23
OG a écrit :Code : Tout sélectionner
bool3 branch(real x)
{
static int lastsign=-50;
if(x-floor(x) == 0) return false;
int sign=floor(x);
bool b=lastsign ==-50 || sign == lastsign;
lastsign=sign;
return b ? true : default;
}
Un "return false" pour la partie entière ?
Pourquoi ne placerait-on pas de point quand
?
Je crois que le modèle de bool3 relatif à 1/x n'est pas adapté pour la partie entière... et puis le nom des variables est perturbant car "lastsign" ne me semble pas adapté.
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 24/02/21) :
PC n°1 :
Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 :
Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur :
Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !
-
GM
- Administrateur du site
- Messages : 1512
- Enregistré le : dim. 7 mars 2010, 14:50
Message non lu
par GM » mar. 5 juin 2012, 19:44
GM a écrit :Un "return false" pour la partie entière ?
Pourquoi ne placerait-on pas de point quand
?
Je crois que le modèle de 1/x n'est pas adapté pour la partie entière... et puis le nom des variables est perturbant car "lastsign" ne me semble pas adapté.
Je crois deviner que "return false" a été ajouté pour éviter d'avoir un point isolé pour la valeur entière xmax=4.
Mais pour un point gênant, enlever tous les points d'abscisses entières... c'est peut-être exagéré.
*** 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
import graph;
size(200,IgnoreAspect);
real f(real x) {return (real) floor(x);};
real xmin=-4, xmax =4;
bool3 branch(real x)
{
if((x==xmax)&&(floor(x)==x)) return false; // << pour enlever uniquement le dernier point, isolé quand xmax est entier.
static int partieentiereprecedente=05062012;
int partieentiere=floor(x);
bool onrelie= (partieentiereprecedente ==05062012) || (partieentiere == partieentiereprecedente);
partieentiereprecedente = partieentiere;
return onrelie ? true : default;
}
draw(graph(f,xmin,xmax,n=1000,branch),black+1bp);
axes("$x$","$y$",red);
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 24/02/21) :
PC n°1 :
Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 :
Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur :
Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !