Les nouvelles technologies pour l’enseignement des mathématiques
Intégration des TICE dans l’enseignement des mathématiques

MathémaTICE, première revue en ligne destinée à promouvoir les TICE à travers l’enseignement des mathématiques.

Suspendre le temps en géométrie dynamique pour affiner l’investigation
Article mis en ligne le 27 septembre 2008
dernière modification le 22 mars 2015

par Eric Hakenholz, Yves Martin

Ce texte est une sorte de « narration de recherche » effectuée autour d’une investigation spontanée à l’issue d’un atelier présenté lors du récent colloque « maths et TICE » qui s’est déroulé à Lille les 4, 5, et 6 juin 2008.
Si le contenu mathématique est tout à fait modeste, le questionnement, les hésitations et surtout les outils mis en œuvre pour cette investigation nous ont semblé mériter d’être rapportés pour éventuellement servir dans de nombreux autre registres ou simplement utiliser cette activité en formation.

Considérations techniques
Cet article contient 8 figures en autoanimation ce qui en fait une page web assez lourde à interpréter.
En pratique compter quelques minutes pour le chargement de l'applet principale et l'interprétation des figures.
Ensuite en plaçant un applet à l'écran (et ensuite sans scroller), il faut environ 20 s pour que la figure apparaisse. Si elle contient une animation automatique sur un point M et un bouton de mise en marche (toujours le cas aprés la figure dite "de Rémy") il y a un petit temps d'initialisation du point M et en moins d'un tour de M, les boutons de contrôle dans la figure apparaissent.
Nous avons choisi de laisser la "figure de Rémy" identique à l'original : elle se lance automatiquement et est généralement bien avancée au moment où on arrive dessus.
Toutes les figures sont téléchargeables en fin d'article.
Dans SPIP les liens sont par défaut "dans la page". Penser à cliquer-droit pour les ouvrir dans un autre onglet.

Tout d’abord remarquons que le temps n’existe pas en géométrie dynamique (GD dans la suite). Si une figure est - en première analyse pour être rapide - une liste de constructions géométriques effectuées séquentiellement à partir d’objets de base et d’items de constructions (ou de macro-constructions), lâcher la souris quand on manipule une figure est une actualisation de cette figure. La géométrie dynamique virtualise - au sens de Pierre Lévy [1] - le dessin géométrique en remontant à la problématique de la figure géométrique.

En particulier, pour ce qui nous occupe ici, la manipulation directe n’introduit pas de temps dans les figures, le temps appartient à celui qui manipule les objets de base de la construction. La figure - comme objet conceptuel de virtualisation d’un dessin - est intemporelle. L’introduction d’outils d’animation n’y change rien car ceux-ci correspondent seulement à une manipulation automatique de l’utilisateur [2]

Alors suspendre le temps dans une figure suppose déjà de l’avoir introduit, puis ensuite de se donner des moyens de le modifier, c’est-à-dire, pour ce qui va suivre, d’en figer un instant localement à l’écran pendant qu’il continue à se dérouler.

Prélude au temps : l’autoréférence

Les plus anciens d’entre les lecteurs se souviennent de ces exercices de logo que l’on s’amusait à faire faire à nos élèves, comme la « définition » de la marche :

POUR MARCHE
AVANCE 1
MARCHE
FIN

qui bien entendu bloquait l’ordinateur si on lançait la procédure. Mais la tortue sortait de l’écran et on avait montré que le mouvement peut-être défini, dans des cas élémentaires, comme une simple autoréférence. Cela enseignait bien entend aussi la nécessité d’un critère d’arrêt, ce que l’on n’a pas nécessairement en mathématique quand on étudie la limite d’une suite.

En physique, une des représentations archétypiques du souvenir de l’action est celle du thermomètre qui contient en lui-même la fonction max : le mercure monte un bouchon qui ne redescend pas, ce qui donne la température maximale du jour, de la semaine ou du mois, jusqu’à la réinitialisation manuelle de ce curseur naturel.

