Intersection d'une courbe et d'une horizontale.
2 participants
Page 1 sur 1
Intersection d'une courbe et d'une horizontale.
Bonsoir Patrick,
Comment faire pour récupérer l'intersection d'une courbe et d'une horizontale ?
Ensuite, j'aimerais projeter ce point sur les axes de coordonnées à l'aide de traits en pointillés, et indiquer une valeur approchée de son abscisse.
J'ai bien une petite idée, mais ma méthode est lourde, et manque d'élégance.
Je dois ensuite inclure ce graphique dans un document tex, mais size() pose problème avec les labels.
Quelle méthode préconises- tu pour le meilleur rendu ?
Comment faire pour récupérer l'intersection d'une courbe et d'une horizontale ?
Ensuite, j'aimerais projeter ce point sur les axes de coordonnées à l'aide de traits en pointillés, et indiquer une valeur approchée de son abscisse.
J'ai bien une petite idée, mais ma méthode est lourde, et manque d'élégance.
Je dois ensuite inclure ce graphique dans un document tex, mais size() pose problème avec les labels.
Quelle méthode préconises- tu pour le meilleur rendu ?
- Code:
[Xscale:=0.1,Yscale:=0.1,Fenetre(-5+240*i,170-5*i,0.1+0.1*i),
NewMac("f","(x/4)*(1+3*x/100)",x),NewMac("g","80",x),
NewMac("h","150",x),Width:=6,Arrows:=1,
Axes(0,10+10*i,0), Label(169-4*i,"$v$",-4+239*i,"$d$",-2-3*i,"0"),
Width:=8,Arrows:=0,tMin:=0,tMax:=160,Courbe(t+i*f(t)),
Courbe(t+i*g(t)),Courbe(t+i*h(t))]
F.Couvreur- Nombre de messages : 137
Age : 61
Date d'inscription : 10/02/2008
Re: Intersection d'une courbe et d'une horizontale.
Salut Fabrice et tous mes meilleurs voeux pour 2009,
Je te propose ce code:
Comme tu peux le voir j'ai enlevé Xscale:= et Yscale:= car seule la commande Fenetre peut modifier ces variables. Par contre je n'ai pas compris ce que tu veux dire pour la macro size()... cette macro permet d'imposer une taille et un ratio, alors que la commande Fenetre permet d'imposer les intervalles et les échelles, bien sûr cela se rejoint, on choisit ce qui nous paraît le plus commode suivant les cas.
J'ai supprimer les fonctions constantes g et h, car leur courbe est facile à dessiner avec la commande Ligne!
Quant au calcul de l'abscisse des points d'intersection j'ai utilisé la commande Solve ce qui donne les deux abscisses x1 et x2.
Je te propose ce code:
- Code:
[Fenetre(-5+240*i,170-5*i,0.1+0.1*i),
NewMac("f","(x/4)*(1+3*x/100)",x),
Width:=6,Arrows:=1,
Axes(0,10+10*i,0), Label(169-4*i,"$v$",-4+239*i,"$d$",-2-3*i,"0"),
Width:=8,Arrows:=0,tMin:=0,tMax:=160,
Courbe(t+i*f(t)),
x1:=Solve(f(x)-80,x,0,160), x2:=Solve(f(x)-150,x,0,160),
LineStyle:=dashed, DotStyle:=bigdot,
Ligne( [x1,x1+80*i,80*i,jump,x2,x2+150*i,150*i],0),
Color:=red,
LabelDot(x1,["$\approx",Round(x1,2),"$"],"NE",1),
LabelDot(x2,["$\approx",Round(x2,2),"$"],"NE",1) ]
Comme tu peux le voir j'ai enlevé Xscale:= et Yscale:= car seule la commande Fenetre peut modifier ces variables. Par contre je n'ai pas compris ce que tu veux dire pour la macro size()... cette macro permet d'imposer une taille et un ratio, alors que la commande Fenetre permet d'imposer les intervalles et les échelles, bien sûr cela se rejoint, on choisit ce qui nous paraît le plus commode suivant les cas.
J'ai supprimer les fonctions constantes g et h, car leur courbe est facile à dessiner avec la commande Ligne!
Quant au calcul de l'abscisse des points d'intersection j'ai utilisé la commande Solve ce qui donne les deux abscisses x1 et x2.
Re: Intersection d'une courbe et d'une horizontale.
Bonsoir Patrick,
Merci, c'est exactement ce que je cherchais à faire.
Donc, je cherchais la meilleure méthode pour inclure ce fichier : jouer sur les options de \includegraphics ou sur les possibilités de TeXgraph. Il me semblait que si je tapais size(10) en console, mon graphique faisait 10 cm sur 10 cm, mais dans ce cas, les labels se chevauchaient.
J'ai un autre petit soucis ; quand je veux enregistrer le fichier, TeXgraph me répond "Access denied".
Merci.
Je t'en souhaite autant.tous mes meilleurs voeux pour 2009
Merci, c'est exactement ce que je cherchais à faire.
En fait, la taille réelle de l'image est trop grande pour l'inclure telle quelle dans un document tex au format landscape, et utilisant l'environnement multicol (tu m'as déjà aidé sur le site Mathematex "image et parbox" ).Par contre je n'ai pas compris ce que tu veux dire pour la macro size()...
Donc, je cherchais la meilleure méthode pour inclure ce fichier : jouer sur les options de \includegraphics ou sur les possibilités de TeXgraph. Il me semblait que si je tapais size(10) en console, mon graphique faisait 10 cm sur 10 cm, mais dans ce cas, les labels se chevauchaient.
J'ai un autre petit soucis ; quand je veux enregistrer le fichier, TeXgraph me répond "Access denied".
Merci.
F.Couvreur- Nombre de messages : 137
Age : 61
Date d'inscription : 10/02/2008
Re: Intersection d'une courbe et d'une horizontale.
- Code:
[view(-5,170,-5,240), size(10,0),
NewMac("f","(x/4)*(1+3*x/100)",x),
Width:=6,Arrows:=1, LabelSize:=scriptsize,
Axes(0,20+10*i,0), Label(169-4*i,"$v$",-4+239*i,"$d$",-2-3*i,"0"),
Width:=8,Arrows:=0,tMin:=0,tMax:=160,
Courbe(t+i*f(t)),
x1:=Solve(f(x)-80,x,0,160), x2:=Solve(f(x)-150,x,0,160),
LineStyle:=dashed, DotStyle:=bigdot,
Ligne( [x1,x1+80*i,80*i,jump,x2,x2+150*i,150*i],0),
Color:=red,
LabelDot(x1,["$\approx",Round(x1,2),"$"],"NE",1),
LabelDot(x2,["$\approx",Round(x2,2),"$"],"NE",1) ]
Avec ce code tu as un graphique non orthonormé qui fait exactement 10x10 cm. Pour le problème des labels, j'ai diminué la taille des labels (scriptsize).
Quant à ton autre problème, tu as bien les droits sur le dossier où tu enregistres?
Re: Intersection d'une courbe et d'une horizontale.
Re,
Je viens d'inclure le graphique dans mon document tex, c'est impecccable !
Encore merci.
@+
PS: j'ai mis à jour pgf/tikz, et ta proposition pour remplacer un code pstricks fonctionne parfaitement.
Je viens d'inclure le graphique dans mon document tex, c'est impecccable !
Je l'avais enregistré dans /home/fab/.J'ai recommencé, et maintenant cela fonctionneQuant à ton autre problème, tu as bien les droits sur le dossier où tu enregistres?
Encore merci.
@+
PS: j'ai mis à jour pgf/tikz, et ta proposition pour remplacer un code pstricks fonctionne parfaitement.
F.Couvreur- Nombre de messages : 137
Age : 61
Date d'inscription : 10/02/2008
Re: Intersection d'une courbe et d'une horizontale.
Bonjour Patrick,
Un autre petit problème
Comment "remonter" les labels par rapport à l'axe des abscisses ?
Un autre petit problème
Comment "remonter" les labels par rapport à l'axe des abscisses ?
- Code:
[Fenetre(-0.5+450*i,11-0.5*i,1+(1/50)*i),
NewMac("f"," (x*pi*(100-x*x))/3",x),
Width:=6,Arrows:=1, LabelSize:=scriptsize,
Axes(0,1+50*i,0), Label(10.9-(25/2)*i,"$x$",-5+449*i,"$y$",-1-3*i,"0"),
Width:=8,Arrows:=0,tMin:=0,tMax:=10, NbPoints:=500,
L:=Get(Cartesienne((x*pi*(100-x*x))/3,0)),
Ligne(L,0),
Y:=for z in L do Im(z) od, Sort(Y,1),
last:=Y[1],
x0:=Solve(f(x)-last,x,0,10),
S:=Solve(f(x)-200,x,0,10), x1:=S[1],x2:=S[2],
LineStyle:=dashed, DotStyle:=bigdot,
Ligne( [x1,x1+200*i,200*i,jump,x2,x2+200*i,x1+200*i],0),
Ligne([x0,x0+i*last,i*last],0),
Color:=red,
LabelDot(x1,["$\approx",Round(x1,2),"$"],"NE",1),
LabelDot(x2,["$\approx",Round(x2,2),"$"],"NE",1),
LabelDot(x0,["$\approx",Round(x0,2),"$"],"NE",1)]
F.Couvreur- Nombre de messages : 137
Age : 61
Date d'inscription : 10/02/2008
Re: Intersection d'une courbe et d'une horizontale.
Salut Fabrice,
Je suppose que tu parles des 3 labels en rouge. On peut remplacer les directions "NE" par une expression de la forme "[distance, direction]" où "distance" est en cm et "direction" est un vecteur, par contre c'est à toi de préciser alors le LabelStyle, ce qui donnerait par exemple:
les labels seront placés dans la direction du vecteur 0.25+50*i à une distance de 0.5cm.
PS: personnellement je mettrais plutôt:
Je suppose que tu parles des 3 labels en rouge. On peut remplacer les directions "NE" par une expression de la forme "[distance, direction]" où "distance" est en cm et "direction" est un vecteur, par contre c'est à toi de préciser alors le LabelStyle, ce qui donnerait par exemple:
- Code:
[....
LabelStyle:=left,
LabelDot(x1,["$\approx",Round(x1,2),"$"],"[0.5, 0.25+50*i]",1),
LabelDot(x2,["$\approx",Round(x2,2),"$"],"[0.5, 0.25+50*i]",1),
LabelDot(x0,["$\approx",Round(x0,2),"$"],"[0.5, 0.25+50*i]",1) ]
les labels seront placés dans la direction du vecteur 0.25+50*i à une distance de 0.5cm.
PS: personnellement je mettrais plutôt:
- Code:
NbPoints:=50, L:=Get(Cartesienne((x*pi*(100-x*x))/3)),
Re: Intersection d'une courbe et d'une horizontale.
Bonjour Patrick,
Merci, c'est ce que je cherchais à faire.
J'ai une autre petite question : pour utiliser la macro solve(), il me fallait obligatoirement définir la macro f ?
Ne pouvais-je pas l'utiliser avec la liste L ?
Car ensuite, je ne me suis pas servi de cette macro pour tracer la courbe, mais de Ligne(L,0).
Merci.
Merci, c'est ce que je cherchais à faire.
Le nombre de points est trop grand ?
PS: personnellement je mettrais plutôt:
Code:
NbPoints:=50, L:=Get(Cartesienne((x*pi*(100-x*x))/3)),
J'ai une autre petite question : pour utiliser la macro solve(), il me fallait obligatoirement définir la macro f ?
Ne pouvais-je pas l'utiliser avec la liste L ?
Car ensuite, je ne me suis pas servi de cette macro pour tracer la courbe, mais de Ligne(L,0).
Merci.
F.Couvreur- Nombre de messages : 137
Age : 61
Date d'inscription : 10/02/2008
Re: Intersection d'une courbe et d'une horizontale.
F.Couvreur a écrit:
Le nombre de points est trop grand ?
Pas forcément (d'ailleurs il doit être plus grand avec ma proposition), mais on laisse au programme le soin de couper en deux les intervalles entre deux points consécutifs quand c'est nécessaire, il peut le faire jusqu'à 5 fois par défaut, on peut mettre moins bien sûr. Si on veut imposer un nombre de points maxi alors on fait comme tu as fait, mais je pense que 150 ça devrait dejà suffire!
J'ai une autre petite question : pour utiliser la macro Solve(), il me fallait obligatoirement définir la macro f ?
Ne pouvais-je pas l'utiliser avec la liste L ?
Car ensuite, je ne me suis pas servi de cette macro pour tracer la courbe, mais de Ligne(L,0).
Merci.
Solve demande une équation, donc il lui faut la fonction, ou son expression. L est une liste de points, tu peux utiliser L pour une résolution graphique avec l'opérateur InterL: intersection entre deux lignes polygonales. Par exemple pour x0, x1 et x2 cela donnerait:
- Code:
[...
x:= L InterL [Xmin+200*i,Xmax+200*i],
x1:=Re(x[1]), x2:=Re(x[2]),
x:=L InterL [Xmin+last*i,Xmax+last*i],
x0:=Re(x[1]),
...]
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum