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.

La géométrie programmée : dynamiser l’espace-temps avec PyGgb

Chacun des exemples de cet article pourrait être développé en nouvel article ...

Article mis en ligne le 12 décembre 2023
dernière modification le 13 décembre 2023

par Olivier Thöni

 Préambule : historique et objectifs

Faire des mathématiques requiert (entre autres) deux modes de pensée qui interagissent. Le raisonnement (hypothético-déductif, par exemple) et la démarche algorithmique font partie intégrante de l’activité cérébrale mathématique. Et ce n’est pas nouveau ! Euclide, déjà, joue sur les deux tableaux : d’un côté, ses « Éléments », de l’autre la recherche d’un PGCD.

Portrait de Euclide Margarean par Thévet, André, 1504-1592
Bibliothèque municipale de Lyon

L’efficacité de l’usage de logiciels pour aider à visualiser, conjecturer, développer la pensée mathématique ne fait plus aucun doute.
Depuis longtemps des logiciels de géométrie dynamique apportent énormément à notre enseignement : pour ne citer qu’eux, Cabri Géomètre, Géoplan, Déclic (Emmanuel Ostenne, 2000) …levez la main si vous connaissez ces noms… Bienvenue chez les plésiosaures ! Ils ont aujourd’hui eu tendance à laisser la place à GeoGebra (Marcus Hohenwarter, 2002), dont une communauté de développeurs s’est emparé pour ajouter, petit à petit, l’analyse, le tableur, le calcul formel, la géométrie dans l’espace, etc.
Cette multiplicité de points de vue et la possibilité de les mêler lui donnent une grande utilité didactique.

On ne peut pas dire non plus que, du côté de la programmation, les lutins de Scratch (MIT-2006) soient une nouveauté, surtout si on évoque leur papa, le Logo, du merveilleux Seymour Papert (1960 !), une fameuse “tortue” (Logo, pas Papert !), virtuelle ou physique, pilotée par des algorithmes. On en trouve aussi une descendance dans le module « turtle » de Python. La longévité de cet animal n’est pas une surprise !

Et cela fait aussi quelques années désormais que les programmes officiels préconisent de travailler en mathématiques les deux aspects raisonnement / algorithmique (Plan Informatique pour Tous, 1985, puis disparition, pour revenir en force en 2009 au lycée, et en 2016, seulement, au collège).
En mathématiques au collège, Scratch, puis au lycée, Python, font office à la fois d’objets d’apprentissage et d’outils pour faire des mathématiques, et c’est très bien.

Mais jusqu’à récemment, il n’y avait pas d’outil simple pour mêler géométrie dynamique et programmation. Heureusement sont arrivés ScratchGGB de Patrick Raffinat (à tester ici), et PythonGgb, développé par les auteurs de GeoGebra, pour combler ce vide.

Pourquoi est-ce important ? Qu’est-ce qu’on peut imaginer avec ? Pour quelle plus-value ? Voici ce à quoi on va essayer de réfléchir ici.

 Le rapport au temps

Si la géométrie de GeoGebra est dynamique, pour autant, hormis lorsqu’on anime un curseur ou que l’on consulte l’historique d’une construction, cette dynamique ne concerne que l’espace, en conservant les hypothèses de construction de la figure, même si on la « secoue », et il n’y a pas de dynamique temporelle, de cinématique, pourrait-on dire : on passe d’une statique à une autre statique. On dit que le temps est « réifié ».
C’est la géométrie des figures, avec les caractérisations et propriétés associées à ses objets, celle qui parle de l’état des choses, littéralement, la statique  ! On est dans le monde de la démonstration.

A contrario, quand on exécute un programme « séquentiel », par définition, on rétablit la dynamique temporelle, on pourrait presque parler de « cinématique ».
Adapté à la géométrie, cela devient celle des constructions, celle de l’évolution des choses.
Cette fois, on est dans le monde de l’algorithme.

Mais si on essayait de faire cohabiter ces deux mondes ?
On inventerait un truc qu’on appellerait la « géométrie dynamique programmée » !
Eh bien, ce monde existe ! C’est Python-GeoGebra !
Benvenue !

 Des compétences nouvelles

  Quelles compétences ?