On aimerait simuler ce phénomène en géométrie dynamique. La première réaction est dire que, justement ce n’est pas possible : il faudrait qu’l y ait du temps en géométrie, qu’un logiciel de géométrie dynamique soit un logiciel de mécanique ... et encore, pas seulement ...

Voyons concrêtement ce qu’il faudrait pour que l’on fasse quelques hose, en terme de manipulation direct qui soit le souvenir du max. Il faudrait que l’abscisse d’un point Max d’une droite (ici horizontale pour des questions d’édition) puisse prendre selon la position d’un point M, l’abscisse de M si elle est plus grande que celle de Max, et reste invariante sinon. Tout comme l’exemple de la tortue logo d’introduction, il semble bien qu’une une référence circulaire de l’abscisse d’un point « suffirait ». Ensuite l’expression conditionnelle (en if then else) telle qu’elle apparait en filigrane de l’algorithme, n’est pas véritablement nécessaire dans ce cas précis si on se souvient que :

$Min(a,b) = \frac{a+b-|a-b]}{2}$ et $Max(a,b) = \frac{a+b+|a-b]}{2}$

Or l’implémentation de CaRMetal permet la référence circulaire des variables : par défaut pour les points sur lesquels nous n’agissons pas directement, avec le symbole @ pour les points en manipulation directe. On peut ainsi écrire pour le bornes Min et Max

Première application de la référence circulaire
La variable s'appelle Min, son abscisse est définie par :
(x(Min)+x(M)-abs(x(M)-x(Min)))/2
L'autre variable s'appelle Max, elle est définie par :
(x(Max)+x(M)+abs(x(M)-x(Max)))/2
Pour comprendre une différence avec ce qui va suivre, signalons que les points Min et Max sontd''abord créés (on ne peux pas faire autrement) avant de leur donner des coordonnées.
Cette création se comporte comme étant en soi une initialisation.

Déplacer M, les points Min et Max s'actualisent. On peut même déplacer P ce qui naturellement déplace M
et actualise aussi (dans le déplacement de P) les points Min et Max.

La figure étant dans le navigateur, on peut remettre les Min et Max à leurs valeurs initiales par un rafraichissement de la page (ce qui sur cette page est trop long), mais en pratique, il faudrait incorporer un processus de réinitialisation comme ici :

On peut déplacer M pour modifier Min et Max. Et un aller retour du curseur init fait une réinitialisation des bornes.

