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.

Réactions à l’article « Polynômes de Lagrange : récit d’une exploration en Terminale S utilisant les outils informatiques »
Article mis en ligne le 8 juin 2018
dernière modification le 5 octobre 2018

par Patrice Debrabant

Cet article est une « réaction » à l’article Polynômes de Lagrange : récit d’une exploration en Terminale S utilisant les outils informatiques par Jean-Marc Duquesnoy et Emmanuel Ostenne. Avec plusieurs rebonds sur différentes raquettes : DGPad, SofusPy, CaRMetal, Python.
Nous recommandons au lecteur de lire cet article en préalable.

Article placé sous licence CC-by-SA : http://creativecommons.org/licenses/by-sa/3.0/fr/legalcode

Premier rebond

Après avoir lu cet article, il m’a semblé intéressant de donner une version en géométrie dynamique de la résolution du problème posé (construction du polynôme d’interpolation et de sa représentation graphique).

La première idée qui m’est venue a été de le faire avec DGPad, dont l’export HTML est particulièrement appréciable. La méthode consiste à créer une expression DGPad avec une variable $x$ (le logiciel va identifier cette variable), et à exploiter une option qui permet de tracer automatiquement la courbe de la fonction de $x$ correspondante.

En pratique, on commence par créer N points avec DGPad. Par défaut, ces points s’appelleront P1,… , PN.

Il faut ensuite créer une expression DGPad égale à $\sum_{i=1}^n y_i L_i(X)$ en remplaçant $x_i$ par $x(Pi)$ et $y_i$ par $y(Pi)$.

Pour générer cette expression, on peut utiliser beaucoup de logiciels de programmation. J’ai choisi d’utiliser CaRMetal, qui permet d’écrire un programme en Javascript francisé et simplifié [1] (comme dans le programme ci-dessous) ou en pur Javascript.

Voici un script qui génère une expression qui convient (pour N=5) :

En exécutant ce script, on obtient :

On copie-colle ce script dans une expression DGPad.


Quand DGPad a reconnu une fonction de x, on clique sur le bouton pour obtenir la courbe représentative du polynôme de Lagrange.


On peut ensuite masquer l’expression.
On obtient une figure dynamique de l’interpolation de Lagrange (dans la figure DGPad ci-dessous, les points sont des points libres et la courbe est dynamique par rapport à ces points).

- - -

Deuxième rebond

J’ai contacté Emmanuel et Jean-Marc pour leur présenter ce travail suscité par la lecture de leur article.
Ce fut l’occasion d’un échange constructif et amical, je les en remercie chaleureusement.

Ils ont suggéré de réécrire en Python [2] le script CaRMetal qui génère l’expression DGPad.
Car les collègues de lycée utilisent Python, que l’on peut programmer en ligne avec par exemple EmbellishedJollyErrors. [3]

Voici le script Python qu’ils m’ont envoyé :

  1. n=5
  2. formule="0"
  3. L=[""]*n
  4. for i in range(1,n) :
  5.   L[i]="1"
  6.   for j in range(1,n) :
  7.       if j==i : continue
  8.       L[i]+="*(x-x(P"+str(j)+"))/(x(P"+str(i)+")-x(P"+str(j)+"))"
  9.   L[i]+="*y(P"+str(i)+")"
  10.   formule+="+"+L[i]
  11. print(formule)

Télécharger

Ce script permet de retisser un lien avec leur article original.

- - -

Troisième rebond

Patrick Raffinat, qui a développé une extension Blockly pour DGPad (voir l’article 1 080), m’a fait remarquer que l’on pouvait obtenir plus facilement la courbe du polynôme de Lagrange. Avec cette extension, en exécutant un programme Blockly on fait apparaître l’environnement DGPad avec la courbe :

Extension Blockly pour DGPad (démo 5)

J’ai trouvé cela très intéressant. On est arrivé à cette variante pour le début :

...

D’un certain point de vue, Patrick avait relevé le défi suggéré par Emmanuel Ostenne de générer l’expression DGPad avec Scratch (ou un logiciel comparable comme Blockly).
Mais il avait fait bien plus : par ce procédé, on obtenait la courbe en une seule étape, sans aucun travail via l’interface de DGPad.

Selon moi, le « maillon faible » de l’affaire restait la construction de l’expression DGPad avec Blockly :

Cela n’est pas nouveau, les logiciels de programmation par blocs ne sont pas très pratiques pour manipuler de longues expressions algébriques ou littérales composées. [4]

Si on utilisait un autre logiciel pour générer l’expression DGPad, on perdait l’atout « tout en un » particulièrement appréciable du processus suivi avec l’extension Blockly pour DGPad.
Mais en fait, j’ai réalisé que ce recours était inutile : l’extension Blockly pour DGPad, comme toutes les extensions similaires développées par Patrick Raffinat, donne accès à un éditeur en ligne couplé à l’éditeur Blockly. On a donc la possibilité de commencer le script dans Blockly et de basculer dans l’éditeur en ligne pour achever le programme. Ce programme peut ensuite être lancé depuis l’éditeur en ligne (autrement dit ici, en Javascript).


Par conséquent, on peut par exemple écrire le script suivant, commencé dans Blocky et terminé dans l’éditeur en ligne, qui fonctionnera très bien :

On a ici une « traduction » du programme Blockly en programme en ligne qui est justifiée par un besoin, ce qui me semble plus pédagogique qu’une traduction factice et sans enjeu (ou dont le seul enjeu serait de montrer que l’on peut traduire un programme Blockly en programme Javascript ou Python).

- - -

Quatrième rebond

L’extension Blockly pour DGPad permet de programmer la construction de la courbe du polynôme de Lagrange de façon naturelle et intuitive, comme dans CaRMetal.
De plus, comme on l’a vu, l’extension fournit également une version Javascript du programme Blockly.
Javascript est le langage de script de CaRMetal. Et si l’on essayait de copier-coller le programme Javascript dans un script CaRMetal ?

Le script fonctionne parfaitement sans aucune modification(!). On obtient une version dynamique comme avec DGPad. En une seule étape (on aurait bien-sûr pu construire ce script directement dans CaRMetal, avec éventuellement une syntaxe simplifiée en français [5]).

fichier CaRMetal
- - -

Cinquième rebond

Et si l’on passait en calcul symbolique avec Python ?
Ce rebond est traité par Patrick Raffinat, que je remercie pour toute l’aide apportée, dans l’article 1076.