Utiliser le hasard en géométrie dynamique

Exemples de base sur la fluctuation des échantillonnages
dimanche 7 juin 2009
par  Yves MARTIN

Le tableur est pour beaucoup d’entre nous le logiciel optimum pour travailler sur le concept de fluctuations des échantillonnages (avec son F9 qui permet de relancer toute la feuille). Pourtant, il a lui aussi son langage particulier qu’il faut apprendre. Aussi, voir le même concept avec un changement de cadre significatif, mais aussi dans une approche un peu plus algorithmique, au moment où celle-ci apparait en lycée, peut être des plus enrichissant, au moins en formation continue des enseignants.

La fonction random de CaRMetal a la syntaxe suivante : random(n) renvoie un nombre décimal - on dit souvent un réel mais c’est juste un fantasme linguisitique - compris entre 0 et n exclu.

Le logiciel étant libre, le random est celui de la bibliothèque java, dont on sait que l’équirépartition a largement été testée et est d’aussi bonne qualité que les fonctions équivalentes des tableurs par exemple.

Petite remarque au passage
Les nombres dans les calculatrices scientifiques ne sont pas implémentés comme dans les ordinateurs, ils sont programmés en « décimal codé binaire » alors que les ordinateurs ont les nombres codés en binaire.
Ceci explique que des programmes spécifiques sur le chaos par exemple ou même la récurrence peuvent parfois fonctionner bien mieux sur calculatrice que sur ordinateur : on peut plus facilement faire diverger une suite récurrente convergente avec un tableur qu’avec une calculatrice : cela n’a rien à voir avec la qualité du tableur, c’est une question d’implémentation des nombres...

1. Une première utilisation

Commençons par un exercice d’apprentissage élémentaire : tracé au hasard des diagonales d’un polygone régulier.

On prend un curseur (dans les outils de contrôle) qui va de 8 à 100 (par exemple) avec un pas de 1. J’ai pris l’habitude, même si ce n’est pas utile ici (cela ne sert que si on veut faire des macros), de prendre une variable n qui vaut la valeur du contrôle. Puis on se donne deux nouvelles variables ptA et ptB qui vont représenter les sommets des cordes à dessiner sur le polygone régulier. Ces deux variables sont définies ainsi (copie d’écran de l’inspecteur d’objet coupé sur les informations qui nous concernent ici) :

Et exactement la même chose pour la variable ptB.

