Mathématice, intégration des Tice dans l'enseignement des mathématiques  
Sommaire > N°22 - Novembre 2010 > Le "pretty print" des logiciels de calcul (...)

Le "pretty print" des logiciels de calcul formel
Moteur de recherche
Mis en ligne le 9 octobre 2010, par Alain Busser

Cet article est une sorte de préalable à l’usage pédagogique des systèmes de calcul formel, en levant l’hypothèque d’écritures algébriques difficilement lisibles ....

Articles du même auteur

Une tâche qu’on espère voir effectuée correctement par un logiciel de calcul formel digne de ce nom, c’est le calcul d’une primitive de $x^4+x^3+x^2+x+1$. Mais une fois calculé, on doit s’attendre à un affichage comme

x^5/5+x^4/4+x^3/3+x^2/2+x

(dans le cas présent, fait par WxMaxima). En raison des difficultés éprouvées par les élèves (et leur prof, il faut bien l’avouer) pour la lecture d’expressions écrites "en ligne", et par souci de cohérence avec l’exigence dont on fait preuve lorsqu’on corrige leurs copies manuscrites, on souhaite que cet affichage soit fait dans les "règles de l’art", avec notamment les contraintes suivantes :

  • Les traits de fraction doivent être horizontaux ;
  • On voudrait éviter l’étoile "*" pour noter la multiplication, mais aussi la lettre "x" ;
  • Les puissances devraient s’écrire avec la notation "exposant" et pas avec un chapeau ;
  • Le trait horizontal de la racine carrée doit recouvrir toute l’expression dont on veut la racine, car ce trait représente une paire de parenthèses ($\sqrt{1+2\sqrt{2}}$ au lieu de $\sqrt{}1+2\sqrt{2}$) ;
  • etc (vecteurs avec des flèches à la place du point du "i" et pas par-dessus celui-ci : $\vec{\imath}$ au lieu de $\vec{i}$)

Pour cela, il faut non seulement afficher le résultat du calcul formel, mais l’afficher proprement, ce qui en anglais s’appelle "pretty print". On va donc ci-dessous chercher un moyen d’utiliser les fonctionnalités de "pretty print" présentes dans certains logiciels de calcul formel, mais aussi de les améliorer. Le logiciel qui permet ces miracles est TeXMacs. En effet ce logiciel (initialement un traitement de texte) peut être utilisé comme un shell (informatique) pour ces logiciels de calcul formel en communicant avec eux par le langage LaTeX.

Un exemple de "pretty print" à l’ancienne (Yacas, Maxima) pour l’exemple ci-dessus est celui-ci :

  5    4   3    2
 x    x   x    x
---+---+---+---+x+1
 5    4   3    2

L’effet est bien plus comique qu’avec l’export LaTeX, qui, avec l’exemple précédent sous WxMaxima, donne

$$\frac{{x}^{5}}{5}+\frac{{x}^{4}}{4}+\frac{{x}^{3}}{3}+\frac{{x}^{2}}{2}+x$$

La plupart des logiciels de calcul formel possèdent une fonctionnalité d’export en LaTeX. Et TeXMacs, lui, peut importer du LaTeX. Alors une fois TeXMacs démarré, il suffit de cliquer sur l’icône représentant un ordinateur pour avoir la liste des logiciels qu’on peut lancer depuis TeXMacs (au sein de celui-ci) :

La liste exacte dépend de la machine, en particulier des logiciels que TeXMacs a pu trouver lors de son installation (il n’y a d’ailleurs pas que des logiciels de calcul formel : Ci-dessus on voit les langages de programmation Scheme et Python (langage), les logiciels graphiques Asymptote, DrGeo - ce dernier un logiciel de géométrie dynamique -, GnuPlot et GraphViz -logiciel servant à tracer des graphes)...

Pour illustrer l’intérêt du bel affichage des sorties des "CAS" (acronyme anglais pour "logiciel de calcul formel") on va leur demander (sauf exception) de calculer les valeurs exactes des cosinus et sinus de 9° (ou $\frac{\pi}{20}$) qu’on peut obtenir par des constructions itérées de bissectrices, ce qui signifie que ces nombres sont algébriques.

Xcas

Le logiciel Xcas est en fait une interface pour giac, un logiciel de calcul formel [1] et possède son propre PrettyPrint. Voici la sortie qu’Xcas donne au problème :

et voici la même séance, réalisée sous TeXMacs (sous le nom de giac comme on l’a vu ci-dessus) :

On constate la présence, dans les deux cas, de parenthèses inutiles, mais l’affichage donné par TeXMacs est meilleur. Cependant, Xcas exporte au format LaTeX et à l’impression, les deux méthodes donnent la même qualité, à savoir celle de LaTeX.

Yacas

Yacas s’utilise en mode console, entièrement au clavier, mais sa version Java appelée MathRider est multicolore, comme le montre la copie d’écran ci-dessous. On voit que sur cet exemple, Yacas (ou MathRider) effectue juste des réécritures, et que l’équivalent du PrettyPrint (appelé "PrettyForm" dans le langage d’Yacas) est plutôt comique :