Même si, comme les sept nains, on n’arrive jamais à les redonner toutes, on connaît bien les six compétences mathématiques travaillées du primaire au supérieur :

  • chercher,
  • modéliser,
  • représenter,
  • raisonner,
  • calculer,
  • communiquer.

Côté pensée algorithmique (on dit aussi pensée « computationnelle », pour franciser un anglicisme), on a coutume d’en dégager quatre (source) :

  • décomposer,
  • reconnaître des motifs ou « schèmes » (Patterns en anglais),
  • abstraire,
  • trouver des solutions algorithmiques,

auxquelles on pourrait ajouter :

  • la capacité à tester un algorithme,
  • la capacité à le traduire dans un langage de programmation.

Enfin, il ne faut pas oublier des compétences beaucoup plus transversales, parfaitement décrites par Margarida Romero, qui adjoint à la pensée informatique : ( voir sur le blog Binaire l’article)

  • la pensée critique,
  • la collaboration,
  • la résolution de problème,
  • et la créativité.

  Choix d’un instrument de mesure de la plus-value pédagogique

Pour quantifier a priori notre estimation de la valeur ajoutée à l’activité pédagogique par l’emploi de Python, d’une part, de GeoGebra, d’autre part, et de la force supplémentaire issue de leur union, nous allons utiliser une échelle classique très simple, le modèle SAMR (Ruben Puentedura - 2006).

On estimera ainsi quatre critères : l’apport de Python seul à l’activité, l’apport de GeoGebra seul à l’activité, la valeur ajoutée par le couple Python-GeoGebra à l’activité

L’état d’esprit sous-jacent est que, quelle que soit la proposition, l’activité mathématique soit présente, le plus possible !

 Les bases de Python-GeoGebra

Principe  :
On écrit dans l’éditeur un programme Python augmenté de commandes permettant de générer, dans la fenêtre graphique, des objets GeoGebra (points, droites, cercles, intersections, vecteurs, etc.) dynamiques, sur lesquels et avec lesquels le programme agit.

Pour le moment en version bêta, l’interface de Python-Geogebra se trouve ici.

Dans « Open », on trouvera quelques exemples qui permettent de démarrer.

Puis, on lira avec grand profit l’excellent article de Jean-Yves Labouche sur cet outil.

Et si on veut approfondir et décortiquer quelques exemples, repérer des trucs et astuces, se les approprier, les triturer, en inventer d’autres et partager, on pourra aller voir par là (mode d’emploi : voir « Read Me »).

 Premiers exemples d’activités : par les failles vient la lumière…

Il se trouve que, pour l’instant, certaines fonctionnalités manquent à PyGgb : le module turtle n’est pas installé, des boutons fonctionnels n’existent pas (perpendiculaire, milieu, etc.).
C’est dans ces failles qu’on va trouver un premier profit…

  1. Réécrire les fonctionnalités manquantes de GeoGebra pour dessiner à la règle et au compas

À partir des seules fonctionnalités de GeoGebra disponibles (point, droite, cercle, segment, intersection, vecteur), reconstituer les fonctions médiatrice, milieu, perpendiculaire, hauteur, médiane, bissectrice, etc.

revisiter la géométrie à la règle et au compas

  • contenus mathématiques
    définition et construction à la règle et au compas des objets géométriques (perpendiculaire, médiatrice, milieu, médiane, bissectrice)
  • apport de Python à l’activité
    (SAMR) fonctions
  • apport de Géogebra à l’activité
    (SAMR) les basiques, la géométrie dynamique
  • apport à l’activité lié au couple Python + GéoGébra (SAMR)
    Ouvrir la boîte noire des boutons de GeoGebra classique pour reproduire leur effet.
Cliquer sur l’image pour ouvrir le programme dans PyGgb.

On a alors une jolie trousse à outil de programmation de la géométrie « règle et compas ».

1ers exemples : géométrie du triangle

