Next: , Previous: , Up: Top   [Index]


Partie III
Applications


8 Applications didactiques

Ce chapitre est une aide pour étudier Dr.Geo à partir d’exemples. Contrairement aux chapitres précédents, l’approche est plus concrète par rapport à des situations précises. Le contenu de ce chapitre s’est constitué à partir de contributions diverses.

8.1 Aire et périmètre

Une des possibilités d’utilisation didactique de Dr.Geo consiste dans l’utilisation des scripts Smalltalk pour résoudre des exercices de géométrie.

Comme exemple, nous allons montrer la solution d’un problème classique mettant en oeuvre le théorème de Pythagore dont le texte est le suivant :

Soit un trapèze rectangle ABCD où sont connues les bases et la hauteur. Calculer le périmètre et l’aire du trapèze.

Solution :

Commençons par construire la figure dans Dr.Geo qui doit être comme ci-dessous :

trapeze

Figure 8.1: Trapèze rectangle

Nous écrirons un script qui, étant donnés les bases et la hauteur, calculera son aire et son périmètre. Le script aura donc comme argument. trois segments, les bases1, base2 et la hauteur. Dans un premier temps, nous définissons le script avec arguments les deux bases et la hauteur du trapèze.

trapeze-script

Figure 8.2: Définition du script

Dans ce script, nous écrivons quelques méthodes pour accéder facilement aux longueurs caractéristiques du trapèze rectangle :

base1
   ^ self arg1 length
base2
   ^ self arg2 length
hauteur
   ^ self arg3 length

Puis une méthode calculant son aire :

aire
"Calcule l'aire du trapèze"
   ^ (self base1 + self base2) * self hauteur / 2

Et une pour calculer le périmètre, nous calculons la longueur BC à l’aide du théorème de Pythagore :

perimetre
"Calculer la longueur manquante,
puis le périmètre du trapèze rectangle"
| hb bc |
   hb := (self base1  -self base2 ) abs.
   bc := (hb squared + self hauteur squared) sqrt.
   ^ self base1 + self base2 + self hauteur + bc

Enfin la méthode compute assemble les deux calculs pour affichage:

compute
   ^ 'Aire = ', self aire printString, '
Périmètre = ', self perimetre printString

Il n’est pas difficile, si vous suivez le même modèle, de développer d’autres exemples similaires.

8.2 Théorème et conjectures

Les scripts Smalltalk permettent de résoudre des exercices mais aussi de comprendre de façon plus approfondie l’énonciation des théorèmes et de vérifier des conjectures. Dans cette section nous commençons par analyser le théorème de Tolomeo :

Étant donné un quadrilatère inscrit dans un cercle la somme du produit des côtés opposés est égale au produit des diagonales.

Nous pouvons construire la figure avec Dr.Geo comme ci-dessous où nous avons implémenté deux scripts qui calculent respectivement la somme du produit des côtés opposés et le produit des diagonales. Nous ne détaillons plus toutes les étapes de création du script, nous donnons uniquement le corps de la méthode compute.

tolomeo

Figure 8.3: Théorème de Tolomeo : quadrilatère convexe

La méthode compute du premier script est la suivante :

compute
"Choisir quatre côtés consécutifs du quadrilatère"
   | ab bc cd ad |
   ab := self arg1 length.
   bc := self arg2 length.
   cd := self arg3 length.
   ad := self arg4 length.
   ^ (ad * bc) + (ab * cd)

La méthode compute du second script est :

compute
"Choisir les deux diagonales du quadrilatère"
   | ac bd |
   ac := self arg1 length
   bd := self arg2 length
   ^ ac * bd

Comme nous pouvons le voir les valeurs retournées par les deux scripts, en accord avec le théorème de Tolomeo, sont les mêmes24. Lorsque nous modifions dynamiquement la figure, les valeurs des scripts sont toujours identiques, sauf dans la situation suivante où le quadrilatère perd sa convexité :

tolomeo-non-convexe

Figure 8.4: Théorème de Tolomeo : quadrilatère non convexe

Dans ce cas le théorème n’est pas vrai et l’énoncé précédent n’est pas bien énoncé, il doit donc être reformulé comme ci-dessous :

Étant donné un quadrilatère CONVEXE inscrit dans un cercle la somme du produit des côtés opposés est égale au produit des diagonales.

À ce stade les conjectures apparaîssent naturellement : est-ce que le théorème de Tolomeo est valide pour un quadrilatère convexe non inscrit dans un cercle ?

