Page 1 of 1

programme intersection de 2 droites

Unread postPosted: 23 Oct 2017, 18:43
by frxxneoxx
bonjour,

Je poursuis mon apprentissage de la programmation sur ti et j'aurais besoin d'un peu d'aide.

J'essaye de créer un programme qui me donne les coordonnées du point d'intersection de 2 droites:

Code: Select all
Define interdroite()=
Prgm
:Request "Xa",xa
:Request "Ya",ya                           © on demande à l'utilisateur de saisir les données de la première droite AB
:Request "Xb",xb
:Request "Yb",yb
:
:m1:=((yb-ya)/(xb-xa))                 © élément de l'équation de la droite AB
:p1:=ya-m1*xa
:
e1:=m1*x-y=−p1                           © L'équation de AB
:
:
:Request "Xc",xc
:Request "Yc",yc
:Request "Xd",xd                            © on demande à l'utilisateur de saisir les données de la deuxième droite CD
:Request "Yd",yd
:
:m2:=((yd-yc)/(xd-xc))                   © élément de l'équation de la droite CD
:p2:=yc-m2*xc
:
:e2:=m2*x-y=−p2                            © L'équation de CD
:
:Disp "équation 1→",e1
:Disp "équation 2→",e2
:
:solve(system(e1,e2),{x,y})               © on résout le système
:
:
:
:EndPrgm


Mon problème, est que je ne trouve pas la manière d'afficher les coordonnées du point d'intersection. Dois-je recréer le programme 'solve' au sein de mon programme ou il y a un méthode qui m'échappe?

merci de votre aide.

Re: programme intersection de 2 droites

Unread postPosted: 23 Oct 2017, 18:46
by Hamza.S
salut,

fais
Code: Select all
Disp solve(system(e1,e2),{x,y})

Re: programme intersection de 2 droites

Unread postPosted: 23 Oct 2017, 21:06
by frxxneoxx
Hamza.S wrote:salut,

fais
Code: Select all
Disp solve(system(e1,e2),{x,y})


à chaque fois cet un truc tout bête ... :whistle: merci Hamza

j'avais trouvé ceci, qui marche aussi

Code: Select all
:solve(system(e1,e2),{x,y})→sol
:Disp propFrac(sol)

Re: programme intersection de 2 droites

Unread postPosted: 24 Oct 2017, 15:42
by frxxneoxx
bonjour,

je paufine mon programme mais je suis de nouveau coincé:

Code: Select all
Define topointersec()=
Prgm

© J'ai volontairement pas mis tout le programme tout ne pas trop surcharger

e2:=(x+xo)^(2)+(y+yo)^(2)=r^(2) © l'équation du cercle
:Disp "Equation du cercle→",e2
:Disp solve((x-xo)^(2)+(e1-yo)^(2)-r^(2)=0,x) © on résout le polynôme pour déterminer les solutions en x
:
:Disp solve((x-xo)^(2)+(y-yo)^(2)-r^(2)=0,y) © on résout l'équation avec les résultats en x  pour déterminer les solutions en y
:
:
:EndPrgm


je ne vois pas comment faire pour injecter les solutions de x dans l'équation afin que le programme me retourne également les solutions en y.

merci de votre aide.

Re: programme intersection de 2 droites

Unread postPosted: 24 Oct 2017, 16:41
by Bisam
Si tu fais l'intersection d'une droite et d'un cercle, une fois que tu connais les abscisses des points d'intersection, il est bien plus simple de calculer les ordonnées à l'aide de l'équation de la droite qu'à l'aide de l'équation du cercle !

Re: programme intersection de 2 droites

Unread postPosted: 24 Oct 2017, 16:57
by frxxneoxx
c'est vrai et j'ai fais les 2 pour vérifier l'exactitude et la précision de mon programme mais dans les 2 cas je ne vois pas comment remplacer x par les résultats obtenu au polynôme mise à part recopier manuellement x1 puis x2 pour obtenir y1 et y2.

edit: J'ai finalement fais autrement:
Code: Select all
:e1:=m1*x-y=−p1:                                                              ©Équation droite
:e2:=(x-xo)^(2)+(y-yo)^(2)=r^(2)                                                  ©Équation cercle
:
:
:
:Disp solve(system(e1,e2),{x,y})                                                  ©Solutions


Mais je suis preneur de la méthode pour injecter les résultats d'un polynôme dans la suite d'un calcul :D

Re: programme intersection de 2 droites

Unread postPosted: 24 Oct 2017, 17:53
by Bisam
La fonction exp►list(resultat, variable) renvoie une liste des solutions lorsque "resultat" est une expression donnant l'ensemble des solutions.

Exemple d'utilisation :
Code: Select all
solutions:=solve(e1 and e2,{x,y})
disp exp►list(solutions, {x,y})


Ici, on obtient sur chaque ligne un couple solution.

Re: programme intersection de 2 droites

Unread postPosted: 24 Oct 2017, 18:35
by frxxneoxx
Bisam wrote:La fonction exp►list(resultat, variable) renvoie une liste des solutions lorsque "resultat" est une expression donnant l'ensemble des solutions.

Exemple d'utilisation :
Code: Select all
solutions:=solve(e1 and e2,{x,y})
disp exp►list(solutions, {x,y})


Ici, on obtient sur chaque ligne un couple solution.


J'ai du mal m'exprimer car c'est pas ce que je voulais.

mon idée était de pouvoir réutiliser les solutions x1 et x2 dans la suite du programme.

Par exemple:
Code: Select all
:e1:=m1*x-y=−p1:
:e2:=(x-xo)^(2)+(y-yo)^(2)=r^(2)                                                  ©Equation cercle
:
:Disp solve(system(e1,e2),{x,y})                                                  © afficher les coordonnées d'intersection 


le programme renvoi:
x=140.739 and y=599.672 or x=265.95 and y=601.109


ce que je voudrais c'est pouvoir réutiliser ces solution dans le programme même:
Code: Select all
:e1:=m1*x-y=−p1:
:e2:=(x-xo)^(2)+(y-yo)^(2)=r^(2)                                                  ©Equation cercle
:
:Disp solve(system(e1,e2),{x,y})                                                  © afficher les coordonnées d'intersection
:
dab:=approx(√((xb-xa)^(2)+(yb-ya)^(2)))                                       ©xa,ya /  xb,yb étant les solutions du polynome
:Disp "distance ab=",dab                                                               ©afficher la distance séparent les 2 points d'intersections 


Pour que le programme me retourne quelque chose comme ça:
x=140.739 and y=599.672 or x=265.95 and y=601.109
distance ab= 125.219


J'espère que c'est plus claire :#roll#:

Re: programme intersection de 2 droites

Unread postPosted: 25 Oct 2017, 08:08
by Bisam
C'était très clair... c'est toi qui ne semble pas avoir compris ma réponse.

Le résultat renvoyé par un "solve" est une expression comportant des égalités : pas facile à utiliser pour faire des calculs.
Si on lui applique la fonction "exp►list", on obtient une liste de résultats... et comme c'est une liste, on peut utiliser chacun des éléments séparément bien plus facilement dans la suite du programme.