On utilise les fonctions « règle et compas » ci-dessus pour créer des programmes permettant de construire le cercle circonscrit, le cercle inscrit, la droite et le cercle d’Euler d’un triangle.

  • contenus mathématiques
    définition et construction à la règle et au compas des objets géométriques (médiatrices, cercle circonscrit)
  • apport de Python à l’activité
    (SAMR) fonctions
  • apport de Géogebra à l’activité
    (SAMR) les basiques, la géométrie dynamique
  • apport à l’activité lié au couple Python + GéoGébra (SAMR)
    Programmer des fonctionnalités auxquelles on accède d’habitude d’un clic
Cliquer sur l’image pour ouvrir le programme dans PyGgb.

2es exemples : géométrie des transformations

On utilise les fonctions « règle et compas » précédentes pour créer des programmes pour construire les images de points et de figures par symétrie axiale ou centrale, translation, rotation, homothétie.

  • contenus mathématiques
    image des points et des figures par les transformations du plan, vecteurs, coordonnées
  • apport de Python à l’activité
    (SAMR) fonctions
  • apport de Géogebra à l’activité
    (SAMR) les basiques
  • apport à l’activité lié au couple Python + GéoGébra (SAMR)
    Ouvrir la boîte noire des boutons de GeoGebra classique pour reproduire leur effet
Cliquer sur l’image pour ouvrir le programme dans PyGgb.

3es exemples : polygones réguliers

On utilise les fonctions « règle et compas » ci-dessus pour construire des polygones réguliers (hexagone, pentagone, heptadécagone !).

  • contenus mathématiques
    construction à la règle et au compas de polygones réguliers
  • apport de Python à l’activité
    (SAMR) fonctions
  • apport de Géogebra à l’activité
    (SAMR) les basiques : points, droites, vecteurs, intersections, cercles + les curseurs
    les protocoles de construction
  • apport à l’activité lié au couple Python + GéoGébra (SAMR)
    Penser simultanément géométrie dynamique/géométrie programmée
Cliquer sur l’image pour ouvrir le programme dans PyGgb.

  2. Recréer les primitives de turtle

La « tortue » est un objet mobile dans la fenêtre graphique.
Le principe en est simple : à chaque instant, on connaît sa position (abscisse, ordonnée) et son azimut, des commandes simples permettent de la déplacer, en traçant son déplacement ou non :

  • avancer : av(nb_pas),
  • reculer : re(nb_pas),
  • tourner à gauche ou à droite : tg(angle), td(angle),
  • aller à une position : gt(position) (gt = GoTo, en hommage aux pionniers, parmi nous, de la programmation, qui ont connu le langage Basic…)
  • etc.

les primitives de la tortue

  • contenus mathématiques
    coordonnées, trigonométrie, distance
  • apport de Python à l’activité
    (SAMR) fonctions imbriquées, listes, boucle pour
  • apport de Géogebra à l’activité
    (SAMR) point, segment, et c’est tout
  • apport à l’activité lié au couple Python + GéoGébra (SAMR)
    Comprendre et reprogrammer les primitives de la tortue
Cliquer sur l’image pour ouvrir le programme dans PyGgb.

  3. Montrer et créer de la beauté mathématique

Faire du beau fait du bien. C’est inutile et donc parfaitement indispensable !
Surtout si on peut nourrir au passage quelques compétences mathématiques…
C’est aussi l’occasion de se récompenser des efforts engagés pour réaliser les activités précédentes (« turtle » et « Règle et compas », en les recyclant sur quelque chose de plus créatif…)

1ers exemples : tortue et objets fractals

On utilise les fonctions « turtle » revisitées pour programmer des dessins de fractales par des procédés récursifs.
Exemples  : flocon de Koch, courbe du dragon, ligne de Hilbert ou de Gosper.

  • contenus mathématiques
    coordonnées, trigonométrie, distance, suites géométriques
  • apport de Python à l’activité
    (SAMR) fonction récursive, boucle pour
  • apport de Géogebra à l’activité
    (SAMR) basiques
  • apport à l’activité lié au couple Python + GéoGébra (SAMR)
    Modéliser longueurs et aires par des suites géométrique