Avec Dr.Geo nous pouvons vérifier que cette conjecture est fausse comme le montre la figure suivante, où il nous a suffit de détacher du cercle le point B en l’attrapant avec la touche Shift enfoncée.

tolomeo-quad-non-inscrit-cercle

Figure 8.5: Réfutation de la conjecture

Le lecteur n’aura pas de difficulté à utiliser Dr.Geo dans la construction d’exemples didactiques, probablement plus connus, relativement aux théorèmes de Pythagore et d’Euclide.

8.3 Nombre irrationnel

Une construction classique, relative au nombre irrationnel, connue sous le nom de spirale de Teodoro, permet de construire géométriquement la racine carrée de nombres entiers à partir d’un triangle rectangle isocèle.

Considérons le triangle OAB où OA = 1 :

racine2

Figure 8.6: Construction de la racine de 2

Par le théorème de Pythagore nous avons OB égale à la racine carrée de 2. Si maintenant, avec la figure, nous construisons un nouveau triangle rectangle en B, avec les côtés OB et BC tel que BC = 1.

racine3

Figure 8.7: Construction de la racine 3

Toujours par le théorème de Pythagore, il est clair que l’hypoténuse OC de OBC a pour longueur la racine carrée de 3. En itérant le processus précédent à l’infini nous obtenons toutes les racines carrées des nombres naturels.

La nature itérative de la construction s’adapte parfaitement à l’utilisation des figures Smalltalk.

Considérons alors le code suivant :

| figure triangle |
figure := DrGeoSketch new fullscreen.
triangle := [:p1 :p2 :p3 :n | 
   |s1 s2 s3 perp cercle p4 |
   s1 := figure segment: p1 to: p2.
   s2 := (figure segment: p2 to: p3) color: Color red.
   s3 := figure segment: p3 to: p1.
   perp := (figure perpendicular: s3 at: p3) hide.
   cercle := (figure circleCenter: p3 to: p2) hide.
   p4 := (figure altIntersectionOf: cercle and:  perp) hide.
   n > 0 ifTrue:
      [triangle value: p1 value: p3 value: p4 value: n -1]
].

triangle 
   value: 0@0
   value: -1@0
   value: -1@1
   value: 50

Le triangle du début est défini à travers les coordonnées seulement par commodité. Le code est la transcription littérale de la procédure itérative décrite précédement. Une fois exécuté par Dr.Geo le code donne la figure ci-dessous.

teodoro-spiral

Figure 8.8: Spirale de Teodoro

Les hypoténuses de chaque triangle ont pour longueur les racines carrées des nombres entiers naturels compris entre 2 et 52.

La même spirale avec les éléments intermédiaires de construction montre combien il serait difficile de construire à la main une telle figure :

teodoro-spiral-full

Figure 8.9: Spirale de Teodoro avec les éléments cachés révélés

Comme bonus, nous vous proposons ci-dessous une version animée de la construction de la spirale. Pour cela nous envoyons au canevas les messages #do: et #update. Ils sont documentés, See SmalltalkSketchMethods. Noter l’utilisation de la classe Delay pour ralentir la construction :

| figure triangle delay|
figure := DrGeoSketch new fullscreen.
triangle := [:p1 :p2 :p3  :n | 
   |s1 s2 s3 perp cercle p4 |
   s1 := figure segment: p1 to: p2.
   s2 := (figure segment: p2 to: p3) color: Color red.
   s3 := figure segment: p3 to: p1.
   perp := figure perpendicular: s3 at: p3.
   cercle := figure circleCenter: p3 to: p2.
   p4 := figure altIntersectionOf: cercle and:  perp.
   figure update.
   (Delay forMilliseconds: 200) wait.
   perp hide. cercle hide. p4 hide.
   n > 0 ifTrue: [triangle value: p1 value: p3 value: p4 value: n -1]].

figure do: [triangle value: 0@0 value: -1@0	value: -1@1 value: 50]

8.4 Spirale de Baravelle

Comme vu précédement, à l’aide de figure Smalltalk il est possible de construire de façon intuitive et simple des figures pour visionner des situations qui en programmation sont récursives – ou cycliques.

Approfondissons cet aspect, en modifiant le code Smalltalk utilisé pour la construction des nombres irrationnels, afin d’obtenir une figure fameuse de la littérature des mathématiques, à savoir la spirale de Baravelle.

Le code définissant la spirale est le suivant :

