samedi 10 janvier 2009

Les scripts avec Dr. Geo II

Dans cet article je montrerai comment utiliser les scripts Dr. Geo II pour construire la courbe représentative d'une fonction, puis la tangente en tout point de cette courbe. La logique de construction de la figure sera indépendante de la fonction.

Cet article est intéressant à titre historique. L'approche qu'il présente est obsolète. Hilaire, février 2020.

La courbe représentative

On commence par construire un segment sur lequel on place un point mobile, nommé 'move me'.
Ensuite nous définissons notre fonction à l'aide d'un premier script en allant dans le menu Dr. Geo 'numerics>edit script'. Pour définir notre fonction nous pourrions définir un script avec comme argument une abscisse mais cela ne serait pas pratique. Nous allons plutôt définir notre fonction comme un bloc de code, c'est une spécialité de Pharo. Notre script s'appelle maFonction, c'est simplement la fonction cosinus :
Nous définissons ensuite un deuxième script qui aura un argument, un point, et qui retournera un autre point le projeté du premier sur la courbe[1]. Pour calculer l'ordonnée de ce point nous utilisons notre fonction définie précédemment :
Les scripts retournent un résultat par le mot clé '^'.

Nous allons maintenant utiliser ce script pour afficher ces coordonnées dans la figure. Pour cela nous utilisons la fonction 'numerics>use script' du menu Dr. Geo. Une boîte de dialogue s'affiche alors, elle explique comment utiliser les scripts.

Pour tout script, après avoir sélectionné les arguments dans la figure, il faut cliquer à l'emplacement où nous souhaitons afficher la valeur retournée par le script. Pour chaque script disponible, les commentaires des premières lignes de son code source sont affichés et constituent une indication utile pour l'utilisateur :
Dans notre exemple, nous choisissons le script pointM:, nous sélectionnons le point 'move me' de la figure comme argument, puis nous cliquons à l'emplacement souhaité dans la figure pour afficher le résultat.

Nous construisons ensuite le point géométrique M avec comme coordonnées le résultat du script. Il existe une fonction pour faire exactement cela avec Dr. Geo: menu 'points>points defined by its coordinates'. Le point ainsi construit est un point de la courbe représentative de notre fonction, pour avoir la courbe il nous suffit de demander le lieu de ce point M lorsque le point 'move me' parcourt le segment. Cela nous donne la courbe :

La tangente

Pour construire la tangente, nous calculons en premier lieu la pente en tout point de la courbe (nous supposons que notre fonction est continue). Pour ce faire nous définissons un script qui pour un point de la courbe retourne la pente, un réel :
Le script pourra paraître étrange, en effet il n'y a pas de parenthèses autour de la soustraction, Pharo n'utilise pas la priorité des opérateurs arithmétiques mais celle des messages. 

Nous utilisons ensuite ce script par le menu 'numerics>use script' avec comme argument notre point M de la courbe. Éventuellement nous nommons 'pente' le résultat de ce script. Son affichage n'est pas nécessaire pour la suite, mais permet simplement de rendre compte à l'utilisateur de la valeur de la pente en M.

Pour construire notre tangente nous avons besoin de deux points. Nous avons déjà le point M. Il nous faut un point N sur la tangente. Pour ce faire nous définissons un script pointN: qui à partir du point M retourne les coordonnées de ce point N :

Pour finir, à partir de ce dernier script, nous construisons les coordonnées de ce point N dans la figure, puis le point N et enfant la tangente passant par les points M et N. A propos de scripts utilisés dans une figure, Dr. Geo donne pour chacun d'eux des informations sur leur nom et les arguments utilisés :

On change de fonction

La conception proposée ci-dessus est indépendante de la fonction utilisée, nous pouvons donc varier les plaisirs et définir diverses fonctions.
En définissant la fonction en x --> cos(4x) +sin(x) :
maFonction
   ^ [:x | (x * 4) cos + x sin]


Cela nous donne la courbe suivante et bien sûr la tangente est toujours correcte :

Ou bien x --> x * cos(x) :
maFonction
        ^ [:x | x * x cos]


Je ne sais pas vous, mais moi, j'aurais adoré faire mumuse avec ça au lycée...

Notes

[1] Lorsque nous définissons un point, il faut l'entendre en tant qu'objet Point Pharo, c'est à dire un couple de coordonnées. En Pharo un Point peut se définir par 54@45.2.


Aucun commentaire:

Enregistrer un commentaire