Cliquer sur l’image pour ouvrir le programme dans PyGgb.

2es exemples : construction récursive de fractales

On utilise les fonctions “Règle et compas” pour programmer récursivement des dessins de fractales.
Exemple : triangle de Sierpinski.

  • contenus mathématiques
    coordonnées, milieu, suites géométriques, récurrence
  • apport de Python à l’activité
    (SAMR) fonction récursive, listes
  • apport de Géogebra à l’activité
    (SAMR) basiques
  • apport à l’activité lié au couple Python + GéoGébra (SAMR)
    Modéliser longueurs et aires par des suites géométrique
    Comprendre, s’approprier un programme écrit par ChatGPT pour Mattplotlib et l’adapter à PyGgb
Cliquer sur l’image pour ouvrir le programme dans PyGgb.

Détail amusant : c’est ChatGPT qui a entièrement écrit ce programme, qui a demandé très peu de retouches pour être fonctionnel dans PyGgb !!!

Remarque  : Là, PyGgb simplifie grandement l’usage des Listes et des Séquences de Geogebra !


Mmmmff…

3es exemples : construction de fractales par le jeu du chaos

On programme le jeu du chaos avec les seules fonctionnalités de PyGgb pour dessiner des fractales en tant que figures auto-similaires.
Exemple  : triangle de Sierpinski et variantes

  • contenus mathématiques
    coordonnées, milieu, homothétie
  • apport de Python à l’activité
    (SAMR) boucle, listes
  • apport de Géogebra à l’activité
    (SAMR) basiques
  • apport à l’activité lié au couple Python + GéoGébra (SAMR)
    Expliquer par une homothétie la propriété d’auto-similarité mise en évidence par le jeu du chaos
Cliquer sur l’image pour ouvrir le programme dans PyGgb.

 Autres idées, pour l’arithmétique, l’analyse ou les probabilités

1er exemple : représentation graphique d’une fonction et visualisation des tangentes

  • contenus mathématiques
    coordonnées, fonction, nombre dérivé
  • apport de Python à l’activité
    (SAMR) boucle, listes par extension, par compréhension, tests, try…except
  • apport de Géogebra à l’activité
    (SAMR) basiques : points segments
  • apport à l’activité lié au couple Python + GéoGébra (SAMR)
    Comprendre la notion de domaine définition, de taux d’accroissement
Cliquer sur l’image pour ouvrir le programme dans PyGgb.

2e exemple : spirographe

  • contenus mathématiques
    coordonnées, fonction paramétrique, trigonométrie, pgcd, ppcm
  • apport de Python à l’activité
    (SAMR) boucle, fonctions
  • apport de Géogebra à l’activité
    (SAMR) basiques : points segments
  • apport à l’activité lié au couple Python + GéoGébra (SAMR)
    Anticiper le nombre de pétales des épi- et hypocycloïdes connaissant les diamètres des roues
Cliquer sur l’image pour ouvrir le programme dans PyGgb.

3e exemple : PGCD illustré

  • contenus mathématiques
    coordonnées, trigonométrie, pgcd
  • apport de Python à l’activité
    (SAMR) boucle, fonctions imbriquées
  • apport de Géogebra à l’activité
    (SAMR) basiques : points segments
  • apport à l’activité lié au couple Python + GéoGébra (SAMR)
    Visualiser la notion de PGCD
Cliquer sur l’image pour ouvrir le programme dans PyGgb.

4e exemple : horloge de Fibonacci et horloge à aiguilles

  • contenus mathématiques
    coordonnées, trigonométrie, suite de Fibonacci, algorithme type rendu de monnaie, angles et proportionnalité
  • apport de Python à l’activité
    (SAMR) boucle, tests imbriqués, fonctions, travail sur les dates et heures
  • apport de Géogebra à l’activité
    (SAMR) basiques : points segments
Cliquer sur l’image pour ouvrir le programme dans PyGgb.

5e exemple : paradoxe du Duc de Toscane