| figure triangle |
figure := DrGeoSketch new fullscreen.
triangle := [:p1 :p2 :p3  :n | 
   |s1 s2 s3 m  perp cercle p4 |
   s1 := figure segment: p1 to: p2.
   s2 := figure segment: p2 to: p3.
   s3 := figure segment: p3 to: p1.
   m := (figure middleOf: p1 and: p3) hide.
   perp := (figure perpendicular: s3 at: p3) hide.
   cercle := (figure 
      circleCenter: p3 
      radius: (figure distance: m to: p3) hide) hide.
   p4 := (figure altIntersectionOf: cercle and: perp) hide.
   n > 0 ifTrue: 
      [triangle value: m value: p3 value: p4 value: n - 1]].

triangle 
   value: (figure point: 0 @ 5) 
   value: (figure point: 5 @ 5) 
   value: (figure point: 5 @ 0) 
   value: 9.
triangle 
   value: (figure point: 0 @ -5) 
   value: (figure point: -5 @ -5) 
   value: (figure point: -5 @ 0) 
   value: 9 
spirale-baravelle

Figure 8.10: La spirale de Baravelle suite à l’exécution du code Smalltalk

À partir de la figure et du code Smalltalk correspondant nous percevons bien la nature itérative du mécanisme de construction de la figure. Un problème intéressant que nous laissons au lecteur, consiste à établir à quel moment les deux rameaux de la spirale convergent.

8.5 Catena di Pappo

Une utilisation de base de Figure Smalltalk de Dr.Geo consiste en la reproduction de figure dont nous connaissons les caractéristiques analytiques. L’exemple de construction que nous proposons est représenté par la fameuse “Catena di Pappo”.

Les centres et rayons successifs des cercles qui la constituent ont une expression analytique connue, il est donc aisé de reproduire la figure par programmation.

| figure circle a o m|
figure := DrGeoSketch new fullscreen.
circle := [].
circle := [:n | 
   |r c p |
   r := (figure freeValue: 15 / (n squared + 6)) hide.
   c := figure point: 
      (15 / (n squared + 6) * 5)
      @ (15 / (n squared + 6) * n * 2).
   c small; round.
   p := figure circleCenter: c radius: r.
   n > 0 ifTrue: [circle value: n - 1]].

circle value: 10 .
a := (figure point: 5@0) name: 'A'.
o := (figure point: 0@0) name: 'O'.
m := figure 
   middleOf: o 
   and: ((figure point: 15@0) name: 'B').
m name: 'M'.
figure 
   circleCenter: m to: o;
   circleCenter: a to: o;
   line: a to: o.

La figure s’appuie sur un bloc de code récursif pour construire les cercles. Un exercice non trivial, que nous laissons au lecteur, consiste à déterminer une construction à la règle et au compas conduisant à une implémentation itérative.

pappo

Figure 8.11: Catena di Pappo

8.6 Calcul de PI

Le calcul approximatif de PI a joué un rôle important dans l’histoire des Mathématiques. Les méthodes pour ce type de calcul sont diverses et contiennent souvent des améliorations d’une méthode à l’autre. Nous vous proposons une approche du problème très simplifiée. Cette approche a toutefois l’avantage de montrer l’essence même de la méthodologie.

Nous commençons avec la construction d’un hexagone régulier inscrit dans un cercle.

pi-hexagone

Figure 8.12: Hexagone régulier inscrit

L’idée de la méthode consiste dans un premier temps à approximer la longueur du cercle avec le périmètre P0 de l’hexagone et de calculer une approximation de PI quotient de P0 par le diamètre du cercle. Clairement l’approximation de PI obtenue sera de 3.

Lors d’une deuxième étape nous pouvons, en utilisant Dr.Geo, construire un côté du dodécagone inscrit dans le cercle. Nous calculons son périmètre P1 ainsi qu’une approximation successive de PI comme quotient de P1 par le diamètre.

Un petit script est écrit pour calculer ce quotient à partir du polygone et d’un diamètre du cercle :

compute
"Approximation de PI à partir d'un polygone régulier
dans un cercle.
Sélectionner: le polygone et un diamètre du cercle"
   ^ self arg1 length / self arg2 length
pi-dodecagone

Figure 8.13: Approximation de PI

En augmentant le nombre de côtés du polygone régulier inscrit nous obtenons de meilleures approximations.


Footnotes

(24)

Il ne s’agit que d’une vérification numérique.


Next: , Previous: , Up: Top   [Index]