Calcul formel et algorithmique interactifs

Bernard.Parisse@univ-grenoble-alpes.fr

2017

Avant un long discours, quelques exemples interactifs : un tracé de graphe, un tableau de variations, un programme en syntaxe Python.


def second_deg(a,b,c):
    # local d
    d=b*b-4*a*c
    if d<0:
        return "pas de solution"
    return [(-b-sqrt(d))/(2*a),(-b+sqrt(d))/(2*a)]

onload


Résumé: Il existe de plus en plus de documents mathématiques sur le web, la plupart sont des documents PDF inertes, ce qui ne favorise pas une lecture active. On présente ici deux méthodes pour permettre au lecteur de modifier des calculs, des programmes, afficher un graphe et tester tout cela depuis son navigateur. La première méthode consiste à ajouter des liens vers une feuille de calcul de Xcas pour Firefox et est très simple à mettre en oeuvre pour l’auteur. La deuxième donne beaucoup plus de contrôle à l’auteur, elle nécessite de savoir taper en LATEX. Plusieurs technologies sont utilisées : LATEX, hevea[3] (compilateur vers HTML5) ou [1], itex2mml[2] (traducteur de formules vers MathML), le moteur de calcul formel Giac[4] et le compilateur emscripten[5] (C vers javascript).

Table des matières

Index

  • giacinputbigmath, 3.4
  • giacinputmath, 3.4
  • giaclink, 3.4
  • giaconload, 3.4
  • giacprog, 3.4
  • giacslider, 3.4

1  Introduction

LATEX est devenu depuis plus de deux décennies le standard de l’édition mathématique professionnelle papier. Par contre, on trouve un peu de tout pour les maths sur le web :

Il y a une raison au mauvais rendu mathématique de nombreuses pages HTML : il existe bien un standard pour un rendu mathématique de qualité, c’est MathML, mais son support a été abandonné par Chrome et il n’a jamais été implémenté par Internet Explorer. Seuls Firefox et les navigateurs utilisant le même webkit supportent un rendu natif de MathML, sur les autres navigateurs il faut passer par une bibliothèque en javascript comme mathjax, ce qui ralentit considérablement l’affichage dès que le document atteint quelques dizaines de pages. Mais comme Firefox s’installe sur tout type d’appareil, cela ne me semble pas une raison valide pour s’interdire d’utiliser MathML. Ainsi Xcas pour Firefox utilise MathML, et nous utilisons le programme hevea qui permet en association avec itex2mml de traduire du LATEX vers du HTML5+MathML.

Pour rendre une page interactive, la solution traditionnelle consiste à faire dialoguer le navigateur avec un serveur sur lequel peut tourner un logiciel de calcul ou de programmation. Ceci peut malheureusement nécessiter des ressources importantes coté serveur, et cela nécessite à tout moment un accès réseau. La solution que nous proposons ici repose sur des calculs faits entièrement en local par le navigateur. Le logiciel de calcul et programmation doit donc être écrit en javascript, le langage des navigateurs, ce qui est réalisé ici en compilant avec emscripten le code C++ du moteur de calcul formel Giac (celui du logiciel Xcas et de Geogebra) vers javascript. Ceci a été fait à l’origine pour répondre à la demande de Geogebra, cela sert maintenant à l’interface web de Xcas (Xcas pour Firefox) et également comme moteur de calcul et interpréteur de pages interactives crées à partir de LATEXḊepuis quelques semaines, il est possible d’utiliser une syntaxe compatible avec le langage Python de base, ce qui devrait intéresser les enseignants de lycée pour l’algorithmique et pas uniquement pour le calcul formel.

Dans la section 2, nous expliquons comment un auteur peut publier une feuille de calcul ou un programme, ceci ne nécessite aucune connaissance de LATEXLa section 3 explique comment créer un document LATEX avec des champs de saisie qui seront exécutés par le moteur de calcul, elle nécessite de connaitre un peu LATEX (des environements d’édition comme texmaker permettent de s’initier à LATEX en une heure environ).

2  Xcas pour Firefox

Xcas pour Firefox est une interface de Xcas en cours de développement, utilisable depuis un navigateur compatible avec Firefox, donc depuis des matériels très divers: PC bien sur, mais aussi tablettes, voire smartphones (mais la taille d’écran d’un smartphone standard y rend l’usage un peu difficile). Il est conseillé d’utiliser Firefox, car les calculs sont plus rapides avec ce navigateur, grâce à la technologie asmjs qui permet au navigateur de traduire en code natif certaines portions du code javascript généré par le compilateur emscripten, le gain en vitesse est souvent supérieur à un facteur 5, tout cela sans aucune intervention de l’utilisateur.

Comme dans Xcas, on tape des lignes de commandes (au sens large, une commande peut être un programme ou une commande graphique), qui une fois exécutées apparaissent dans un historique, on peut alors les modifier. Il n’y a pas de menus, mais des boutons pour faire apparaitre des assistants, dans deux catégories math et prog.

On peut sauvegarder une feuille de calcul par l’intermédiaire des cookies du navigateur et les retrouver plus tard. On peut également partager une feuille de calcul par email en cliquant sur le lien email, le destinataire clique sur le lien dans le mail reçu et retrouve alors la feuille de calcul. On peut ainsi imaginer envoyer un début de programme ou une liste partielle de commandes de calcul formel envoyé par un enseignant à ses élèves, et réciproquement un élève peut renvoyer une feuille de calcul complétée pour évaluation. L’enseignant peut aussi utiliser le bouton Clone pour créer un lien ouvrant la feuille de calcul, lien qu’il peut insérer dans une de ses pages personnelles.

