|
Apprendre Maple Site dédié au logiciel de calcul formel Maple
|
Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
michel Invité
|
Posté le: 14 Avr 2005 16:53 Sujet du message: Point de Torricelli d'un triangle |
|
|
Bonjour,
Soient dans le plan, un triangle ABC dont les 3 angles sont aigus, P un point à l'intérieur du triangle, on sait que le point P tel que PA+PB+PC soit minimal, s'appelle point de Torricelli.
Les distances de P à A, à B et à C se nomment respectivement x, y et z et les côtés du triangle AB=c, BC=a, CA=c. On sait que le point P est situé au point de concours des 3 cercles circonscrits aux 3 triangles équilatéraux construits sur les côtés du triangle ABC et à l'extérieur de celui-ci. A l'aide des équations de 2 de ces cercles qui se coupent, on peut trouver les coordonnées de P.
Dans le cas qui m'intéresse a²=277, b²=181 et c²=340. A partir des coordonnées de P on trouve les distances x=8.8727, y=12.3253 et z=6.6069.
On s'interesse maintenant à une autre méthode :
dans les triangles ABP,ACP et BCP on a :
eq1:=c²=x²+y²-2x.y.cos(2Pi/3)=x²+y²+x.y de même
eq2:=b²=x²+z²+x.z
eq3:=a²=y²+z²+y.z
D'autre part les 4 points A, B, C et P appartenant au plan alors le déterminant de Caley est nul, donc :
eq4:=det(matrix(5,5,[
0,1,1,1,1,
1,0,x²,y²,z²,
1,x²,0,c²,b²,
1,y²,c²,0,a²,
1,z²,b²,a²,0]))=0:
Si on essaie sol:=solve({eq1,eq2,eq3],{x,y,z}); : ceci ne donne rien.
Si on essaie sol:=solve({eq1,eq2,eq3,eq4],{x,y,z}) ; : ceci ne donne rien non plus.
Mais si on essaie sol:=solve({eq1,eq2,eq4],{x,y,z}); suivi de map(evalf,allvalues(%)); alors on obtient 200 solutions différentes environ parmi lesquelles "la bonne" x=8.8727, y=12.3253 et z=6.6069. La question que je me pose est : Pourrait-s'y prendre mieux ? en réduisant le nombre des solutions avec les valeurs négatives par exemples. Merci de me répondre. |
|
Revenir en haut de page |
|
|
michel Invité
|
Posté le: 15 Avr 2005 10:57 Sujet du message: Point de Torricelli d'un triangle |
|
|
Bonjour, en fait je me suis tiré d'embarras en utilisant la commande :
fsolve({eq1,eq2,eq3},{x,y,z},0.1..19); permettant d'imposer des conditions aux inconnues, ici ce sont des distances inférieures aux plus long côté du triangle. L'équation due au déterminant de Caley est inutile sauf à titre de vérification. A+ |
|
Revenir en haut de page |
|
|
ALS Invité
|
Posté le: 15 Avr 2005 11:45 Sujet du message: Re: point de Torricelli d'un triangle |
|
|
Bonjour,
Oui, ou comme ceci:
Code: |
> a:=sqrt(277):b:=sqrt(181):c:=sqrt(340):
> eq1:=c^2=x^2+y^2+x*y: eq2:=b^2=x^2+z^2+x*z: eq3:=a^2=y^2+z^2+y*z:
> sol:={allvalues(solve({eq1,eq2,eq3},{x,y,z}))}:
> s:=map(evalf,sol);
s := {{z = -6.606979659, x = -8.872751967, y = -12.32535739},
{x = 8.872751967, z = 6.606979659, y = 12.32535739},
{x = -0.5428684421, z = -13.17397252, y = 18.70452826},
{y = -18.70452826, x = 0.5428684421, z = 13.17397252}}
> for k to nops(s) do
> if rhs(s[k][1])>0 and rhs(s[k][2])>0 and rhs(s[k][1])>0 then print(s[k]) fi
> od;
{x = 8.872751967, z = 6.606979659, y = 12.32535739}
|
Je vais essayer d'écrire une procédure qui calculera automatiquement les coordonnées du point de Torricelli, à partir de 3 points donnés par leurs coordonnées. Donc revenez faire un petit tour ici dans quelque temps. |
|
Revenir en haut de page |
|
|
ALS Invité
|
Posté le: 15 Avr 2005 14:11 Sujet du message: Re: point de Torricelli d'un triangle |
|
|
Voici la procédure Torricelli qui calcule les coordonnées du point de Torricelli d'un triangle ABC dont les 3 angles sont aigus.
Code: |
> restart;
> with(geometry):
> point(A,[-6,7]): point(B,[2,-5]): point(C,[11,2]):
> prod_scalaire:=proc(A,B,C)
> # calcule le produit scalaire des vecteurs AB et AC.
> (HorizontalCoord(B)-HorizontalCoord(A))*(HorizontalCoord(C)-HorizontalCoord(A))+(VerticalCoord(B)-VerticalCoord(A))*(VerticalCoord(C)-VerticalCoord(A))
> end proc:
> prod_scalaire(A,B,C);
196
> sens:=proc(A,B,C)
> # détermine si le triangle ABC est aplati, ou sinon de sens direct ou indirect
> # si ABC aplati: 0 si ABC direct: 1 si ABC indirect: -1
> local a;
> a:=0.5*(HorizontalCoord(A)*VerticalCoord(B)-HorizontalCoord(B)*VerticalCoord(A)+HorizontalCoord(B)*VerticalCoord(C)-HorizontalCoord(C)*VerticalCoord(B)+HorizontalCoord(C)*VerticalCoord(A)-HorizontalCoord(A)*VerticalCoord(C));
> # a est l'aire signée du triangle ABC
> if a=0 then 0 else sign(a) end if;
> end proc:
> sens(A,B,C);
1
> arrondi:=proc(x)
> # arrondit x à 3 décimales
> evalf(round(x*10^3)/10^3)
> end proc:
> arrondi(Pi);
3.142000000
> Torricelli:=proc(A,B,C)
> local s,i1,i2;
> triangle(T,[A,B,C]):
> if prod_scalaire(A,B,C)<0 or prod_scalaire(B,C,A)<0 or prod_scalaire(C,A,B)<0 then error "Le triangle doit avoir ses 3 angles aigus" end if:
> if sens(A,B,C)=1 then s:='counterclockwise' else s:='clockwise' end if;
> rotation(B1,C,Pi/3,s,A); triangle(T1,[A,C,B1]):
> rotation(C1,A,Pi/3,s,B); triangle(T2,[B,A,C1]):
> rotation(A1,B,Pi/3,s,C); triangle(T3,[C,B,A1]):
> circumcircle(cc1,T1):circumcircle(cc2,T2):circumcircle(cc3,T3):
> intersection('E', cc1, cc2,[U,V]);
> i1:={map(evalf,coordinates(U)),map(evalf,coordinates(V))};
> i1:={seq(map(arrondi,i1[k]),k=1..nops(i1))}:
> intersection('F', cc2, cc3,[W,X]);
> i2:={map(evalf,coordinates(W)),map(evalf,coordinates(X))};
> i2:={seq(map(arrondi,i2[k]),k=1..nops(i2))}:
> plots[display]({draw(T,color=black),draw(T1),draw(T2),draw(T3),draw(cc1,color=blue),draw(cc2,color=blue),draw(cc3,color=blue)});
> op(i1 intersect i2) # mettre un # en tête de cette ligne pour seulement voir la figure
> end proc:
> Torricelli(A,B,C);
[2.845000000, -0.7640000000]
|
En espérant que cela vous convienne, amicalement.
ALS |
|
Revenir en haut de page |
|
|
michel Invité
|
Posté le: 16 Avr 2005 15:04 Sujet du message: Point de Torricelli d'un triangle |
|
|
Bonjour, merci beaucoup pour cette procédure qui me convient parfaitement. J'ai apprécié l'habile usage de la commande "intersection".
A bientôt. |
|
Revenir en haut de page |
|
|
|
|
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum
|
Développé par phpBB © 2001, 2006 phpBB Group
Traduction par : phpBB-fr.com
Apprendre Maple - ©
- Alain Le Stang - Navigation optimisée pour une résolution 1024 x 768.
|