Maxima (logiciel)

{{#ifeq:||Un article de Ziki, l'encyclopédie libre.|Une page de Ziki, l'encyclopédie libre.}}
Révision datée du 19 mai 2022 à 13:02 par >7zz (→‎Historique)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

Modèle:Voir homonymes Modèle:Infobox V3/Début Modèle:Infobox V3/Image Wikidata Modèle:Infobox V3/Séparateur Modèle:Infobox V3/Image Wikidata

Modèle:Infobox V3/Tableau début

Modèle:Infobox V3/Tableau Ligne mixte Wikidata

{{#ifeq:Modèle:Wikidata|Modèle:Wikidata | | Modèle:Infobox V3/Tableau Ligne mixte Wikidata }}

Modèle:Infobox V3/Tableau Ligne mixte

Modèle:Infobox V3/Tableau Ligne mixte

Modèle:Infobox V3/Tableau Ligne mixte

Modèle:Infobox V3/Tableau Ligne mixte

Modèle:Infobox V3/Tableau Ligne mixte Wikidata

Modèle:Infobox V3/Tableau Ligne mixte Wikidata

Modèle:Infobox V3/Tableau Ligne mixte

Modèle:Infobox V3/Tableau Ligne mixte {{#invoke:Infobox/Fonctions/Logiciel|catByProgrammingLanguage}}

Modèle:Infobox V3/Tableau Ligne mixte

Modèle:Infobox V3/Tableau Ligne mixte

Modèle:Infobox V3/Tableau Ligne mixte Wikidata

Modèle:Infobox V3/Tableau Ligne mixte Wikidata

Modèle:Infobox V3/Tableau Ligne mixte Wikidata

Modèle:Infobox V3/Tableau Ligne mixte Wikidata

Modèle:Infobox V3/Tableau Ligne mixte Wikidata

Modèle:Infobox V3/Tableau Ligne mixte Wikidata

Modèle:Infobox V3/Tableau Ligne mixte

Modèle:Infobox V3/Tableau Ligne mixte

Modèle:Infobox V3/Tableau Ligne mixte Wikidata

Modèle:Infobox V3/Tableau Ligne mixte Wikidata

Modèle:Infobox V3/Tableau Ligne mixte Wikidata

Modèle:Infobox V3/Tableau fin

Modèle:Infobox V3/Titre Bloc Modèle:Infobox V3/Navigateur

Modèle:Infobox V3/Fin avec WikidataModèle:Rien{{#ifeq:|| {{#if:


| }}{{#if: wxMaxima

   | {{#if: WxMaxima 0.7.1 screenshot.png
       |
       |
     }}

}} }}

Fichier:Gnuplot sous Linux.png
Maxima pilote Gnuplot

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 »)<ref name="fateman">A Review of Macsyma, Richard Fateman</ref>,<ref name="nasa">Proceedings of the 1977 MACSYMA Users' Conference, NASA, Langley Research Center, 1977</ref>,<ref name="ge">Proceedings of the 1984 MACSYMA Users' Conference, General Electric Company, Research and Development Center</ref>. 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 Modèle:Lien, Derive, et Axiom.

Historique

Né à la fin des années 1960 au MIT<ref>Au sein du projet MAC, débuté en 1963</ref>, Macsyma a servi de « terrain d'expérimentation » pour de nombreux algorithmes de calcul formel. Ainsi lorsque Modèle:Lien publia son algorithme d'intégration, sa première mise en œuvre fut réalisée avec Macsyma<ref>Macsyma: a personal history, Joel Moses, 2008</ref>,<ref>Symbolic Integration: The Stormy Decade, Joel Moses, Communications of the ACM, 1971</ref>. 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); : <syntaxhighlight lang="text">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;</syntaxhighlight> Modèle:Lien, 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 logiciel<ref>Algebraic Risch, message dans la liste de diffusion de Maxima, 16 octobre 2009</ref>.

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 DOE<ref name="estsc">Description de DOE-Macsyma sur le site de l'ESTSC, anciennement NESC</ref>. 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 Modèle:Lien, 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é Modèle:Lien (qui deviendra Modèle:Lien en 1988), afin de porter Macsyma sur les machines VAX nouvellement acquises par l'université<ref>History of Franz Inc.</ref>. Avec cette version de Lisp, la compilation de Macsyma peut être réalisée grâce à un mode de compatibilité avec MacLisp<ref>The FRANZ LISP Manual, 1983, p.110</ref>.

Schelter commence à travailler sur un compilateur de Lisp en 1987, alors appelé AKCL, une version modifiée de Modèle:Lien qui remontait à 1984<ref name="gcl-old">Description of GCL (GNU Common Lisp) system</ref>,<ref>Design and Implementation of Kyoto Common Lisp</ref>. Ce dernier permettait de compiler Maxima sous Unix sur IBM PC et sur station de travail Sun<ref name="estsc"/>. À l'origine, AKCL, tout comme KCL, est basé sur le document « Modèle:Lien » 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 Maxima<ref>Information about MAXIMA for Common Lisp</ref>. En Modèle:Date-, la version distribuée par Schelter est Maxima 4.155<ref>Maxima 4.155 Modèle:Lien archive</ref>. Dès Modèle:Date- le NESC n'existe plus, et ses compétences sont transférées d'Argonne à l'ESTSC d'Oak Ridge<ref>Energy Science and Technology Software Center (ESTSC), 1995</ref>. 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 copyright<ref name="petti">Macsyma and Maxima, courrier de Richard Petti du 7 janvier 1994</ref>. En octobre 1998, William Schelter reçoit du DOE l'autorisation d'appliquer la licence GNU GPL à Maxima<ref>Copie du courrier donnant l'autorisation de redistribuer Maxima</ref>, 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<ref name="fateman"/>. Depuis lors, une communauté de développeurs tient régulièrement le programme à jour. Le projet a été transféré de l'université du Texas<ref>Versions de Maxima maintenues par William Schelter</ref> vers Sourceforge, et le code a commencé à être « nettoyé » de certaines incompatibilités et commentaires obsolètes<ref>Maxima Code Status and Plans, James Amundson</ref>. La version distribuée en Modèle:Date- 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<ref name="petti"/>), la version commercialisée par Symbolics puis par Macsyma Inc, « Macsyma »<ref>Version commerciale de Macsyma</ref>, 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érents<ref>Documentation de la version commerciale, Macsyma 2.1 à 2.4</ref>. 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 VAX<ref>MACSYMA, MAXIMA, VAXIMA, ...</ref>, PUNIMAX basée sur le compilateur Modèle:Lien<ref>Code source de PUNIMAX</ref>, etc.

En Modèle:Date-, Modèle:Lien entreprend le développement de SageMath. L'interface avec Maxima est ajoutée dans la version 0.9.25, en Modèle:Date-<ref>« Changelog » de Sage</ref>.

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 Valibouze<ref name="av">Le module SYM de MAXIMA</ref>,<ref>Symbolic computation with symmetric polynomials - an extension to Macsyma, Annick Valibouze, LITP, 1989</ref>.

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)<ref name="wxmaxima">wxMaxima - Getting Help</ref>. 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

Notes et références

Modèle:Références

Voir aussi

Modèle:Autres projets

Articles connexes

Liens externes

Modèle:Palette Modèle:Portail