À noter : le menu math permet de créer un curseur, ce qui permet d’animer un graphique ou observer la dépendance d’un résultat en fonction d’un paramètre.

3  Documents interactifs calcul formel et/ou algorithmique avec LATEX

3.1  Le point de vue du lecteur

Le lecteur ouvre le document HTML depuis son navigateur comme n’importe quel lien. Il dispose d’un tableau de bord en bas du document et d’une petite calculatrice, exactement comme sur la version HTML de cet article. Le tableau de bord permet d’accéder par un lien à la table des matières du document, à l’index. Il peut cloner une commande ou un programme qu’il vient d’exécuter dans Xcas pour Firefox, effacer l’hisorique de calcul, augmenter ou diminuer l’historique de calculs. Au milieu du tableu de bord se trouve la ligne de commande de la calculatrice, le bouton permettant d’exécuter le calcul, Le bouton Restart permet de réinitialiser la session de calcul, le bouton Exec. tout exécute tous les calculs de la feuille, ce qui peut être long.

Pour plus d’exemples, vous pouvez consulter le manuel algorithmique lycée de Xcas, mon cours de 2ième année de licence Courbes paramétrées et équations différentielles pour la physique, ou le manuel Algorithmes de Xcas

3.2  Consignes au rédacteur

3.3  Installation

Je conseille de travailler sous Linux, si vous travaillez sur Mac ou Windows, il est aujourd’hui facile d’installer un Linux dans une machine virtuelle avec Virtualbox. Il faut disposer d’une distribution latex, installer la dernière version d’hevea, installer hevea2mml et quelques fichiers supplémentaires, ce qui se fait depuis un Terminal par les commandes suivantes :

#! /bin/bash
wget https://www-fourier.ujf-grenoble.fr/~parisse/giac/giac.tex
wget https://www-fourier.ujf-grenoble.fr/~parisse/giac/giacfr.tex
wget https://www-fourier.ujf-grenoble.fr/~parisse/giac/giac.js
wget https://www-fourier.ujf-grenoble.fr/~parisse/giac/hevea.sty
wget https://www-fourier.ujf-grenoble.fr/~parisse/giac/mathjax.sty
wget http://hevea.inria.fr/distri/hevea-2.31.tar.gz
tar xvfz hevea-2.31.tar.gz
cd hevea-2.31
make
sudo make install
cd ..
wget https://www-fourier.ujf-grenoble.fr/~parisse/giac/heveatomml.tgz
tar xvfz heveatomml.tgz
cd heveatomml/src
make
sudo make install
cd ../..

3.4  Rédiger un document interactif

Ajoutez dans l’en-tête du document LATEX (avant \begin{document}) :

\input{giacfr.tex}
\giacmathjax

Ajoutez juste après \begin{document} l’une des commandes :
\begin{giacjs}
\begin{giacjshere}
En fin de document, juste avant \end{document}, ajoutez \end{giacjs} ou \end{giacjshere}.

Avant toute \section, insérez les commandes
\tableofcontents
\printindex
pour que les boutons Table et Index du tableau de bord de la page HTML correspondent bien à la table des matières et à l’index.

Le reste du fichier est du LATEX standard, mais il faut prendre quelques précautions :

Vous disposez de plusieurs commandes LATEX pour générer des lignes de commandes interactives ou des programmes.

Vous pouvez vous inspirer des textes sources de documents HTML5 interactifs, par exemple ce source ou le cours sur les courbes et équations différentielles.

3.5  Compilation

Pour créer un fichier HTML5+MathML, tapez la commande
hevea2mml nom_fichier.tex
cela devrait générer nom_fichier.html que vous pouvez tester en tapant la commande firefox nom_fichier.html &.

3.6  Publication

Si le test est concluant, il vous suffit de recopier le fichier HTML sur votre espace web personnel. Si vous avez utilisé \begin{giacjshere}, vous devrez aussi mettre dans le même répertoire le fichier giac.js.

4  Développements futurs

Quelqu’un connaissant Javascript et LATEX peut sans doute exploiter bien mieux les possibilités d’interaction, par exemple permettre la création de questionnaires avec auto-correction ou correction automatique.

On peut surement créer d’autres commandes et environnements, améliorer la calculatrice, etc.

Références

[1]
Yannick Chevallier. Hevea: LaTeX to HTML5 compiler, fork for MathJax support. https://github.com/YannickChevalier/hevea-mathjax, 2017.
[2]
Jacques Distler. LaTeX to MathML converter. golem.ph.utexas.edu/ distler/blog/itex2MML.html, 2016.
[3]
Luc Maranget. Hevea: LaTeX to HTML5 compiler (unstable version). http://hevea.inria.fr/distri/unstable/, 2017.
[4]
Bernard Parisse and Renée De Graeve. Giac/Xcas Computer Algebra System. www-fourier.ujf-grenoble.fr/ parisse/giac.html, 2017.
[5]
Alon Zakai. Emscripten: A C/C++ to Javascript compiler. kripken.github.io/emscripten-site/, 2017.

  

Retour à la page principale de Giac/Xcas.