On définit ensuite deux points A et B et on construit le segment [AB]. Avant de poursuivre, il est préférable de déjà activer la trace du segment [AB] (faire un clic-droit sur le segment pour l’ouvrir dans l’inspecteur d’obje, ce qui se fait avec une case à cocher à droite de l’onglet « Aspect » :

On va ensuite modifier A et B en utilisant les valeurs tirées au hasard pour ptA et ptB. On fait ceci pour le point A et pour le point B (en remplaçant ptA par ptB dans l’illustration ci-dessous). Le 5 signifie juste qu’on se place sur un cercle de rayon 5 :

La chose à éviter...
mais à tenter une fois quand même pour le fun

Ce serait de donner ces valeurs à A et à B AVANT de construire le segment [AB] : on arrive à prendre le point A mais il vous sera quasiment impossible d’attraper le point B.
À essayer, vraiment amusant.

Comme dans tous les logiciels utilisant un random, les valeurs sont mises à jour dès qu’il y a manipulation dans le logiciel (d’où la note précédente). Cela signifie aussi qu’il faut qu’il se passe toujours quelque chose à l’écran pour que des valeurs soient tirées au hasard. Le plus simple est de faire tourner un point en permanence sur un cercle.

Cela se fait avec l’icône d’animation (représentée par un film, dans la palette d’objets, à l’item Édition, entre la clé à molette et la touche annulation).

Dans la figure suivante, l’animation est lancée par défaut. Il vaut mieux commencer par effacer les traces comme indiqué dans la figure.

<carmetal|doc=728|largeur=712|hauteur=543>

Sympa quand même avec deux random, deux points et un segment, difficile de faire plus simple.

Utilisation de la figure en local
En local on peut dispose d’une commande pour effacer les traces , mais voici d’abord la manipulation pour lancer l’animation
Pour lancer l’animation
Activer son icône dans la palette d’objets (Dans Édition, icône de film)
Il faut trois clics : un sur M pour désigner le point qui va être animé, un sur le cercle pour dire l’objet parcouru par M, et une nouvelle fois sur M pour lancer l’animation.
Quand l’animation est lancée vous pouvez
• faire un (Crt-T (sur Win) ou Cmd-T (sur Mac) pour effacer la trace,
• Maj-flèche droite pour accélérer l’animation,
• et modifier n en temps réel (mais il vaut mieux faire aussi effacer les traces sinon cela ne signifie plus grand chose.

2. Fréquence sur les dés - Première fluctuation des échatillonnages

Cette figure va être l’occasion de voir une différence de traitement avec un tableur pour une même situation. On se propose, très classiquement, de lancer deux dés et d’afficher l’évolution de la fréquence d’apparition du 7 et du 10 comme somme des deux tirages. Par ailleurs, par rapport à la figure précédente, on se propose d’améliorer la mise en œuvre pour une utilisation en ligne, d’où un interrupteur Marche/Arrêt en plus.

La principale différence de traitement avec un tableur est dans l’organisation même des donnes : un tableur incite à utiliser une ligne par lancer et faire des sommes avec - par exemple - des fonction de type NBRE.SI.
Ici au contraire, tout va être défini récursivement, facilement mais récursivement, donc avec une initialisation. D’où ce bouton Marche/Arrêt qui permet aussi de faciliter l’initialisation des variables récursives.

On commence par définir deux variables d1 et d2 qui représentent les deux dés, avec un classique :

(classique car c’est exactement comme avec un tableur).

Dans les copies d’écran suivantes, la variable associée à la boîte à cocher Marche/Arrêt s’appelle a, on dispose aussi d’un point M qui va tourner autour d’un cercle pour avoir des tirages aléatoires en permanence.

On utilise ici la fonction d de CaRMetal qui renvoie la variation d’un objet. En particulier d(M) est positif si M se déplace et nul si M ne se déplace pas. On définit alors une variable nb qui représente le nombre de lancers par :

ce qui se lit comme "si le bouton Marche/Arrêt n’est pas enclenché ou si M ne bouge pas, alors nb vaut 0 sinon on ajoute 1 à nb.

Ensuite on définit deux variables som7 et som10 qui augmentent de 1 si le tirage en cours donne 7 - respectivement 10 - comme somme des deux dés.
Par exemple pour som7 on a :

avec une initialisation si le nombre de lancers est nul et une indentation de 1 si la somme vaut 7. On fait de même avec som10.

Enfin la fréquence. On définit deux points A (pour le 7) et B (pour le 10). Il suffit de diviser le nombre som7 (ou som10) par le nombre de lancers et de l’afficher (en activant la trace ce qui se fait dans l’onglet Aspect). On a choisi cet affichage :

ce qui signifie que l’on a choisi 10 unités en abscisses pour 250 lancers et 10 unités de la grille en ordonnées pour une unité. Voici la figure correspondante :

<carmetal|doc=729|largeur=721|hauteur=526>

Autre utilisation de la figure (que ce qui est indiquée dans son texte)
On peut simplement cliquer dans la figure pour arrêter l’animation, zoomer (ou zoomer/dézoomer) pour effacer les traces et à nouveau cliquer dans la figure pour relancer l’animation.

En soi, cette figure est suffisante pour illustrer cette fluctuation des échantillonnages puisque l’on efface les traces par un Crtl-T (où Cmd-T). On peut essayer de faire néanmoins un peu mieux, en traçant de couleurs différentes les points de plusieurs échantillonnages successifs.

3. Fluctuation des échantillonnages

Cette fois on se limite à la somme égale à 7 et on va changer de couleur pour chaque groupe de 250 tirages. On va afficher sur le même graphique 6 échantillonnages différents.

Pour cela on ajoute une variable Ech qui indique le groupe d’échantillonnage dans lequel on est :

La définition est encore récursive avec une initialisation sur nb.

Pour cela il faut aussi modifier nb :

Ensuite il suffit juste, dans l’onglet « Conditionnel » du point A, d’afficher des couleurs différentes pour chaque valeur du groupe d’échantillonnage :

Ce qui donne la figure suivante pour laquelle on précise qu’il n’y a pas d’autre critère d’arrêt que le clic sur Marche/Arrêt. Cela aurait été possible mais cela nécessite une récurrence croisée entre Ech et nb ce que l’on a voulu éviter. Penser à utiliser le « Maj + Flèche droite » pour accélérer la vitesse (avec le curseur sur l’applet).

<carmetal|doc=705|largeur=790|hauteur=523>

4. Autre exemple de simulation

Un exercice « célèbre » - puisque présent dans des exemples officiels - est celui du lièvre et de la tortue avec, selon ensuite les variantes, des règles légèrement différentes.

Dans les programmes de 2008 on faisait de la fluctuation des échantillonnages sur cet exemple. Comme les probabilités vont arriver plus rapidement dans les programmes, on a choisi ici de simuler la fréquence de réussite du lièvre et de la tortue. Il ne faudrait pas beaucoup de modification pour transformer la figure en une figure comme les précédentes.

Ne pas oublier la touche Maj-Flèche droite pour accélérer et Maj-Flèche gauche pour ralentir (souris sur l’applet).

<carmetal|doc=730|largeur=790|hauteur=523>

Les personnes intéressées pourront décortiquer les définitions de chaque variable pour voir que tout est encore une fois réalisé de manière récursive. En ce sens, CaRMetal est un aussi un merveilleux logiciel de programmation ;-)

5. Compléments

Dans cette page d’introduction au random, on aurait pu voir l’aspect fréquentiste du lancer de dé ou d’une pièce, mais cela a été fait déjà par Éric Halenholz lui-même pour ses élèves, dans ce diaporama avec des figures bien plus soignées qu’ici.

Plus sur l’aspect récursif dans CaRMetal sur le site de l’IREM.

Un autre exemple d’utilisation du random en géométrie, dans la recherche de matrices à coefficients entiers et de déterminant 1 dans une problématique de Poincaré : dans ce diaporama de Alain Busser à la figure 7 (mais ça serait dommage de ne pas voir les autres ;-)

Plus généralement, nous sommes beaucoup à avoir appris l’essentiel de CaRMetal avec les tutoriaux de Monique Gironce que l’on peut au choix visionner ou télécharger sur le site même de CaRMetal.


Documents joints

EchantillonnageV2
RandomDiagonales
EchantillonnageV1
Tortue2Regles

Commentaires