Maxima est un logiciel libre de calcul formel, descendant du logiciel Macsyma, développé dès 1968 au sein du projet MAC du MIT (le nom Macsyma est tiré de « Project MAC's Symbolic Manipulator »)A Review of Macsyma, Richard FatemanProceedings of the 1977 MACSYMA Users' Conference, NASA, Langley Research Center, 1977Proceedings of the 1984 MACSYMA Users' Conference, General Electric Company, Research and Development Center. Il est disponible sous GNU/Linux, Mac OS X, Windows et Android. Maxima est distribué sous licence GNU GPL depuis 1998. Le logiciel est programmé en Lisp, tout comme les systèmes de calcul formel , Derive, et Axiom.
Historique
Né à la fin des années 1960 au MITAu sein du projet MAC, débuté en 1963, Macsyma a servi de « terrain d'expérimentation » pour de nombreux algorithmes de calcul formel. Ainsi lorsque publia son algorithme d'intégration, sa première mise en œuvre fut réalisée avec MacsymaMacsyma: a personal history, Joel Moses, 2008Symbolic Integration: The Stormy Decade, Joel Moses, Communications of the ACM, 1971. Soit dit en passant, l'algorithme de Risch développé avec Macsyma est incomplet, et n'inclut pas le cas algébrique, ce qui est précisé dans l'article de Joel Moses précédemment cité. C'est toujours le cas aujourd'hui dans Maxima, comme le montre la documentation (voir « ? risch »). On peut s'en convaincre sur l'exemple suivant, qui renvoie bien 0, alors que Maxima se montre incapable de calculer la primitive à l'aide de risch(x/sqrt(x^4+10*x^2-96*x-71),x); : f(x):=x/sqrt(x^4+10*x^2-96*x-71)$
F(x):=-1/8*log((x^6+15*x^4-80*x^3+27*x^2-528*x+781)*sqrt(x^4+10*x^2-96*x-71) -(x^8+20*x^6-128*x^5+54*x^4-1408*x^3+3124*x^2+10001))$
diff(F(x),x)-f(x),ratsimp; , qui a fait partie des développeurs de Macsyma au MIT, et qui participe aujourd'hui au développement de Maxima, indiquait en 2009 que la question n'était sans doute pas assez importante pour que le cas algébrique soit ajouté au logicielAlgebraic Risch, message dans la liste de diffusion de Maxima, 16 octobre 2009.
Au cours de son développement, le projet Macsyma a reçu des financements de l'ARPA, la NASA, l'Office of Naval Research, et le département de l'Énergie (DOE). Il est cédé en 1982 au National Energy Software Center (NESC), du DOEDescription de DOE-Macsyma sur le site de l'ESTSC, anciennement NESC. Peu de temps après, une version est commercialisée par la société Symbolics, spécialisée dans les machines Lisp.
Maxima est lancé par William Schelter en 1982 à partir de la version DOE-Macsyma (la version du MIT, avant commercialisation par Symbolics). Il crée également , un compilateur de Common Lisp, dont un des objectifs est de compiler Maxima. Cela nécessitait également de revoir le code de Macsyma, qui était écrit en MacLisp, une version de Lisp développée au MIT en même temps que Macsyma, soit bien avant la standardisation par l'ANSI.
À peu près à la même époque au début des années 1980, un projet similaire est initié par Fateman et ses étudiants à Berkeley, d'un nouveau compilateur de Lisp, nommé (qui deviendra en 1988), afin de porter Macsyma sur les machines VAX nouvellement acquises par l'universitéHistory of Franz Inc.. Avec cette version de Lisp, la compilation de Macsyma peut être réalisée grâce à un mode de compatibilité avec MacLispThe FRANZ LISP Manual, 1983, p.110.
Schelter commence à travailler sur un compilateur de Lisp en 1987, alors appelé AKCL, une version modifiée de qui remontait à 1984Description of GCL (GNU Common Lisp) systemDesign and Implementation of Kyoto Common Lisp. Ce dernier permettait de compiler Maxima sous Unix sur IBM PC et sur station de travail Sun. À l'origine, AKCL, tout comme KCL, est basé sur le document « » de Guy Steele, publié en 1984. Le standard ANSI Common Lisp ne sera finalisé qu'en 1994. C'est également en 1994 que AKCL est renommé GCL et distribué sous licence GPL.
Au début des années 1990, une licence payante pour Maxima devait être demandée auprès du NESC, propriétaire des droits sur DOE-Macsyma et donc MaximaInformation about MAXIMA for Common Lisp. En , la version distribuée par Schelter est Maxima 4.155Maxima 4.155 . Dès le NESC n'existe plus, et ses compétences sont transférées d'Argonne à l'ESTSC d'Oak RidgeEnergy Science and Technology Software Center (ESTSC), 1995. En 1994 est distribué Maxima 5.0, le premier à être compilé avec GCL. En raison de la disparition du NESC, le statut légal de Maxima n'est plus très clair, et la même année, Richard Petti, directeur de la société Macsyma Inc. distribuant la version commerciale, émet des réserves quant à la distribution de Maxima ainsi que son nom, considérés comme une violation de copyrightMacsyma and Maxima, courrier de Richard Petti du 7 janvier 1994. En octobre 1998, William Schelter reçoit du DOE l'autorisation d'appliquer la licence GNU GPL à MaximaCopie du courrier donnant l'autorisation de redistribuer Maxima, réglant ainsi le problème juridique. Maxima en est alors à la version 5.4.
Schelter maintient Maxima et GCL jusqu'à sa mort, en 2001. Depuis lors, une communauté de développeurs tient régulièrement le programme à jour. Le projet a été transféré de l'université du TexasVersions de Maxima maintenues par William Schelter vers Sourceforge, et le code a commencé à être « nettoyé » de certaines incompatibilités et commentaires obsolètesMaxima Code Status and Plans, James Amundson. La version distribuée en est Maxima 5.28.0.
Il existe principalement trois versions du programme : celui du MIT, parfois appelé « DOE-Macsyma » pour la version cédée au DOE (notamment pour des raisons légales), la version commercialisée par Symbolics puis par Macsyma Inc, « Macsyma »Version commerciale de Macsyma, et enfin la version libre, « Maxima ». En ce sens, Maxima est un descendant du DOE-Macsyma d'origine, pas de la version commercialisée, qui a eu des développements différentsDocumentation de la version commerciale, Macsyma 2.1 à 2.4. Macsyma n'est d'ailleurs plus modifié depuis 1999 (version 2.4), même s'il est encore commercialisé. Dans le passé d'autres dérivés de DOE-Macsyma ont été développés, mais ont été abandonnés : VAXIMA pour les DEC VAXMACSYMA, MAXIMA, VAXIMA, ..., PUNIMAX basée sur le compilateur Code source de PUNIMAX, etc.
En , William A. Stein entreprend le développement de SageMath. L'interface avec Maxima est ajoutée dans la version 0.9.25, en « Changelog » de Sage.
Fonctionnalités Maxima permet de faire du calcul sur les polynômes, les matrices, de l’intégration, de la dérivation, du calcul de séries, de limites, résolutions de systèmes, d’équations différentielles, les séries de Poisson (utilisées en mécanique céleste), etc. Maxima est distribué avec un assez grand nombre de bibliothèques externes, par exemple le module SYM de manipulations de fonctions symétriques et de calculs de résolvantes écrit par Annick ValibouzeLe module SYM de MAXIMASymbolic computation with symmetric polynomials - an extension to Macsyma, Annick Valibouze, LITP, 1989.
Maxima est un logiciel écrit en Lisp et son langage de commande est inspiré de ce langage. Notamment pour cette raison, les possibilités d'extension de Maxima sont très riches. Il est possible d'utiliser des commandes Lisp sous Maxima, interprétées ou compilées. L'interfaçage avec Maxima est donc très aisé.
Les possibilités graphiques de Maxima sont plus limitées que celles de Mathematica et de Maple. Elles viennent en plusieurs « jeux » : le paquet plot par défaut, le paquet draw disponible avec load(draw)$ et les fonctions mises à disposition par wxMaxima (wxplot2d, wxplot3d), qui permettent également de réaliser des animations (with_slider_draw, with_slider_draw3d)wxMaxima - Getting Help. Toutes font appel à gnuplot, de façon transparente.
Pour des besoins de publication, il est possible de convertir les formules au format TeX. Il existe aussi un mode d'Emacs pour un affichage des formules Maxima. wxMaxima permet également d'enregistrer des documents complets (formules, texte, titres et sous-titres, etc.) dans son propre format .wxm (en réalité un simple script Maxima avec des annotations en commentaire, comprises par wxMaxima).
Calculs numériques Comme tous les programmes de calcul formel, Maxima est spécialisé dans les manipulations de symboles. Cependant, il sait également produire des résultats numériques sous forme d'entiers et de fractions de taille arbitraire, ou bien encore de réels à virgule flottante de précision arbitrairement grande (bfloat pour big floats), en plus des flottants « machine », suivant habituellement le standard IEEE 754 sur les ordinateurs actuels.
Pour les calculs utilisant intensivement les nombres à virgule flottante et les grands tableaux, Maxima peut générer du code en Fortran, code qui peut être compilé séparément. Il intègre aussi du code de plusieurs bibliothèques en Fortran, dont Lapack et Quadpack, convertis en Lisp.
Bibliographie Macsyma Reference Manual, 1977
Notes et références
Voir aussi
Articles connexes Mathematica, Maple, MuPAD : des concurrents propriétaires Yacas, Xcas, GAP, PARI/GP : des logiciels libres de calcul formel SageMath, un logiciel de calcul formel qui intègre Maxima
Liens externes
wxMaxima, une interface graphique multiplate-forme Maxima on Android, une version de Maxima pour les appareils Android Site sur Maxima en français (exemples et documentation sur Maxima) Une interface web de Maxima Richard Pavelle, Paul S. Wang, MACSYMA from F to G, Journal of Symbolic Computation, Volume 1, Issue 1, March 1985, Pages 69–100
Catégorie:Logiciel libre sous licence GPL Catégorie:Logiciel de calcul formel Catégorie:Logiciel pour Unix Catégorie:Logiciel pour Windows