Côme de Médicis questionnait Galilée, son précepteur, quant au fameux jeu de dés, le jeu de la Chouette, qui a ruiné plus d’un aristocrate à l’époque (on lance trois dés et on fait la somme).
Il prétendait avoir constaté, et s’en étonnait auprès de son maître, que, bien qu’il y ait autant de manières de faire 9 que de faire 10, le 10 sortait plus souvent que le 9.
Qu’en pensez-vous ?

Mon avis… il a raison, mais sa vie n’aurait pas suffi, expérimentalement, à en avoir la certitude…
Mais la bonne chose, c’est que cette question a amené Galilée à écrire le premier traité de probabilités : Sopra le Scoperte de i Dadi, mais Galilée n’étant pas… en odeur de sainteté à l’époque, imaginez, on ne serait pas le nombril du monde…ce petit ouvrage ne sera pas publié avant 50 ans, laissant à d’autres la paternité officielle de la théorie des Probabilités…

  • contenus mathématiques
    simulation d’une variable aléatoire, diagramme en bâtons, calcul de fréquences, probabilités
  • apport de Python à l’activité
    (SAMR) boucle, listes
  • apport de Géogebra à l’activité
    (SAMR) basiques : segments
  • apport à l’activité lié au couple Python + GéoGébra (SAMR)
    aide à la conjecture.
    Là, l’utilisation de PyGgb facilite grandement la manipulation des listes et des séquences de GeoGebra seul.
Cliquer sur l’image pour ouvrir le programme dans PyGgb.

6e exemple : simulation d’une variable aléatoire par inversion de sa fonction de répartition

(Spécial classe prépa économique et commerciale…)

  • contenus mathématiques
    variable aléatoire, fonction de densité, fonction de répartition, fréquences, histogramme, éléments caractéristiques
  • apport de Python à l’activité
    (SAMR) boucle, tests imbriqués, fonctions, gain considérable par rapport à l’usage des Listes et Séquences de GéoGebra
  • apport de Géogebra à l’activité
    (SAMR) basiques : segments, et c’est tout
  • apport à l’activité lié au couple Python + GéoGébra (SAMR)
    alléger les contingences matérielles pour se centrer sur la problématique mathématique
Cliquer sur l’image pour ouvrir le programme dans PyGgb.

(Remarque : l’estimateur de la variance est biaisé, mais cette considération viendra un peu plus tard dans l’année…)

Cette activité illustre parfaitement pourquoi on parle de densité d’une variable aléatoire.
Mille fléchettes aléatoires, uniformément réparties, sont lancées horizontalement depuis l’intervalle [0 ; 1] de l’axe des ordonnées (on observe la couleur plutôt unie). Quand elles rencontrent la courbe de la fonction de répartition, elles se… répartissent et tombent dans les casiers prévus à cet effet.
On obtient un dégradé, dont la “densité” de couleur selon le lieu de la chute est caractéristique de la loi considérée.

L’histogramme obtenu (rappel, la surface de chaque rectangle est proportionnelle à la fréquence…) s’ajuste à la fonction de densité.

 En conclusion

Explorer ces pistes ouvertes par la venue de cet outil mêlant la puissance de la programmation Python et la pertinence de la dynamique de GeoGebra est très divertissant !
Dans certaines des idées proposées ici, notamment celles tournant autour de la reconstitution et de l’utilisation d’un module turtle de Python, GeoGebra apparaît seulement comme un substitut au module graphique MatPlotlib.PyPlot : on perd l’aspect dynamique des figures, mais la fenêtre GeoGebra permet de ne pas avoir à gérer les contingences graphiques. De plus, comme il s’agit à chaque fois de faire des mathématiques artistiques, on aurait tort de s’en priver !
Ce qui ressort également, comme on s’y attendait, c’est que, en matière de valeur ajoutée à l’activité mathématique, la force du groupe Python + GeoGebra est toujours supérieure ou égale à la somme des forces de ses parties.
Cela crée une compétence nouvelle, plus forte, plus complexe : la capacité à considérer tout objet géométrique à la fois avec ses propriétés caractéristiques et son processus de conception.
L’espace et le temps sont devenus simultanément dynamiques.