Intersection d'une courbe et d'une horizontale.

Voir le sujet précédent Voir le sujet suivant Aller en bas

Intersection d'une courbe et d'une horizontale.

Message  F.Couvreur le Jeu 8 Jan - 22:21

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 ?
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))] 
Merci.

F.Couvreur

Nombre de messages : 137
Age : 53
Date d'inscription : 10/02/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Intersection d'une courbe et d'une horizontale.

Message  P.Fradin le Jeu 8 Jan - 22:55

Salut Fabrice et tous mes meilleurs voeux pour 2009,

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.


_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Intersection d'une courbe et d'une horizontale.

Message  F.Couvreur le Ven 9 Jan - 1:13

Bonsoir Patrick,
tous mes meilleurs voeux pour 2009
Je t'en souhaite autant.
Merci, c'est exactement ce que je cherchais à faire.
Par contre je n'ai pas compris ce que tu veux dire pour la macro size()...
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" Very Happy ).
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 : 53
Date d'inscription : 10/02/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Intersection d'une courbe et d'une horizontale.

Message  P.Fradin le Ven 9 Jan - 1:27

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?

_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Intersection d'une courbe et d'une horizontale.

Message  F.Couvreur le Ven 9 Jan - 1:56

Re,
Je viens d'inclure le graphique dans mon document tex, c'est impecccable !

Quant à ton autre problème, tu as bien les droits sur le dossier où tu enregistres?
Je l'avais enregistré dans /home/fab/.J'ai recommencé, et maintenant cela fonctionne Rolling Eyes
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 : 53
Date d'inscription : 10/02/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Intersection d'une courbe et d'une horizontale.

Message  F.Couvreur le Dim 11 Jan - 3:42

Bonjour Patrick,
Un autre petit problème Very Happy
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)] 
Merci.

F.Couvreur

Nombre de messages : 137
Age : 53
Date d'inscription : 10/02/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Intersection d'une courbe et d'une horizontale.

Message  P.Fradin le Dim 11 Jan - 13:19

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:

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)),

_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Intersection d'une courbe et d'une horizontale.

Message  F.Couvreur le Dim 11 Jan - 14:39

Bonjour Patrick,
Merci, c'est ce que je cherchais à faire.

PS: personnellement je mettrais plutôt:

Code:

NbPoints:=50, L:=Get(Cartesienne((x*pi*(100-x*x))/3)),
Le nombre de points est trop grand ?
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 : 53
Date d'inscription : 10/02/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Intersection d'une courbe et d'une horizontale.

Message  P.Fradin le Dim 11 Jan - 15:02

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]),
...]

_________________
P.Fradin

P.Fradin
Admin

Nombre de messages : 1133
Age : 55
Date d'inscription : 19/01/2008

Voir le profil de l'utilisateur http://texgraph.tuxfamily.org/

Revenir en haut Aller en bas

Re: Intersection d'une courbe et d'une horizontale.

Message  Contenu sponsorisé Aujourd'hui à 5:59


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum