Géométrie 2d et 3d pour calculatricesBernard.Parisse@univ-grenoble-alpes.frSeptembre 2022 |
Résumé: On présente ici une application de géométrie pour Numworks N0110, Casio Graph 90 et TI Nspire CX/CX II qui permet de mêler géométrie euclidienne et analytique en 2d et 3d. On discute ensuite l’interaction entre construction géométrique et algorithmique, ainsi que la possibilité de faire des preuves assistées par le calcul formel.
Avertissement : Numworks et TI verrouillent leurs calculatrices et les ferment aux développements tiers. Il est donc essentiel de ne pas mettre à jour votre calculatrice sur le site de Numworks ou de TI..
Table des matières
- 1 Introduction
- 2 L’application de géométrie de CAS
- 3 Géométrie et algorithmique
- 4 Calcul formel et preuve en géométrie
- 5 Pour aller plus loin
1 Introduction
La plupart des calculatrices graphiques (à l’exception notable de la Numworks) possèdent une application de géométrie, mais dans le plan uniquement et souvent limitée à de la géométrie euclidienne pure, sans possibilité de travailler aussi avec des courbes (comme le fait par exemple Geogebra) ni de faire du calcul exact ou formel.
La dernière version de CAS pour
Numworks N0110, Casio Graph 90 et TI Nspire CX/CX II introduit une
nouvelle application de géométrie permettant de travailler en 2d et en 3d,
en calcul exact ou approché.
L’application
permet de construire des figures dans le plan ou dans l’espace,
et de faire bouger un point et tout ce qui en dépend pour illustrer
certaines propriétés (géométrie
dynamique). On peut faire des constructions de géométrie euclidienne
pure, mais aussi avec des graphes de fonction, des coniques, etc.
comme ci-dessous le graphe 4d de la fonction
de dans obtenu par la commande
plot3d(x^2-9)
:
L’application possède deux “vues”: la vue graphique et la vue symbolique qui contient les commandes Xcas permettant de créer la figure, cf. les deux captures d’écran de l’exemple de géométrie 2d en section 2.3.1.
De plus, une fois la construction effectuée, le shell de CAS permet d’effectuer des calculs de géométrie analytique, et dans certains cas on peut utiliser le noyau de calcul formel pour faire des preuves de résultats observés dans la vue graphique. Réciproquement, on peut utiliser des algorithmes que l’on définit depuis le shell dans la construction géométrique.
J’espère que la disponibilité sur calculatrices de cette application va contribuer à redonner un peu (plus) de place à la géométrie au lycée. Les étudiants qui arrivent dans le supérieur ont malheureusement très souvent beaucoup de lacunes dans ce domaine.
2 L’application de géométrie de CAS
2.1 Installation
Il faut installer la dernière version de CAS pour votre calculatrice
- Numworks N0110
- Casio Graph 90, installez bien la version la plus complète en 2 fichiers
- TI Nspire CX et CX 2 installez la version alpha
2.2 Interface
Les touches de clavier indiquées ci-dessous correspondent à une Numworks, les captures d’écran à une Casio Graph 90.
Sur une TI Nspire CX ou CX II, remplacez la touche Home par la touche doc, la touche Toolbox par la touche menu, la touche OK par enter, la touche EXE par la touche de passage à la ligne (en bas à droite du clavier) et la touche Back par la touche esc. Il n’y a pas de mode alpha puisqu’on dispose d’un clavier alphabétique.
Sur une Casio Graph 90, remplacez Home par F6, Toolbox par F4, OK par EXE, Back par EXIT. Pour passer à la ligne, il faut utiliser shift EXE. Le mode alphabétique majuscule s’obtient en tapant sur ALPHA, le mode alphabétique minuscule se verrouille avec la touche F5. Les menus rapides sont accessibles avec F1 à F3, shift-F1 à shift-F6 et ALPHA-F1 à ALPHA-F6.
Modes, vue graphique et symbolique.
Taper Home 1 pour afficher la liste des
applications additionnelles, puis OK puis sélectionnez soit une nouvelle
figure 2d ou 3d soit une figure existante. Vous pouvez aussi ouvrir
l’application de géométrie depuis un graphe (par exemple après avoir
tapé plot(sin(x))
) en tapant Home puis Sauvegarder figure.
Au lancement on est dans la vue graphique en mode repère, les touches de curseur permettent de changer de point de vue. Pour changer le mode, utiliser la touche Toolbox, pour passer en vue symbolique et vice-versa taper OK. Par exemple tapez Toolbox 3 pour passer en mode point qui permet de construire des points en déplaçant le pointeur et en tapant OK ou tapez Toolbox 5 pour passer en mode triangle qui permet de construire un triangle à partir de ses 3 sommets, on déplace le pointeur et on tape OK trois fois. Pour déplacer le pointeur, utiliser les touches de déplacement, pour se déplacer plus rapidement, faire shift touche de curseur. Si on est proche d’un point existant, son nom apparait en bas. Pour déplacer le pointeur vers un point existant, vous pouvez aussi taper le nom du point (par exemple touche alpha A).
Le mode pointeur permet de sélectionner un point et de le déplacer pour observer comment la construction varie, ce qui permet de mettre en évidence des propriétés de la figure, par exemple concurrence de 3 droites.
Si vous tapez sur la touche Back depuis la vue graphique
de l’application, vous revenez au mode repère ou si vous y étiez
vous passez en vue symbolique. Vous pouvez ajouter
des objets à la construction depuis cette vue, en mettant une commande
par ligne. Tapez EXE pour passer à la ligne. Tapez OK
pour revenir à la vue graphique. Dans la vue symbolique, vous
pouvez sauvegarder la construction géométrique au format texte
(avec une extension .py
, même s’il ne s’agit pas
d’un script Python).
Tapez Back pour quitter l’application de géométrie.
Lorsque vous quittez l’application de géométrie, la figure est automatiquement sauvegardée dans une variable Xcas qui a le même nom que celui du nom de fichier affiché dans la vue symbolique. Vous pouvez purger la variable Xcas si vous voulez effacer la figure de la session.
2.3 Exemples en géométrie euclidienne.
2.3.1 Exemple 2d : cercle circonscrit.
Depuis le shell, taper Home 1 sélectionner nouvelle figure 2d et valider OK.
Puis Toolbox 5 Triangle, OK pour créer le premier sommet du triangle
puis déplacer le pointeur avec les touches de déplacement, OK pour créer
le 2ème sommet du triangle, déplacer le pointeur à nouveau et OK
pour créer le triangle.
Version longue en construisant le centre :
Taper Toolbox 7, sélectionner 8 Mediatrice, déplacer
le pointeur de sorte que seul un segment du triangle
soit sélectionné (affichage
en bas à droite perpen_bisector D5,D
),
taper OK pour créer la médiatrice du segment, déplacer le curseur
sur une autre arête du triangle et OK pour créer la 2ème médiatrice,
optionnellement sur le 3ème segment pour avoir les 3 médiatrices.
Puis Toolbox 6 et 4 Intersection unique. Déplacer le curseur vers
une des médiatrices, taper OK puis vers une autre médiatrice, taper OK,
ceci crée le centre du cercle circonscrit. Pour tracer le cercle,
taper Toolbox 4, déplacer le curseur au centre du cercle (vous pouvez
utiliser les touches de déplacement ou juste taper
alpha H ou la bonne lettre si le centre du cercle s’appelle autrement),
puis OK puis sur un des sommets et OK.
Version courte avec la commande circonscrit
:
taper Toolbox 9 puis circonscrit puis sélectionner chaque
sommet avec OK (alpha A OK alpha B OK alpha C OK, remplacez
si nécessaire A, B, C
par les lettres du sommet du triangle).
Version en vue symbolique :
taper Back puis en fin de script sur une ligne vide (taper EXE s’il
faut en créer une), taper
c:=circonscrit(A,B,C)
OK
2.3.2 Exemple 3d: bac septembre 2019
On construit un cube , il s’agit de montrer que le plan est orthogonal au segment .
c:=cube([0,0,0],[1,0,0],[0,1,0]); A,B,C,D,E,F,G,H:=sommets(c); P:=plan(A,B,G,display=filled+green); S:=segment(D,E,display=cyan);
onload
Taper Home OK pour lancer l’application de géométrie puis nouvelle figure 3d.
Puis Back ou OK pour passer en vue symbolique. Puis alpha c shift =
puis Toolbox flèche haut deux fois pour sélectionner 3D puis OK puis 5 pour cube
puis Home (aide), qui explique que
les 2 premiers arguments de cube sont les sommets d’une arête,
le troisième est un point d’un plan d’une face. Le premier
exemple nous convient ici exactement, on tape Ans et on obtient
c=cube([0,0,0],[1,0,0],[0,1,0])
On tape EXE pour voir le cube puis * - pour ajuster le zoom et EXE
pour revenir à la vue symbolique.
Vous pouvez sauvegarder à tout moment la construction au format
texte depuis
le menu Home.
On passe à la ligne en tapant shift OK. Puis on définit les sommets
du cube en tapant A,B,C,D,E,F,G,H:=
(taper alpha shift A , alpha shift B etc.),
puis Toolbox et flèche vers le haut 3 fois
pour sélectionner Géometrie puis flèche vers le haut 4 fois pour sélectionner
sommets
OK et mettre c en argument sommets(c)
.
Taper OK pour visualiser puis OK à nouveau pour revenir en vue
symbolique. Passer à la ligne avec EXE puis créer le plan ABG
en tapant alpha shift P = puis shift-2 pour
ouvrir le menu rapide lines et 8 pour saisir plane. La commande plan
prend en arguments 3 points pour définir le plan (on peut aussi donner
une équation cartésienne, ici A,B,G, P=plan(A,B,G,
on va lui ajouter une couleur avec le menu rapide shift 4 disp
display=filled+green
, vérifier en visualisant avec OK OK.
On passe à la ligne (EXE) et on crée le segment DE
alpha S = shift 2 sélectionner la commande segment avec OK
puis D,E et shift 4 pour lui donner une couleur
S=segment(D,E,color=cyan)
(on pouvait aussi créer le segment depuis la vue graphique en mode Lignes
mais déplacer le pointeur est un peu lent).
La construction est donc la suivante:
c=cube([0,0,0],[1,0,0],[0,1,0]) (A,B,C,D,E,F,G,H)=sommets(c) P=plan(A,B,G,display=filled+green) S=segment(D,E,display=cyan)
Vous pouvez taper OK pour la visualiser et utiliser les flèches de
déplacement pour changer de point de vue. Taper OK ou Back pour revenir
en vue symbolique. Pour quitter l’application taper Back. Taper F1 pour
sauvegarder la figure si nécessaire.
Vous pouvez depuis le shell de KhiCAS accéder à de nombreuses informations
de géométrie analytique, par exemple equation(P)
(menu
Toolbox Géométrie) vous donnera
l’équation cartésienne du plan ou is_orthogonal(P,S)
(Toolbox Géométrie)
vous confirmera que le plan est orthogonal au segment
(géométriquement,
l’intersection de et du plan est une des diagonales
du carré , est l’autre diagonale, ces deux diagonales
sont perpendiculaires et leur perpendiculaire commune est
l’arête ).
2.4 Mesures et légendes
En tapant Toolbox puis en sélectionnant 13 Mesures, on peut afficher une mesure en un point de la figure. Par exemple après avoir construit un triangle, on peut afficher son périmètre ou son aire en tapant Toolbox puis deux fois flèche vers le haut, OK. Déplacer le pointeur près du triangle, taper OK, puis déplacer le curseur à l’endroit où on souhaite mettre la mesure et taper OK.
On peut afficher n’importe quelle légende avec la commande
legende()
depuis la vue symbolique. Le premier argument
de légende peut être un point de la figure, ou bien un vecteur
de deux entiers donnant la position absolue en pixels mesuré
depuis le coin en haut à gauche. Le deuxième argument est la légende,
cela peut être une chaine de caractères ou n’importe quelle expression.
Si la légende est une valeur numérique, elle peut être utilisée pour
un paramètre numérique d’une commande, par exemple le rapport d’une
homothétie ou l’angle d’une rotation en utilisant la commande
extract_measure
. Par exemple
r:=legend([20,40],"2")
homothetie(A,extract_measure(r),B)
2.5 Curseurs
Vous pouvez créer un paramètre qui se déplace entre 2 valeurs extrêmes
par saut de 1% depuis le menu Toolbox Curseur en vue graphique ou
la commande element
ou assume
en vue symbolique.
La commande assume
permet de créer un curseur “symbolique”
ce qui signifie qu’il est remplacé par sa
valeur numérique uniquement pour faire un calcul approché, par
exemple une représentation graphique, mais pas pour faire un calcul
exact. Si on fait une construction de géométrie dynamique,
le calcul exact peut être long, il est conseillé de n’utiliser
que des curseurs non symboliques, sauf pour établir une preuve
en géométrie analytique d’un résultat en
utilisant le moteur de calcul formel.
Exemple : explorateur quadratique avec des curseurs
pour explorer comment une parabole d’équation
dépend de la valeur de , créer 3 curseurs
(Toolbox curseur vers le haut 4 fois OK OK). En vue symbolique
on doit avoir quelque chose ressemblant à
a:=element(-1..1) b:=element(0..1,0.5) c:=element(-1..1)
puis ajouter un graphe, depuis la vue graphique taper Toolbox 0 (pour 10 Courbe)
et sélectionner plot,
ou en vue symbolique shift F6 et sélectionner plot,
remplir entre les parenthèses par a*x^2+b*x+c
(attention
à ne pas oublier les *
), puis valider avec OK. En vue graphique,
vous devez voir 3 curseurs a
, b
et c
et le
graphe correspondant. Vous pouvez maintenant faire varier les valeurs
de depuis la vue graphique en mode pointeur (Toolbox 2) en déplaçant le
pointeur vers et en tapant OK puis les flèches de déplacement
gauche ou droit et OK pour arrêter.
On peut bien sur faire des exemples plus simples avec un ou deux curseurs
et une courbe dépendant d’un ou de deux paramètres. Par exemple
un explorateur linéaire droite(y=a*x+b)
ou
trigonométrique plot(sin(a*x+b))
.
2.6 Traces
La commande trace()
permet de conserver la trace du
déplacement d’un objet géométrique.
Exemple Enveloppe des normales à une courbe paramétrée
(ici une ellipse).
E:=plotparam([cos(t),2*sin(t)],t=-pi..pi) a:=element(-pi..pi) M:=element(E,a) T:=tangent(M) N:=perpendiculaire(M,T) trace(N)
En faisant varier ,
on observe une courbe séparant la zone des normales à une zone sans point
tracé qui est l’enveloppe des normales, c’est la développée de l’ellipse
evolute(E,color=red)
On peut effacer les traces à tout moment
avec la touche F6, puis touche vers le haut pour sélectionner
le dernier item du menu de configuration.
l:=[];
onload
Cliquez sur le bouton + plusieurs fois ci-dessous pour voir l’enveloppe :
La trace d’un point peut aussi servir à conjecturer un lieu géométrique. Par exemple soient deux points et et le cercle de diamètre . Soit le centre de ce cercle et un point variable de ce cercle. Soit l’intersection de la tangente en à avec la parallèle à passant par . Trouver le lieu de quand varie.
A:=point(0); B:=point(1,2); c:=cercle(A,B); O:=milieu(A,B); C:=element(c); T:=tangent(C); D2:=parallele(O,droite(A,C)); N:=inter_unique(T,D2);
onload
En ajoutant l’instruction trace(N)
et en faisant varier en
mode pointeur, on peut conjecturer la nature du lieu.
2.7 Exemple mêlant graphe et géométrie
On considère la courbe représentative de l’exponentielle et de son inverse et les tangentes menées en ces 2 courbes aux points de même abscisse. Quelles sont leurs propriétés ?
On traduit l’énoncé en créant un curseur qui sera l’abscisse commune des deux points :
G=plot(exp(x)) H=plot(exp(-x)) assume(a=1) M=element(G,a) N=element(H,a) T=tangent(M) U=tangent(N)
simplify(slope(T)*slope(U))
Il existe une autre propriété pour les pieds des tangentes sur l’axe .
Ox=droite(y=0) P=inter_unique(Ox,T) Q=inter_unique(Ox,U)
Exercice : quelle est cette propriété ? Comment la prouver avec
le logiciel ?
Indication, utiliser la commande distance
. Pour afficher
un résultat sur la figure, vous pouvez utiliser la commande
legende
.
2.8 Interaction avec Xcas
Les figures peuvent être sauvegardées au format texte. On peut
alors les copier-coller vers un niveau de géométrie de Xcas (en
collant lorsqu’on a cliqué sur le numéro d’un des niveaux
de la figure de Xcas). Inversement, on peut exporter une figure
de Xcas au format texte dans un fichier d’extension .cas
et le renommer en .py
puis on peut l’insérer dans une
figure sur la calculatrice.
Les versions de Xcas à compter de la 1.19-21 permettent d’exporter une session contenant un niveau de géométrie en fichiers sessions pour CAS et réciproquement.
3 Géométrie et algorithmique
La géométrie peut servir à introduire la notion de fonction
en algorithmique, avec une valeur de retour, par exemple
la construction du cercle circonscrit se réécrit très facilement
en une fonction prenant en argument les trois sommets du triangle
et renvoyant le centre du cercle circonscrit. Il suffit
d’ajouter l’en-tête de définition de fonction
def f(A,B,C):
et la ligne qui renvoie le centre (return I
si est
le centre) et d’indenter
def f(A,B,C): M1=mediatrice(A,B) M2=mediatrice(B,C) I=inter_unique(M1,M2) return I
On entre
cette définition de fonction en syntaxe Xcas compatible Python
dans l’éditeur de programmes de CAS, on la valide, on peut ensuite
l’utiliser dans l’application de géométrie. On pourrait aussi définir
la fonction directement dans l’éditeur de l’application de géométrie,
mais il faut alors la compacter en une seule ligne
def f(A,B,C): return inter_unique(mediatrice(A,B),mediatrice(B,C))
ce qui est moins lisible.
Exercice : refaire une construction analogue en 3d pour le centre de la sphère circonscrite à un tétraèdre.
Solution :
def f(A,B,C,D): M1=mediatrice(A,B) M2=mediatrice(B,C) M3=mediatrice(C,D) d=inter_unique(M1,M2) I=inter_unique(d,M3) return I A=point(1,2,3) B=point(2,0,0) C=point(0,0,-1) D=point(1,1,-1) I=f(A,B,C,D) r=distance(A,I) tetraedre(A,B,C,D) sphere(I,r,display=red)
onload
L’avantage par rapport à la tortue logo est qu’on peut introduire de “vraies” fonctions avec une valeur de retour et pures au sens où on ne modifie pas de variables globales, La tortue permet facilement d’introduire les procédures qui n’ont pas de valeur de retour explicite, mais il faut prendre garde au fait que la position et le cap de la tortue peuvent être modifiées par la procédure (une bonne procédure logo devrait d’ailleurs s’assurer que la tortue est dans son état initial à la fin de la procédure).
4 Calcul formel et preuve en géométrie
Le moteur de calcul étant un moteur de calcul formel, il est possible de réaliser des preuves de géométrie analytique en utilisant cette application, ce qui apporte un plus par rapport à une application de géométrie dynamique standard qui travaille en calcul approché sans paramètres. Il suffit de donner des valeurs formelles à des curseurs, s’il y a suffisamment de curseurs pour représenter le cas général, on a une preuve.
Par exemple, si on veut étudier une propriété géométrique d’un triangle, on peut toujours par translation, rotation et homothétie se ramener au cas où l’un des sommets est l’origine, le second le point et le troisième dépend de deux paramètres.
assume(a=0.3) assume(b=1) A=point(0) B=point(1) C=point(a,b) T=triangle(A,B,C)
La commande assume
crée un curseur formel, c’est-à-dire que tant que
le calcul est exact, conserve sa valeur formelle, dès qu’un calcul
est approché, par exemple pour une représentation graphique,
est remplacé par la valeur (0.3 ci-dessus). Ceci permet de réaliser
une figure pour visualiser tout en conservant des calculs exacts. On
peut modifier la valeur du curseur et voir la figure se modifier,
par contre les calculs exacts en fonction de et ne changent
pas.
On peut ensuite effectuer une construction sur ce triangle. Prenons un exemple très simple, montrer que les 3 médianes sont concurrentes
d1=mediane(A,B,C) d2=mediane(B,C,A) d3=mediane(C,A,B) I=inter_unique(d1,d2)
On cherche l’intersection de deux des médianes,
et on vérifie que appartient bien à depuis le shell
est_element(I,d3)
Pour s’assurer que les calculs ont bien été faits dans le cas
général, on calcule l’équation cartésienne de
eq:=equation(d3)
qui renvoie ,
puis on calcule les coordonnées de
ic:=coordonnees(I)
qui renvoie
et on substitue
simplify(subst(eq,[x,y],ic))
qui renvoie .
On observe au passage la propriété du centre de gravité sur les
coordonnées de .
On peut faire de même pour les médiatrices. Pour les bissectrices,
les calculs sont nettements plus longs et mal adaptés à une calculatrice.
On peut aussi prouver le théorème dit de Napoléon. On construit
trois triangles équilatéraux, un sur chaque arête du triangle,
alors les centres
de ces trois triangles forment un triangle équilatéral.
T1:=triangle_equilateral(A,C) T2:=triangle_equilateral(B,A) T3:=triangle_equilateral(C,B) D:=isobarycentre(T1) E:=isobarycentre(T2) F:=isobarycentre(T3) triangle(D,E,F,display=red)
Pour prouver le théorème, on tape dans le shell
simplify(distance2(D,E))
simplify(distance2(E,F))
simplify(distance2(F,D))
ou directement
simplify(distance2(D,E)-distance2(E,F))
Que dire de cette possibilité d’un point de vue pédagogique ?
Il faut bien faire comprendre aux élèves qu’une preuve
obtenue comme ci-dessus par le logiciel de calcul formel/géométrie analytique
est une preuve tout-à-fait rigoureuse d’un point de vue mathématique,
on a bien établi un théorème, contrairement à une observation
de conjecture avec un logiciel de géométrie dynamique standard.
Il faut aussi observer que l’élève reste le maitre du déroulement
des calculs qu’il donne à faire au logiciel, il ne délègue que la
partie calculs.
Une preuve de ce type n’a toutefois pas vocation à remplacer une preuve faite par des arguments géométriques purs qui font travailler d’autres concepts que la géométrie analytique, et elle n’a pas non plus vocation à remplacer une preuve faite soi-même dans les cas où les calculs sont simples, car ici on fait confiance au logiciel pour faire les calculs.
Plus générallement, des calculs faits à la machine peuvent servir d’aide à la preuve faite à la main, par exemple en effectuant une partie des calculs techniques, ou pour fournir un résultat difficile à obtenir à la main mais facile à vérifier (par exemple la factorisation de est difficile à réaliser à la main au lycée, mais facile à vérifier).
5 Pour aller plus loin
Vous pouvez consulter le manuel de géométrie 2d de Xcas rédigé par Renée De Graeve, qui contient de nombreux exemples avec des illustrations et preuves faites par Xcas qui peuvent être transposées dans l’application de géométrie, et qui présente aussi des preuves alternatives des théorèmes par des raisonnements de géométrie “pure”.
Les liens entre géométrie et calcul formel existent dans les deux sens :
- On peut utiliser le calcul formel pour établir un résultat géométrique, en particulier un outil appelé bases de Groebner. Cf. par exemple cet article de D. Kapur
- Réciproquement, un certain nombre de théorèmes de géométrie classique peuvent servir de tests pour un logiciel de calcul formel, c’est le cas pour le noyau de calcul formel de Xcas, avec les résultats classiques sur les intersections des médianes, médiatrices, bissectrices, ainsi que les théorèmes de Morley, Feuerbach et Simson.