next up previous
Next: Références bibliographiques Up: Un exemple de MAO Previous: Choisir des points du

La solution graphique.

Pour obtenir la solution graphique, il suffit d'incorporer correctement la procédure de dessin ci-dessus à la solution numérique. Une maîtrise suffisamment bonne du logiciel nous permet d'obtenir alors la commande suivante, qui tient compte de la manière dont Mathematica affiche les résultats.


soletdessin[points_List]:= 
Module[{c,s,solu,solutions1,u,w,po,objpoints,res},
		Clear[a,b,r];
		po = points;
		dist[v_List,w_List]:=N[Sqrt[(w-v).(w-v)]];
		c = {a,b};
		eq[k_,j_]:= r + (-1)^k s == dist[c,po[[j]]];
		cas[u1_,u2_,u3_,u4_]:= {eq[u1,1],eq[u2,2],eq[u3,3],eq[u4,4]};
		sol[u1_,u2_,u3_,u4_]:= Reduce[cas[u1,u2,u3,u4],{a,b,r},{s}];
		solu={sol[1,2,2,2],sol[2,1,2,2],sol[2,2,1,2], sol[2,2,2,1],
			sol[1,1,2,2], sol[1,2,1,2],sol[1,2,2,1]};
		solutions1 = Map[If[#===False,False,Sort[#]]&,solu];
		solutions = solutions1 /. And->List;
		u= Map[{Take[#,{1,2}],Last[#]}&,solutions];
		w=Table[{{u[[k,1,1,2]],u[[k,1,2,2]]},u[[k,2,2]]},{k,Length[u]}];
		objpoints = Graphics[{PointSize[.03], 
			Map[Point,Table[po[[k]],{k,Length[po]}]]}];
		 res = Show[objpoints,Graphics[Table[Circle[w[[k,1]],w[[k,2]]],
			{k,Length[w]}]], AspectRatio->Automatic,
			 PlotRange->All, Axes->True]
		]
La procédure ci-dessus est suffisamment robuste pour résister aux assauts de qui voudrait la prendre en défaut en choisissant les 4 points de manière ``pathologique''. On pourrait par exemple essayer 4 points alignés, comme

soletdessin[{{0,0},{1,0},{3,0},{6,0}}],

soletdessin[{{0,0},{1,0},{3,0},{4,0}}],

ou encore faire coincider certains points, comme

soletdessin[{{0,0},{1,0},{2,0},{2,0}}],

soletdessin[{{0,0},{1,0},{1,0},{1,0}}],

soletdessin[{{0,0},{0,0},{0,0},{0,0}}],

ou enfin 4 points sur un même cercle, comme

soletdessin[{{0,0},{1,0},{1,1},{0,1}}].

Dans les cas du genre ``pathologique'', Mathematica va afficher une série plus ou moins longue de messages d'avertissement avant de produire une figure. Mais dans tous les cas, l'utilisateur pourra, en exécutant la commande

solutions

obtenir la solution numérique et comprendre pourquoi le dessin ne correspond pas à son attente.

Notons qu'il y a une manière élégante de s'assurer que, par exemple, les points choisis soient en position générique, c'est-à-dire non situés sur une droite ou un même cercle. Nous ne l'avons pas incorporée aux commandes ce4pn et ce4ps, mais elle pourrait faire l'objet d'un autre article.

La figure qui suit contient la solution graphique de l'exemple proposé au début de l'article et, comme exercice, celle d'un exemple simple de 4 points en position générique: $\{\{0,0\},\{1,0\},\{2,1\},\{3,4\}\}$.

\includegraphics [width= 12cm]{fig6gr1et2.eps}

Comme indiqué plus haut, nous proposons pour terminer une expérience de résolution graphique de 9 problèmes que le lecteur pourra reproduire, et qui va nous donner l'occasion de montrer comment rassembler une collection de plusieurs figures en une seule gallerie.

Il suffit pour cela d'exécuter successivement les commandes suivantes:


SeedRandom[``L'an 2000'']
points := Table[{Random[],Random[]},{4}]
collection = Table[d[k] = soletdessin[points],{k,1,9}]
gallerie = Show[GraphicsArray[{{d[1],d[2],d[3]},{d[4],d[5],d[6]}, 
{d[7],d[8],d[9]}}]]
Mieux que mille mots, la figure suivante illustre le résultat.

\includegraphics [width= 17cm]{gallerie2.eps}


next up previous
Next: Références bibliographiques Up: Un exemple de MAO Previous: Choisir des points du
Jean-Marc Terrier
2001-02-08