next up previous
Next: Choisir des points du Up: Un exemple de MAO Previous: La solution géométrique.

La solution analytique, numérique ou symbolique.

Il en va tout autrement lorsqu'on exige une solution analytique ou une solution numérique, ou encore lorsqu'on aimerait faire dessiner la solution par un ordinateur.

Dans ces cas, les équations qui décrivent le problème posé seront du type suivant :


r + (-1)^k s == dist[c,p[[j]]]
dist[c,p[[j]]] désigne la distance du point numéro $j$, p[[j]], au centre $c$ du cercle cherché de rayon $r$. Dans la quatrième ligne de la commande, on a défini la distance entre deux points quelconques $v$ et $w$ comme la racine carrée du produit scalaire (v-w).(v-w) du vecteur $v-w$ par lui-même. Le choix de l'exposant $k=2$ ou $k=1$ permet de préciser si le décalement $s$ du point se fait respectivement vers l'extérieur ou vers l'intérieur du cercle.

Il suffit alors de trouver un moyen pour exprimer les différentes configurations possibles. Définissons d'abord chaque équation ainsi:


eq[k_,j_]:= r + (-1)^k s == dist[c,p[[j]]]
Chacun des 7 cas qui nous intéresse pourra alors s'exprimer facilement par la commande

cas[u1_,u2_,u3_,u4_]:= {eq[u1,1],eq[u2,2],eq[u3,3],eq[u4,4]}
Par exemple, une fois les 4 points numérotés, cas[1,2,2,2] donne la liste des 4 équations traduisant le cas où le premier point est à l'intérieur du cercle cherché et les trois autres à l'extérieur. La commande qui va nous permettre de trouver la solution dans chaque cas aura alors la forme suivante:

sol[u1_,u2_,u3_,u4_]:= Reduce[cas[u1,u2,u3,u4],{a,b,r},{s}]
Reduce est une puissante commande de Mathematica qui cherche à résoudre le système d'équations donné par son premier argument par rapport à la liste d'inconnues données par son second argument, en éliminant la ou les inconnues données par son troisième argument. Donc, si par exemple les points ont les coordonnées cartésiennes

\begin{displaymath}\{ \{ x1,y1 \},\{ x2,y2 \} ,\{ x3,y3 \} ,\{ x4,y4 \} \} ,\end{displaymath}

alors la commande sol[1,2,2,2] signifie :

Résous-moi le système de 4 équations suivant :

\begin{displaymath}r-s = \sqrt{(x_1 -a)^2 + (y_1 -b)^2}\end{displaymath}


\begin{displaymath}r+s = \sqrt{(x_2 -a)^2 + (y_2 -b)^2}\end{displaymath}


\begin{displaymath}r+s = \sqrt{(x_3 -a)^2 + (y_3 -b)^2}\end{displaymath}


\begin{displaymath}r+s = \sqrt{(x_4 -a)^2 + (y_4 -b)^2}\end{displaymath}

par rapport aux inconnues ${r,a,b}$ en éliminant la variable $s$.

Il suffit donc maintenant d'établir la liste des 7 systèmes possibles de 4 équations chacun, et la commande TableForm arrange l'affichage de leurs solutions sous forme de tableau, semblable à celui donné plus haut.

Si l'on est intéressé uniquement à l'aspect symbolique du problème, la commande ce4ps[{{x1,y1},{x2,y2},{x3,y3},{x4,y4}}] va engendrer, après un calcul d'une douzaine de minutes, un immense tableau (environ 120 écrans d'ordinateurs ou 34 pages de texte !) représentant les expressions symboliques du rayon et des coordonnées du centre pour chacun des 7 cercles solution.

Pour éviter l'affichage d'une pareille longueur, il est conseillé de faire suivre la commande d'un point-virgule et d'ajouter ``solutions ='' avant la commande pour pouvoir facilement y référer. Il est donc préférable d'écrire:

solutions = ce4ps[{{x1,y1},{x2,y2},{x3,y3},{x4,y4}}];

Par exemple, la première solution $(a,b,r)$ s'obtient en exécutant successivement les trois commandes suivantes:

solutions[[1,1]] (pour avoir a)

solutions[[1,2]] (pour avoir b)

solutions[[1,3]] (pour avoir r)

L'expression du rayon, obtenue en exécutant solutions[[1,3]] est particulièrement longue. La voici:

\begin{eqnarray*}
r & = &\frac{1}{2} \sqrt{\Bigl(x_1 + \frac{{x_4}^2 (y_2 - y_3...
...y_2 + x_4 y_2 + x_2 y_3 - x_4 y_3 - x_2 y_4 + x_3 y_4)}\Bigr)^2}
\end{eqnarray*}




next up previous
Next: Choisir des points du Up: Un exemple de MAO Previous: La solution géométrique.
Jean-Marc Terrier
2001-02-08