Insertion d'une initialisation
Si a est la variable de curseur d'initialisation, la nouvelle abscisse de Min s'écrit :
(if(a<0;x(M)-1;(x(Min)+x(M)-abs(x(M)-x(Min)))/2)
De même pour Max :
if(a<0;x(M)+1;(x(Max)+x(M)+abs(x(M)-x(Max)))/2)
Bien entendu, un "if then else" complet est nécessaire ici.

Le vocabulaire du temps

Dans un premier temps, nous avons dit qu’une figure usuelle est intemporelle au sens où le dessin qui la représente est toujours le présent de son actualisation. Puis nous venons de voir que dans certains cas élémentaires, l’autoréférence permet l’expression de la mémoire de l’action dans une figure simple. Malgré l’intérêt évident de l’autoréférence dans de nombreux domaines (règles d’utilisation), on imagine toutefois ses limites quant à l’expression temporelle.

Voyons un autre exemple de situation temporelle peut-être encore plus archétypique que la précédente. Chacun a déjà fait tourner un point autour d’un cercle. Au bout d’un tour, l’angle, passant par 360°, revient à 0°. Introduire le temps dans cette situation serait se souvenir du nombre de tours. Sa mise en œuvre a déjà été présentée - par Eric - en 2005 dans cet article de CaRZine, et une macro, « curseur circulaire continu » est disponible depuis longtemps dans CaRMetal.

L’article de 2005 explique en détail le subtil fonctionnement de cette figure. Toutefois, nous allons explorer d’autres possibilités ici.

Pour Pierre Lévy, c’est la naissance des langages qui a produit la virtualisation du présent.

Le langage virtualise le « temps réel » qui tiens le vivant prisonnier de « l’ici et maintenant ». Il ouvre le passé, le futur. [...] À partir du langage les humains habitent un espace virtuel que le présent immédiat n’actualise que partiellement. Les langages - par le récit, le conte - permettent un décollement de l’expérience immédiate. La virtualisation du « temps réel » - du noeud de l’ici maintenant - ouvre de nouveaux espaces, de nouvelles vitesses. De nouvelles questions qui se complexifie avec l’évolution des langages.

En géométrie dynamique, il a fallu aussi « enrichir le langage » pour que la virtualisation du présent soit possible. On l’a vu avec la première étape de l’autoréférence des objets. Pour aller plus loin, CaRMetal dispose de deux mots supplémentaires ; c’est ce que nous allons voir maintenant.

C’est à la fonction sum que l’on doit la possibilité d’implémenter un temps dans les figures. sum(a,b) réalise une somme incrémentée de a à chaque fois qu’un objet est déplacé ; si b prend une valeur strictement négative, la somme est remise à zéro.
La fonction d joue aussi sur ce qui va suivre un rôle considérable. Elle permet de connaitre, à un instant donné, la différence entre l’ancienne valeur rattachée à un objet et la nouvelle. Par exemple, si P est un point, d(P) donne la distance entre la nouvelle position de P est la dernière qui ait été relevée par le logiciel.

Voici une utilisation élémentaire de la fonction d pour supprimer le curseur d’initialisation dans la figure précédente sur le min et le max. Dans la figure suivante, la réinitialisation des bornes se fait simplement en déplaçant le point P, avec cette définition de l’abscisse de Min par exemple :

if(d(P)>0 ;x(M)-1 ;(x(Min)+x(M)-abs(x(M)-x(Min)))/2)

Utlisation de la fonction d : après avoir modifié les Min et Max en déplaçant le point M, un déplacement du point P réinitialise la figure.
La figure contient en elle-même sa propre initialisation

La figure suivante montre un exemple de comportement de la fonction sum associé à la fonction d.

Aspect technique
La variable qui contient d(M) s'appelle varM
Le compteur s'appelle a et sa définition (récursive avec initialisation) est : if(varM>0;a+1;0)
L'initialisation est la mise à 0 : en fait elle n'a lieu qu'au départ - nécessaire - et quand on relâche le point M.
La somme est simplement sum(a;0) mais c'est aussi pour cela que cela augment très vite ...

Dans cette figure, déplacer M puis faire une pose tout en le maintenant enfoncé :
on voit que d(P) ne varie pas (c'est l'ancienne valeur) et que le compteur et la somme restent fixe.
Continuer à déplacer M, puis relâcher. La somme reste et continue de croitre si on reprend M alors que le compteur repart de zéro.

Réalisation d’un temps contrôlé

Pour automatiser un défilement temporel on peut faire tourner un point sur un cercle comme ici.

On peut cliquer dans l'applet par arréter et faire repartir le point M.
Le compteur n'est pas remis à 0 car d(M) garde une valeur positive avant l'appel.

Code d'un premier compteur
if(varM>0;a+1;0)
varM est le nom de la variable qui contient d(M).
On note l'appel récursif partiel car au départ (d(M)=0 même avec l'animation automatique), il faut une initialisation, c'est le 0 du sinon de l'instruction conditionnelle.

Il est plus confortable d’ajouter un bouton Marche/arret, et un curseur vitesse

On peut régler la vitesse entre 1 et 10.

Code du compteur avec arret et vitesse
if(Marche==0;0;if(varM>0;a+Vite;a))
Dans ce cas, la définition récursive est totale, avec le a+Vite;a. Mais ceci n'est possible que parce que la variable est initialisée de manière exterieure, par la référence à la variable Marche.
En effet, contrairement à un point qui est "initialisé" au moment de sa création, ce phénomène n'existe pas pour une variable :
le logiciel refuse l'interprétation d'un if(varM>0;a+Vite;a) car non initialisé.

Réalisation d’un nombre aléatoire contrôlé

La fonction random(n,b) renvoie un nombre aléatoire réel compris entre 0 et n. Si b vaut 0 (faux), il n’y a pas de recalcul et le random n’est appelé qu’une seule fois. Si b vaut 1 (vrai) le random recalcule un nouveau nombre aléatoire à chaque fois qu’un objet est déplacé. Voici donc la figure préliminaire au travail que nous nous proposons d’explorer :

Réalisation d'un tirage aléatoire entre 0, 1 ou 2

Tirage aléatoire
floor(random(3;d(tps)>0))
Le compteur s'appelle ici tps (pour temps). Quand le bouton Marche est cliqué, d(tps) - qui vaut la vitesse - est positif, donc on tire toujours un nouveau nombre au hasard
On fera attention d'utiliser un booléen d(tps)>0 et non pas un nombre comme d(tps).

Contexte initial : la figure de Rémy

Une première figure provient d’une discussion dans le forum de CarMetal. Son auteur, Rémy, propose un appel autoréférent d’un point P afin d’établir une récurrence. Afin de visualiser dans le logiciel ce qu’il savait des attracteurs de familles de contractions (Hutchinson, 1981), Rémy part du principe de la construction du triangle de Sierpinski ABC à partir d’un point quelconque P$_0$ et de ses homothétiques successifs par les h$_A,_{1\over 2}$, h$_B,_{1\over 2}$, h$_C,_{1\over 2}$ prises aléatoirement. Plus précisément, à partir de P$_0$, on construit les points (P$_n$) tels que P$_{n+1}$ = h$_U,_{1\over 2}$(P$_n$) où U est aléatoirement l’un des points A, B, ou C.

Référence circulaire du traitement aléatoire
x=if(rand==0,(x(P)+x(A))/2,if(rand==1,(x(P)+x(B))/2,(x(P)+x(C))/2))
y=if(rand==0,(y(P)+y(A))/2,if(rand==1,(y(P)+y(B))/2,(y(P)+y(C))/2))
Cette figure est la première figure faite avec la fonction random implémentée par Eric pour répondre au topic de Rémy

Il suffit alors d’activer la trace du point P et d’animer un point sur un cercle pour qu’apparaisse un nuage de points formant un triangle de Sierpinski.

Principe d'un tirage aléatoire généré automatiquement, avec utilisation de coordonnées autoréférentes

Prolongement de la figure initiale et questionnement

Cette figure, une fois l’animation lancée, se complète très vite sans que l’utilisateur puisse arrêter ou ralentir la création des termes successifs de la suite (P$_n$). Ajouter à cette figure initiale le contrôle de la génération des nombres aléatoires (vitesse et arrêt) permet notamment, devant public, de faire comprendre visuellement et immédiatement le procédé de fabrication du nuage de points en générant au “compte-goutte”, à partir d’une position initiale P$_0$, les points P$_1$, puis P$_2$.

Commencer par cliquer sur Marche puis augmenter la vitesse

Présentée en atelier lors du colloque TICE de Lille en juin 2008, cette figure “contrôlée” a soulevé la question de l’importance du hasard pour obtenir le triangle de Sierpinski. Un participant (Benjamin Clerc que l’on connaît bien à Sesamaths ;-) demande ce que l’on obtient si, au lieu du hasard, on répète périodiquement les homothéties de centre A, B et C. Les représentations initiales des participants divergent. Quelques uns se demandent en quoi le hasard est réellement nécessaire pour obtenir (asymptotiquement) tout le triangle, d’autres pensent que l’on ne va obtenir qu’une partie de la figure autour de points remarquables, et certains pensent qu’on pourrait n’obtenir qu’une partie de mesure nulle, typiquement une réunion de segments.

Première investigation

Une sorte de “mais oui bien sûr” a surgit lorsque, le soir même de l’atelier, nous avons (Yves Martin, Eric Hakenholz) décidé de retirer le hasard de la figure présentée en atelier. Modifier la figure initiale pour avoir de manière cyclique les centres des homothéties en A, B, C ne prend que quelques secondes :

Permutation circulaire sur les homothéties de centre A, B puis C successivement
On remplace l'expression du choix d'un nombre aléatoire dans 0, 1, 2 : floor(random(3;d(lent)>0)), simplement par
lent-3*floor(lent/3)

Comme la figure précédente, cliquer sur Marche puis augmenter la vitesse

Et le résultat est rapide : on trouve rapidement trois points fixes successifs. Trois points fixes ou trois points limites ? La ne se pose pas vraiment car le point variable passe bien sur le même pixel, il y a clairement une convergence - probablement géométrique vers trois valeurs d’adhérence.

Investigation par suspension du temps

Une idée serait d’afficher la valeur de d(P) pour chacun des trois points successifs. CaRMetal permet de poser des points « clone de points » mais on aimerait automatiser cela. Il faut donc commencer par garder trois traces distinctes de chaque passage autour du point d’accumulation liés à A puis celui de B et de C. Nous commençons donc par créer trois points F, G et H qui prennent les positions de P respectivement pour l’homothétie de centre A, B et C. Pour cela nous allons encore utiliser une définition récurrente

Définition de F, G, H
if(alea3==0;x(P);x(F))
Autrement dit le point F va sur P si l'homothétie est de centre A, sinon le point F reste en F.
On note que cette définition est valable car quand Marche est arreté, alea3 vaut 0 et donc le point F est initialisé.
Mais justement cela ne va pas fonctionner pour les deux autres points. Pour G il faudrait l'initialiser à lui-même pour alea3 égal à 0, ce n'est pas possible. Aussi comme pour la régularité du compteur, on utilise une initialisation extérieure par lent (le compteur) égal à 0 au lancement de la figure.
if(lent==0;-100;if(alea3==1;x(P);x(G)))
Ainsi le point G est en dehors de l'écran (en général) à son initialisation, et rentre dans l'écran dès que alea3 prend la valeur 2 puis y reste ensuite.
De même pour H en prenant la valeur 2 pour alea3.

Visuellement on a "séparé P" en trois points qui convergent chacun vers un point fixe

Pour une confirmation de la convergence, on aimerait afficher la variation de ces points. Mais si on tente d’afficher d(F), l’affichage est très rapide car d(F) est nul sauf pour un bref instant. Et l’idée vient alors d’essayer suspendre cet affichage – comme un zoom sur le temps – pour rendre compte de ce phénomène en particulier dans une démarche de communication (typiquement pour de la formation). Pour cela nous allons utiliser la fonction sum.

Suspension temporelle de l'affichage de d(F)
L'affichage de d(F) étant trop rapide, on l'englobe dans un protocole (la fonction sum) qui va permettre de le conserver à l'écran.
F prend une nouvelle position quand alea3 est nul. Et il y reste pour les deux valeurs suivantes.
On peut donc réinitialiser la somme de d(F) à la valeur suivante 1, et on additionne les deux valeurs suivantes, pour alea3 égal à 2 puis à 0.
Quand alea3 est à 2, F n'a pas bougé, d(F) prend la valeur 0 et on lui ajoute, quand alea3 passe à 0, la variation que le point F vient d'effectuer : c'est la valeur que l'on veut voir.
Même si l'affichage est entrecoupé de remise à 0 de la somme, on voit décroitre les distances consécutives.
Ce qui précède se résume en une petite ligne :
sum(d(F);if(alea3==1;-1;1))

Ralentissement de la valeur instantanée d(F) pour pouvoir la voir à l'écran