Ceci dit, là encore, Yacas peut exporter en LaTeX (avec TeXForm ci-dessus) non seulement vers d’autres logiciels, mais aussi vers d’autres composantes de MathRider comme HotEqn (onglet du bas de la figure ci-dessus) ou GeoGebra (à droite ci-dessus, en rouge).

Tout cela n’est plus nécessaire avec TeXMacs :

L’absence de parenthèses superflues fait que les formules ci-dessus sont plus jolies avec Yacas qu’avec Xcas, mais en ce qui concerne le calcul formel, Xcas est énormement plus puissant que Yacas...

Maxima

Le PrettyPrint de WxMaxima est sans doute le plus abouti de ce comparatif ; on peut en effet y paramétrer les polices de caractères et la couleur de chaque composant selon son goût...

Voilà ce que ça donne avec un réglage un peu extrême :


Et la version TeXMacs est presque moins bonne :


Comme dans les deux onglets précédents, Maxima peut exporter en LaTeX ce qui a d’ailleurs servi à l’écriture du début de cet article.

Axiom

Axiom, quelque peu réservé au monde d’UNIX, est sans conteste le plus puissant des logiciels de calcul formel de ce comparatif. D’ailleurs ce n’est pas vraiment un logiciel de calcul formel : Dans son fonctionnement, il ressemble un peu à un langage fonctionnel comme Objective CamL, et donne systématiquement le "type" des calculs qu’on lui demande. Logiciel en console, il simplifie automatiquement les expressions qu’on lui demande de calculer, mais son PrettyPrint est assez comique lui aussi (voir pour comparer, celui de l’onglet "Yacas") :

C’est là que TeXMacs prend tout son intérêt :

On approche tout de même de la perfection... Ceci dit, la convivialité d’Axiom n’est pas comparable à celles d’Xcas et WxMaxima avec leurs menus à explorer, et sa puissance est source de complexité : Ce n’est vraisemblablement pas le meilleur outil pour débuter en calcul formel. Pour de la préparation de documents, les enjeux ne sont pas les mêmes...

Pari

En fait Pari n’est généralement pas décrit comme un logiciel de calcul formel mais plutôt comme une calculatrice de très haute précision. Son succès s’explique en grande partie par l’existence d’un langage de programmation qui exploite cette grande précision, et qui est "algorithmiquement correct". Pari est également doté d’une calculatrice (avec du calcul formel aussi, tout de même) en console, appelée gp, légère et rapide. À l’usage, ce logiciel est réellement impressionnant de par sa légèreté et sa puissance simultanées.

Ceci dit les fonctionnalités de calcul formel de Pari/gp ne lui permettent pas de simplifier des racines carrées de racines carrées, alors ici on va le tester sur du calcul matriciel, en

  • entrant une matrice A ;
  • demandant son polynôme caractéristique
  • calculant de façon approchée ses valeurs propres
  • l’inversant,
  • puis calculant sa puissance vingtième.

La séance sous gp ressemble à ceci :

On reconnaît les matrices mais bon ...

La séance sous TeXMacs montre mieux les matrices :

SciLab

Même avec SciLab qui n’est pourtant pas un logiciel de calcul formel, le Pretty Print peut être utile, par exemple avec l’affichage de matrices (c’est dans ce domaine que SciLab est spécialisé). Comme dans l’onglet précédent, on va entrer une matrice, puis calculer son inverse et sa puissance vingtième.

D’abord sous la console SciLab :

Puis la version TeXMacs :

C’est surtout pour l’affichage de $A^{20}$ que la version TeXMacs est la plus lisible !

Conclusion :

En réalité l’acronyme CAS ne signifie pas Computer Algebra Software mais Computer Algebra System, un CAS n’étant pas réellement un logiciel mais plutôt un "système", en l’occurence une bibliothèque d’algorithmes spécialisés dans le calcul formel. Le logiciel qu’on utilise est en fait un serveur, qui attend des questions et fournit les réponses. Or

  • Il n’y a aucune raison qu’une bibliothèque ne contienne que les meilleurs livres, si on veut être exhaustif, on peut avoir intérêt à consulter plusieurs bibliothèques (par exemple, Pari-gp est excellent en courbes elliptiques, Axiom et Xcas sont excellents en intégrales indéfinies grâce à l’algorithme de Risch, ...)
  • Il n’y a aucune raison non plus qu’un bon programmeur en CAS soit aussi particulièrement doué en interface, et le meilleur serveur ne correspond pas forcément au CAS le plus puissant.
  • Enfin le Pretty Print le meilleur semble être celui qui passe par l’extérieur, via LaTeX.

Pour ces raisons, l’utilisation de TeXMacs comme interface pour tous ces CAS est particulièrement intéressante, notamment en terme de qualité de l’affichage, et de facilité à récupérer par écrit le résultat (export en pdf par exemple). Ceci dit on perd l’aisance à naviguer dans l’aide en ligne, ce qui jusqu’à ce qu’on soit expert en CAS, diminue quelque peu les performances...


notes

[1en fait il y a aussi Pari dans Xcas, ce qui fait de lui un logiciel bimoteur, puisqu’il a deux moteurs de calcul formel... Ceci dit, Euler Math Toolbox, bien que ce ne soit pas un logiciel de calcul formel, est lui aussi bimoteur puisqu’il incorpore à la fois Yacas et Maxima.

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