Logiciels libres et enseignement

Favoriser l’usage de logiciels libres et de formats ouverts

- Auteur : William F. Schelter

Installation

On pourra télécharger Maxima sur le site officiel où sont disponibles des paquets en de nombreux formats. L’installation pour Debian se fait simplement avec apt-get install maxima.

Pour compiler à partir du code source, Il faut d’abord installer le compilateur Lisp GCL, disponible sur la page de téléchargements. Nous avons testé ici les versions beta les plus récentes, maxima-5.6, avec GNU Common Lisp gcl-2.3.8-beta2.

Présentation

Maxima est un logiciel de calcul formel généraliste : il permet de manipuler de manière exacte des expressions symboliques : par exemple développer, factoriser une expression, dériver, trouver une primitive, calculer une limite, résoudre une équation de manière exacte si c’est possible ou de manière approchée sinon. Il sait tracer des graphes de fonctions d’une variable, mais aussi de fonctions de 2 variables. Il connait aussi les vecteurs et les matrices et peut être utilisé dans le supérieur aussi bien que dans le secondaire. Ce logiciel est développé depuis les années 1970, il est devenu récemment un logiciel libre. Notons qu’une interface utilisateur pour Maxima existe dans le logiciel de traitement de textes TeXmacs, permettant simplement d’insérer dans un document en cours d’élaboration le résultat d’un calcul.

Lancement :

Tapez xmaxima dans une fenêtre de commandes. La fenêtre xmaxima se décompose en 4 parties de haut en bas :

  • une barre de menu (file, edit, help)
  • la feuille de calcul qui contient les commandes et les résultats de maxima
  • une barre de boutons de navigation de l’aide de maxima
  • l’aide de maxima
Fenêtre de calcul et fenêtre d’aide

Voici quelques exemples de commandes de maxima :

  • développer une expression : ratsimp((1+x)^10) ;
  • factoriser une expression sur les entiers : factor(x^100-1) ;
  • dériver une fonction : diff(sin(x^2),x) ;
  • trouver une primitive : integrate(1/(x^4+1),x) ;
  • calculer la limite d’une fonction en un point : limit(sin(x)/x,x,0) ;
  • résoudre une équation polynomiale : solve(x^5+x+1=0) ;
  • résoudre un système d’équations linéaires : solve([x+y+z=5,3*x-5*y=10,y+2*z=3],[x,y,z]) ;
  • tracer le graphe d’une fonction : plot2d(sin(x),[x,0,2*%Pi]) ;
  • tracer le graphe d’une fonction de 2 variables : plot3d(x^2-y^2,[x,-2,2],[y,-2,2]) ;
  • calculer le PGCD de 2 nombres (ou de 2 polynomes) : gcd(15,25) ;
Un calcul de primitive
Graphe d’une fonction de 2 variables

Un exemple de programme : le calcul du PGCD de deux entiers

Maxima possède la commande gcd pour faire ce calcul, il s’agit juste d’illustrer sur un exemple simple comment programmer maxima. L’affectation se fait par le signe :, sauf pour définir une fonction ( :=).

Version itérative :

pgcd(a,b) :=(local(r),while b#0 do (r:mod(a,b), a:b,b:r),abs(a)) ;

Version récursive :

pgcdr(a,b) :=if b=0 then a else pgcdr(b,abs(mod(a,b))) ;

— 

Forces et faiblesses

Les points forts :

  • L’interface graphique (gérée par Tcl/Tk) est agréable et efficace
  • lorsqu’on tape une parenthèse fermante, on voit apparaitre en couleur la parenthèse ouvrante correspondante
  • l’aide en ligne se trouve dans la même fenêtre, elle peut être masquée si on veut plus de place pour la feuille de calculs
  • les graphes de fonctions sont intégrés à la feuille de calcul
  • les commandes et les réponses de maxima sont numérotées automatiquement, il est donc très facile de réutiliser un résultat précédent (inutile de le stocker explicitement dans une variable)
  • le navigateur de l’aide permet de lancer netmath qui devrait pouvoir lancer d’autres logiciels plus spécialisés dans d’autres domaines, par exemple PARI/GP pour les théoriciens des nombres.

La principale faiblesse de maxima est qu’il ne sait pas bien gérer les extensions algébriques, mais ceci ne devrait pas être gênant avant la maitrise de mathématiques. D’un point de vue interface, l’affichage des expressions est un peu moins soignée que certains logiciels commerciaux mais est parfaitement lisible.

Recherche avancée