A l’issue de ce premier travail, il est clair que la suite des points (P$_n$) a trois valeurs d’adhérence, les points que l’on notera S$_A$, S$_B$ et S$_C$.

Propriété des points limites observées

Avec CarMetal, on peut construire à la volée des points clones de points donnés qui resteront des points fixes dans la suite. On attend donc que la valeur affichée de d(P) soit nulle pour construire ces points, par Shift-clic sur P quand P est successivement sur S$_A$, S$_B$ et S$_C$.

Figure que l'on pourrait manuellement obtenir après "stabilisation" des points F, G et H.

On peut ensuite utiliser les outils de test pour observer – et donc conjecturer – les propriétés suivantes :
  Deux de ces points semblent alignés avec un sommet : S$_B$, S$_C$, C semblent alignés, de même pour S$_C$, S$_A$, A ainsi que S$_A$, S$_B$, B ;
  Dans chaque triplet, le point entre les deux des autres semble être leur milieu : S$_C$ est le milieu de S$_B$ et C.
  Si on note I le milieu de [AB], U celui de [S$_A$S$_B$] et V celui de [S$_A$S$_C$], on constate également que ces trois points I, U, V paraissent alignés.

Preuve des résultats précédents par les homothéties

Les deux premières conjectures peuvent activer le souvenir d’une situation bien classique sur les homothéties : étant donné un triangle ABC, construire P, Q, R tel que P est milieu de [AR], Q est milieu de [BR] et R est milieu de [CQ].

R est le point fixe de h$_C,_{1\over 2}$ o h$_B,_{1\over 2}$ o h$_A,_{1\over 2}$ et on construit R par l’image M de A par la composition de ces 3 homothéties : $\overrightarrow{AR}$=$\frac{8}{7}\overrightarrow{AM}$.

A partir du premier point P$_0$ de la suite (P$_n$), on peut écrire :

$P_{3k+3}$ = h$_C,_{1\over 2}$ o h$_B,_{1\over 2}$ o h$_A,_{1\over 2}$ ($P_{3k}$) = h$_R,_{1\over 8}$($P_{3k}$),

soit $\overrightarrow{RP}_{3_k_+_3}$ = $\frac{1}{8}$ $\overrightarrow{RP}_{3k}$ = $\frac{1}{8^k}$ $\overrightarrow{RP_3}$ =$\frac{1}{8^{k+1}}$ $\overrightarrow{RP_0}$

Et donc que (P$_{3_k}$) converge vers R soit S$_C$ =R.

De même P$_3_k_+_2$ = h$_B,_{1\over 2}$ o h$_A,_{1\over 2}$ o h$_C,_{1\over 2}$ (P$_3_k_-_1$) = h$_Q,_{1\over 8}$(P$_3_k_-_1$),

soit $\overrightarrow{QP}_{3k+2}$ = $\frac{1}{8}$ $\overrightarrow{QP}_{3(k-1)+2}$ = $\frac{1}{8^{(k-1)}$ $\overrightarrow{QP_2}}$.

Autrement dit (P$_{3k+2}$) converge vers Q soit S$_B$ =Q. De même, en considérant la suite (P$_{3k+1}$) on obtient S$_A$ =P.

Preuve par le calcul barycentrique

Soit toujours P$_0$ le point de départ et (P$_n$) la suite des points construits par l’application successive des homothéties h$_A,_{1\over 2}$, h$_B,_{1\over 2}$ et h$_C,_{1\over 2}$.
On peut écrire $P_1$ = $\frac{P_0 +A}{2}$, $P_2$ = $\frac{P_1 +A}{2}$ = $\frac{P_0 +A+2B}{4}$ et
$P_3$ = $\frac{P_2 +C}{2}$ = $\frac{P_0 +A+2B + 4C}{8}$.

Puis $P_4$ = $\frac{P_0 +9A+2B + 4C}{8}$,
$P_5$ = $\frac{P_0 +9A+18B + 4C}{16}$, $P_6$ = $\frac{P_0 +9A+18B + 36C}{32}$.

