Mathématice, intégration des Tice dans l'enseignement des mathématiques  
Sommaire > N°40 - mai 2014 > Expressions et fonctions dans DGPad

Expressions et fonctions dans DGPad
Moteur de recherche
Mis en ligne le 19 avril 2014, par Alain Busser, Monique Gironce

Cet article peut être librement diffusé à l’identique dans la limite d’une utilisation non commerciale suivant la licence CC-nc-nd (http://creativecommons.org/licenses/by-nc-nd/3.0/fr/)

Quand les expressions sont arrivées dans DGPad, logiciel de géométrie dynamique pour tablette (mais aussi pour PC en WebApp), son auteur nous annonçait :

Sur le fond, une expression peut être :
- une formule qui donne un nombre, comme dans CaRMetal
- un curseur
- la définition d’une fonction (dont le tracé de la courbe est juste une option)
- un tableau
- un programme
- du texte
- un mélange des 5 précédents...

Cette annonce était accompagnée de deux vidéos, la deuxième étant réservée aux "power users".
Cet article n’a pas l’ambition de donner un descriptif complet de toutes ces possibilités ; mais se veut simplement une mise en appétit avant d’aller plus loin.

Pour celle ou celui qui voudrait aller plus loin

il est possible de se rendre sur le site de l’IREM de la Réunion

ou de consulter le didacticiel DGPad écrit par une équipe de l’IREM de Toulouse : il est en cours de réalisation donc encore incomplet à cette date (avril 2014).

Il a été réellement écrit à quatre mains, deux masculines et deux féminines : parité oblige ! Les deux mains féminines se sont plutôt activées du côté des vidéos : un bon moyen de souligner la très grande facilité d’utilisation de DGPad, et le haut degré de manipulation directe. Et les deux mains masculines, c’est ... tout le reste ! Toutes les vidéos ont été réalisées depuis un iPad, mais les manipulations sont strictement identiques sur un PC : le "tap" est à remplacer par un clic de la souris.

Plutôt qu’un catalogue qui détaillerait une à une les diverses formes d’expressions, il a été décidé de faire un mode d’emploi très contextualisé, à partir d’exemples de construction de figure : cet article se veut d’initiation, donc destiné à ceux qui découvrent le logiciel. Les figures sont cependant suffisamment riches pour que soient balayées de très nombreuses possibilités.

L’exemple du produit remarquable

Ah, cette différence de deux carrés, qui pose encore quelquefois problème même chez les grands du lycée !

Pour obtenir la figure en plein écran, avec ses outils

La construction de la figure est filmée en cinq épisodes : un onglet par épisode.

La figure de base

Une remarque à propos de la construction du quatrième sommet du parallélogramme :
Dans le film, par souci de simplicité, ce sont les nombres complexes qui ont été utilisés. Mais bien évidemment, d’autres expressions (accessibles aux élèves de collège ou du début du lycée) sont tout à fait possibles. Ainsi, pour construire D quatrième sommet du parallélogramme ABCD, on peut écrire :

[x(C)+x(B)-x(A),y(C)+y(B)-y(A)]

Sans oublier évidemment les élégantes solutions géométriques ou la macro "translation" !

Premiers calculs

Les expressions ici utilisées sont des longueurs et des distances. Un aspect n’a pas été illustré : celui des angles. En fait le développeur n’a pas encore tranché pour les dernières finitions : en interne et dans les expressions les angles sont en radians et orientés. Mais avec l’outil contextualisé "angle" les mesures lues sont en degrés et non orientés. Affaire à suivre donc ...

Une macro

Sur la page d’accueil de DGPad, on trouve une jolie vidéo qui détaille la fabrication d’une macro. Cette vidéo a été faite avant l’arrivée de l’outil calculatrice. Mais en fait, les expressions et les macros font très bon ménage ...

Aspect conditionnel

Pour le "cacher-conditionnel" du segment S8, le petit programme utilisé était le suivant :

S8.setHidden(Deplacer==0);"prog"

Inutile de savoir programmer pour travailler sur tout ce qui concerne l’aspect conditionnel. La syntaxe à utiliser est toujours du même type, et elle est donnée ci-dessous (on peut écrire plusieurs instructions dans un même programme, avant le ;"<texte>" , à condition de les séparer par un point-virgule) :

A.setHidden(<expression>);"<texte>" pour cacher/montrer un point par exemple : l’expression vaut 0 ou1.

Poly1.setOpacity(<expression>);"<texte>" pour jouer sur la transparence d’un polygone par exemple : l’expression est un décimal compris entre 0 et 1.

Poly1.setRGBColor(r,g,b);"<texte>" pour choisir la couleur RGB : r, g et b sont des entiers entre 1 et 256.

S1.setPrecision(<expression>);"<texte> pour jouer sur la précision de l’affichage numérique : l’expression est un entier compris entre 0 et 10.

A.setFontSize(<expression>);"<texte>" pour choisir la taille de la police : l’expression est un entier compris entre 6 et 60.

B.setShowName(<expression>;"<texte> pour afficher/cacher le nom : l’expression vaut 0 ou1.

S1.setSize(<expression>);"<texte>" pour choisir l’épaisseur : l’expression est un décimal compris entre 0,5 et 25.

Poly1.setLayer(<expression>);"<texte>" pour choisir un niveau de calque : l’expression est alors un nombre entier compris entre 0 et 10.

S1.setDashed(<expression>);"<texte>" pour choisir le trait plein/pontillé : l’expression vaut 0 ou 1.

Important : tout ce qui est écrit avant le dernier point-virgule s’écrit obligatoirement clavier de la calculatrice baissé.

Textes complexes

Pour qu’un calcul soit accompagné d’un texte explicatif placé devant, c’est très simple : il suffit d’écrire son calcul dans le premier champ d’entrée, puis de mettre le texte de son choix ... dans le champ d’entrée "Texte".

Mais si on désire un texte plus subtil, avec par exemple un calcul suivi d’un texte puis d’un autre calcul puis encore autre chose, on ne complète que le premier champ d’entrée. La syntaxe à utiliser a été rapidement abordée dans le film, voici comment procéder :

1- Pour mélanger textes et expressions, le principe est celui de la concaténation en javascript (qui s’effectue avec le signe +) ; ce qui donne ce type d’écriture :
E1+" texte "+E2+" autre texte "

Remarque : les textes doivent être tapés avec le clavier classique (donc clavier de la calculatrice baissé). Il est également possible de tout écrire dans son éditeur de texte préféré, puis de procéder par copier-coller, toujours avec le clavier de la calculatrice baissé. Etrange cette histoire de copier-coller uniquement possible en présence du clavier classique ? C’est en fait obligatoire : le permettre en présence du clavier de la calculatrice serait pour une WebApp une énorme faille de sécurité !!!

Dans le cas qui nous occupe, voici les deux concaténations utilisées :

(a*a-b*b)+" = "+(a*a)+" - "+(b*b)+"= a*a-b*b"

(a*a-b*b)+" = "+(a+b)+" x "+(a-b)+" = (a+b)(a-b)"

2- Ces deux textes, que nous appellerons "Expression1" et "Expression2" ont de plus une visibilité conditionnelle. Il y a deux écritures possibles dans DGPad pour les expressions conditionnelles :

(test) ?valeur1:valeur2

IF((condition),valeur1,valeur2) (IF en majuscule !)

C’est la première que nous avons choisie ici, avec en plus une double condition, ce qui donne :

(Deplacer==0) ?"Expression1" :((Deplacer>1.56) ?"Expression2" :" ")

Important : bien veiller à ne pas insérer d’espace (sauf dans les chaines de caractères évidemment) et à entourer les tests de parenthèses.

Expressions et fonctions

Parallélogramme

Au collège où le passage du numérique au littéral est parfois délicat, un contexte géométrique peut être bien utile pour travailler la notion de fonction.
On trouvera ci-dessous un exemple hyper classique de fonction ainsi introduite. La seule nouveauté, c’est la réalisation ... avec DGPad.

Voici l’énoncé, et la figure :

ABCD est un rectangle. M est un point variable. Les distances AM, BP, CR et DS sont égales. Calculer l’aire du parallélogramme MPRS en fonction de a et de a seulement. Ce qui signifie : ne pas utiliser ni d(), ni x(), ni y() ...
Ce calcul se fera à l’aide de l’outil "calculatrice", en gardant bien à l’esprit que le signe de multiplication est obligatoire.

Représenter graphiquement la fonction "Aire" dans le repère (O,I,J). Méthode : la mesure "a" a déjà été reportée sur l’axe OI, reporter la mesure obtenue pour l’aire sur l’axe OJ. (Attention : OI=1, mais OJ= 1/4).

Pour obtenir la figure avec les outils en plein écran.

Et voici le film de la solution :

Fonctions

Une fonction peut être définie géométriquement (voir l’exemple de l’aire du parallélogramme, dépendant de l’abscisse du point qui la définit), algorithmiquement, ou algébriquement. Dans ce dernier cas [1], les possibilités algébriques de DGPad, en particulier sa concision, sont d’une grande aide.

Parce que l’algèbre est encore en cours d’acquisition en entrant au Lycée, on va traiter ici un exemple issu du DNB Amérique du Nord 2013 :

Tom doit calculer 3,5².

« Pas la peine de prendre la calculatrice », lui dit Julie, tu n’as qu’à effectuer le produit de 3 par 4 et rajouter 0,25.

1. Effectuer le calcul proposé par Julie et vérifier que le résultat obtenu est bien le carré de 3,5.

2. Proposer une façon simple de calculer 7,5² et donner le résultat.

3. Julie propose la conjecture suivante : (n+0,5)²=n(n+1)²+0,25

n est un nombre entier positif.

Prouver que la conjecture de Julie est vraie (quel que soit le nombre n)

Pour émettre la conjecture proposée dans cet exercice, on va donc faire faire le calcul par DGPad, en se donnant la possibilité de faire varier n dans un intervalle, et pas seulement pour n=3 ou n=7.

Entrée de n

Pour faire n=3 dans DGPad, on doit donc créer une expression qui s’appellera n et qui sera égale à 3. En fait, on la nommera à la fin, et on va, lors de sa création, laisser DGPad la nommer E1 : On ne va pas fâcher DGPad dès le début, ne soyons pas contrariants !

La création de l’expression se fait donc en cliquant sur l’icône représentant le clavier algébrique de DGPad :

Ceci déroule le clavier algébrique, mais aussi, apparaît la définition de E1, que l’on peut entrer algébriquement avec le clavier :

Puisque Julie nous suggère que n soit égal à 3 pour l’instant, cliquons sur le 3 du clavier, et l’expression E1 contient un 3 : L’affichage donne E1 = 3, y compris dans la figure. Mais, en prévision de la suite, on souhaite que n puisse varier, alors on définit les bornes de l’intervalle (ici, de 0 à 10, mais c’est un choix sur lequel on peut revenir ultérieurement) dans lequel n va varier :

Sur la figure, E1 s’est alors transformé en curseur :

Un clic sur la roue dentée (en bas de la fenêtre) permet alors de changer le nom de E1 en n, pour que la lettre n signifie quelque chose pour DGPad :

Entrée de (n+0,5)²

Maintenant que l’expression créée s’appelle n, la prochaine expression à créer s’appellera à nouveau, par défaut, E1. On va la rendre égale à (n+0,5)^2 avec le clavier :

Pour peu que le curseur n ait été laissé sur la position 3, on a alors la réponse à la question 1 : 12,25.

Ensuite, comme on l’avait discrètement fait précédemment, il est bon de faire glisser cette nouvelle expression vers la droite, afin qu’elle libère le lieu de naissance de la prochaine expression (apportez une bassine d’eau chaude et du linge propre en abondance) :

Entrée de n(n+0,5)+0,25

On fait comme pour E1 (la nouvelle expression s’appellera E2) ; mais alors que 2x est automatiquement reconnu comme 2×x, n(n+1) n’est pas reconnu comme le produit n×(n+1), mais comme la fonction n appliquée à n+1 ; il est donc nécessaire cette fois-ci d’insérer (au clavier algébrique) un signe de multiplication entre n et (n+1) :

On constate là encore, que l’expression vaut (toujours si le curseur est resté sur la position 3) 12,25 :

C’est ici que ça commence à devenir intéressant : Comme n a été cursorisé, on peut le faire varier en manipulant le curseur, et émettre des dizaines de conjectures en quelques secondes :

En manipulant le curseur ci-dessus, on conjecture rapidement que non seulement E1(3)=E2(3), mais également que E1(7)=E2(7) et bien d’autres égalités de ce genre.

égalité de fonctions

Le lecteur attentif aura remarqué que l’introduction du mot "fonction" est bien tardive dans cet onglet consacré aux fonctions ! C’est intentionnel, parce que la notion de fonction d’une variable réelle est relativement indépendante des notions de variation et de représentation graphique : On peut très bien se baser sur cet exemple pour définir, sinon la notion de fonction, du moins celle de l’égalité entre fonctions [2].

On avait donc jusqu’ici défini, sans le dire, deux fonctions. Pour peu qu’elles dépendent de la variable muette x et non de l’expression cursorisée n, DGpad propose, comme le djinn d’Aladin, la possibilité, si on le souhaite, de les représenter graphiquement.

Pour cela on recommence toute la construction en mettant des x à la place des n :

Pas besoin du curseur n, mais on crée une expression où on place, toujours avec le clavier algébrique, (x+0.5)^2 ; alors, DGPad, quelque peu dérouté parce que E1 dépend d’une expression x qui n’existe pas dans la figure, devine qu’en fait ce x est une variable, et reconnaît E1 comme une fonction de x ; il propose alors de la représenter graphiquement :

Si on refuse cette offre alléchante, on pourra utiliser E1 comme une fonction de x dans la suite de la construction (par exemple, créer un point dont l’ordonnée est E1(x(M)) où M est un point mobile sur l’axe des abscisses, puis activer la trace de ce point...). Mais si on accepte la proposition du djinn, la figure s’enrichit d’une parabole et d’un objet f1 qui est justement cette fonction.

Pour vérifier que ∀ x, (x+0,5)²=x(x+1)+0,25, on doit créer une deuxième parabole puis vérifier que les deux paraboles sont superposées.

La création de la deuxième fonction est similaire à ce qu’on a déjà fait :

Mais on se heurte alors à un problème de vision : Comment voir que deux courbes sont superposées ? En fait, en changeant l’aspect de l’une des deux, on y arrive ; on choisit par exemple de la mettre en pointillés, en bleu et en épais :

On voit alors très bien qu’il y a deux paraboles superposées :

La fin de l’exercice ne peut plus être faite en DGPad car celui-ci ne contient pas (encore) de calcul formel. Mais DGPad a parfaitement rempli son rôle d’aide à l’émission de conjectures, ce qui était le but visé : Inciter l’élève à mettre en œuvre le calcul formel pour valider une conjecture.

Nombres complexes

Cette activité peut être échelonnée à tout le lycée, c’est là son intérêt essentiel.

En Seconde

On commence par placer un point sur l’axe des abscisses, du côté droit de la figure :

DGPad ayant nommé P1 ce point, autant ne pas le contrarier, et garder ce nom. Mais maintenant on va l’élever à la puissance 0,5, ce qui revient à prendre "sa" racine carrée ; en bref, on va rajouter à cette figure, la racine carrée de P1, qui sera une expression.

  • Eh, M’sieur, z’êtes sûr que vous allez bien ? Ce sont les nombres qui ont une racine carrée, pas les points !
  • Oui, mais depuis le cours de 6e sur les graduations, vous savez que du moment qu’un point est attaché à une droite, la donnée du point est équivalente à celle de son abscisse !
  • Euh, je ne me souviens pas trop du cours de 6e, n’empêche, vous avez l’air tout pâle avec vos racines carrées de points...
  • En fait, on devrait dire "le point sur l’axe des abscisses, dont l’abscisse est la racine carrée de l’abscisse de P1" ; DGPad préfère abréger en "la racine carrée de P1"...

Et pendant qu’on y est, on va représenter les coordonnées calculées comme un nuage de points :

La surprise, c’est qu’on obtient deux points (en fait, une liste de points) :

Ce qui permet d’affirmer hardiment :

Un nombre réel positif possède deux racines carrées ; elles sont opposées l’une de l’autre ; alors on convient d’appeler "la racine carrée" celle des deux qui est positive.

Ainsi, 49 possède deux racines carrées, 7 et -7, comme le montre la présence de deux points symétriques par rapport à l’origine.

On vérifie cela en rajoutant la représentation graphique de la fonction x^2-x(P1) sur la figure ; on voit alors que la parabole coupe bel et bien deux fois l’axe des abscisses :

En Première

On reprend la figure précédente, mais on déplace le point P1 à gauche de l’origine, comme ça pour voir...

On voit alors qu’un réel négatif possède toujours deux racines carrées (les deux points n’ont pas disparu) mais que celles-ci ne sont plus réelles (les deux points ne sont plus sur l’axe des abscisses). Ci-dessus, on voit que les racines de 49 ont pour abscisse ("partie réelle") 0 et pour ordonnées ("parties imaginaires") respectives 7 et -7. On va noter, ci-dessous, 7i et -7i ces deux "nombres".

En particulier, en manipulant la nouvelle figure, on constate que -1, comme tout réel négatif qui se respecte, possède deux racines carrées. On va en construire une des deux par expression

puis la nommer (comme dans Python) par la lettre j :

Alors, désormais, on peut multiplier les points du plan (en réalité, leurs affixes) par j ; on peut multiplier j par 7 et -7 pour retrouver les racines carrées de -49, et on peut reconstruire les nombres complexes en additionnant des multiples de [1,0] et de j. Par exemple, on place un point libre P1 dans le plan, puis on construit comme expression, son produit par j :

La figure obtenue est intéressante à manipuler à l’heure où le mot "rotation" a totalement disparu des programmes de mathématiques :

Mais on peut aussi utiliser le "i" du clavier algébrique de DGPad, qui désigne le même nombre complexe. Par exemple, si on veut multiplier entre eux les deux nombres 4+3i et 1-i, il suffit de demander à DGPad :

Idem si on veut les diviser :

polynôme cyclotomique

L’idée revient à Gauss : Le polynôme z15-1 s’annulant chaque fois que z5-1 s’annule, il est divisible par z5-1 ; de même, il est divisible par z3-1 et par z-1. Le facteur qui reste après ces divisions est le polynôme cyclotomique concerné. L’idée de Gauss est que si le point de départ est la divisibilité de 15 par 3 et 5, le polynôme cyclotomique pourrait être un outil pour étudier la divisibilité, mais ceci est une autre histoire.

DGPad permet de construire géométriquement le polynôme cyclotomique en question, par la construction des racines cubiques, cinquièmes et quinzièmes de 1. On obtient alors des polygones réguliers.

Avant de construire des racines de l’unité, on construit l’unité elle-même, comme le point d’affixe 1 :

L’expression obtenue (en fait, un point mais non tracé) s’appelant E1, il suffit de créer l’expression E1^(1/3) pour avoir les trois racines cubiques de 1 :

Comme d’habitude, on place aussi les images en plus des affixes :

On vérifie que les trois points forment un triangle équilatéral, mais surtout on les rapetisse et on les place sur un calque de numéro élevé pour qu’ils ne soient pas cachés par les futurs points qu’on va tracer ensuite :

Si on rajoute un carré (racines quatrièmes de 1), un hexagone (racines sixièmes de 1) etc, on constate que seul le point unité est commun aux polygones ; pour éviter d’encombrer la figure avec des points qui ne serviront à rien par la suite, on va passer directement au pentagone (car 5 divise 15) :

puis au pentadécagone :

Le pentagone est colorié en vert et les 15 derniers points en bleu ; on voit alors cette mystique figure :

Le plus dur est fait ! On constate ci-dessus par contraste, que les 8 points bleus sont des racines quinzièmes de 1 qui ne sont pas déjà racines cubiques ou cinquièmes de 1 (sinon il y aurait d’autres points par dessus, rouges pour les racines cubiques, verts pour les racines cinquièmes). Le nombre de points bleus (ici, 8) est l’indicatrice d’Euler de 15 (ici, comme 15=5×3, φ(15)=4×2=8).

Comme z15-1 est le produit des 15 fonctions z-a, où a est une racine quinzième de 1, le polynôme cyclotomique Φ15 est le produit des z-a où a est une racine primitive quinzième de 1 ; soit, pour DGPad, le produit des z-a où a est un des points bleus.

L’examen de ces points avec l’outil de modification permet de voir qu’ils s’appellent respectivement P10, P11, P13, P16, P17, P20, P22 et P23. Le polynôme cyclotomique vaut donc (z-P10)(z-P11)(z-P13)(z-P16)(z-P17)(z-P20)(z-P22)(z-P23)

On construit alors un point libre dans le plan, que l’on nomme z. Puis on construit (par expression) un nouveau point, égal à (z-P10)(z-P11)(z-P13)(z-P16)(z-P17)(z-P20)(z-P22)(z-P23) :

En construisant l’image du point z par le polynôme cyclotomique, on peut, par des mouvements de z, observer les valeurs que prend le polynôme cyclotomique, du moment que z est proche de l’origine (sinon on ne voit pas son image) ; autrement dit, on peut "voir" le polynôme cyclotomique comme une fonction de C dans C :

En faisant tourner z autour d’une des racines primitives, on constate que le polynôme cyclotomique accomplit un tour autour de la même racine primitive.

Mais puisque, par consturction, les zéros du polynôme cyclotomique sont sur le cercle unité, le polynôme cyclotomique s’annule 8 fois sur le cercle. Mais il le fait en tournant beaucoup, comme le montre l’image d’un point a du cercle (image dont la trace a été activée ici) :

Et si, au lieu de regarder l’image d’un cercle, on regarde celle de l’axe des abscisses, on a un polynôme réel qu’on peut représenter graphiquement :

Remarque : En entrant cyclotomic(15) dans XCas, on apprend qu’une fois développé, le 15e polynôme cyclotomique est x8-x7+x5-x4+x3-x+1, qu’on peut également représenter graphiquement, ou redéfinir sur C.


notes

[1mais aussi pour une fonction définie algorithmiquement, en effet on peut, dans une formule algébrique, mettre des vrais morceaux de JavaScript, et définir une fonction par un algorithme ; on y reviendra plus tard

[2Pour que deux fonctions soient égales, il faut au moins qu’elles aient même ensemble de définition. C’est sous-entendu ici, puisque DGPad les définit par défaut sur R.

Réagir à cet article
Vous souhaitez compléter cet article pour un numéro futur, réagir à son contenu, demander des précisions à l'auteur ou au comité de rédaction...
À lire aussi ici
MathémaTICE est un projet
en collaboration avec
Suivre la vie du site Flux RSS 2.0  |  Espace de rédaction  |  Nous contacter  |  Site réalisé avec: SPIP  |  N° ISSN 2109-9197