Par récurrence, on a $P_{3k+1}$ = $\frac{P_0+ (\sum_{n=0}^{k}8^n )A+2(\sum_{n=0}^{k-1}8^n) B+4(\sum_{n=0}^{k-1}8^n)C}{2.8^k}$,

soit encore :
$P_{3k+1}$ = $\frac{7P_0+ (8^{k+1}-1 )A+2(8^{k}-1 ) B+4(8^{k}-1 )C}{14.8^k}$ qui converge vers $S_A$ = $\frac{4A+B+2C}{7}$.

Par permutation circulaire, on a $S_B$ = $\frac{4B+C+2A}{7}$ et $S_C$ = $\frac{4C+A+2B}{7}$.

On vérifie alors immédiatement les propriétés conjecturées.

Par exemple $\frac{S_B+C}{2}$ = $\frac{4B+C+2A+7C}{14}$ = $\frac{2B+4C+A}{7}$ = $S_C$.

Preuve par le point fixe d’une fonction - Généralisation

Considérons l’application

$$ f : (P,Q,R) \mapsto \left( \dfrac{A+R}{2},\dfrac{B+P}{2},\dfrac{C+Q}{2} \right). $$

Cette application admet un unique point fixe :

$$ \begin{array}{ll} f(P,Q,R)=(P,Q,R)\quad &\Longleftrightarrow \quad \left\{ \begin{array}{l} \dfrac{A+R}{2}=P\[0.5cm] \dfrac{B+P}{2}=Q\[0.5cm] \dfrac{C+Q}{2}=R \end{array} \right.\[2cm] &\Longleftrightarrow \quad \left\{ \begin{array}{l} P=\dfrac{B+2C+4A}{7}\[0.5cm] Q=\dfrac{C+2A+4B}{7}\[0.5cm] R=\dfrac{A+2B+4C}{7}. \end{array} \right. \end{array} $$

Dans la suite, notons $(P_{0},Q_{0},R_{0})$ ce point fixe.

On remarque que

$$ \left\| \dfrac{A+R}{2}-P_{0} \right\| = \left\| \dfrac{A+R}{2}-\dfrac{B+2C+4A}{7} \right\| = \left\| \dfrac{7R-A-2B-4C}{14} \right\| = \left\| \dfrac{R-R_{0}}{2} \right\|, $$


d’où il vient que

$$ \begin{array}{ll} \left\| f(P,Q,R)-(P_{0},Q_{0},R_{0}) \right\| &= \text{sup} \left( \left\| \dfrac{A+R}{2}-P_{0} \right\|, \left\| \dfrac{B+P}{2}-Q_{0} \right\|, \left\| \dfrac{C+Q}{2}-R_{0} \right\| \right)\[0.5cm] &= \dfrac{1}{2}\ \text{sup} \left( \left\| P-P_{0} \right\|, \left\| Q-Q_{0} \right\|, \left\| R-R_{0} \right\| \right)\[0.5cm] &= \dfrac{1}{2} \left\| (P,Q,R)-(P_{0},Q_{0},R_{0}) \right\|. \end{array} $$

Ceci montre que les itérés d’un triangle initial \textitquelconque convergent vers le triangle $(P_{0},Q_{0},R_{0})$, et pas seulement ceux d’un triangle du type $(M_{0},M_{1},M_{2})$ comme on l’a considéré plus haut.

Complément : exercice sur l’autoréférence

Chacun connait l’exercice de base qui consiste à faire glisser un segment de longueur fixe contre deux « murs orthogonaux ». Traditionnellement en géométrie dynamique on déplace - ou anime - un point du sol pour faire se déplacer le segment.

Avec CaRMetal et la référence circulaire des points, on peut faire la même figure avec la possibilité de prendre le segment par l’une quelconque de ses deux extrémités ...

Petit exercice pour appliquer une partie de ce qui vient d’être proposé dans cet article ...

Le site de CaRMetal.

Les figures de l’article :