Maxima ( / ˈ m æ k s ɪ m ə / ) est un puissant logiciel permettant d'effectuer des calculs d'algèbre informatique en mathématiques et en sciences physiques. Il est écrit en Common Lisp et fonctionne sur toutes les plateformes POSIX telles que macOS , Unix , BSD et Linux , ainsi que sous Microsoft Windows et Android . Il s'agit d' un logiciel libre publié sous les termes de la licence publique générale GNU (GPL).
Histoire
Maxima est basé sur une version de Macsyma de 1982 , qui a été développée au MIT avec un financement du ministère de l'Énergie des États-Unis et d'autres agences gouvernementales. Une version de Macsyma a été maintenue par Bill Schelter de 1982 jusqu'à sa mort en 2001. En 1998, Schelter a obtenu l'autorisation du ministère de l'Énergie de publier sa version sous licence GPL. Cette version, désormais appelée Maxima, est maintenue par un groupe indépendant d'utilisateurs et de développeurs. Maxima n'inclut aucune des nombreuses modifications et améliorations apportées à la version commerciale de Macsyma entre 1982 et 1999. Bien que les fonctionnalités de base restent similaires, le code dépendant de ces améliorations peut ne pas fonctionner sur Maxima, et les bogues qui ont été corrigés dans Macsyma peuvent toujours être présents dans Maxima, et vice versa. Maxima a participé au Google Summer of Code en 2019 dans le cadre de l'International Neuroinformatics Coordinating Facility .
Calculs symboliques
Comme la plupart des systèmes de calcul formel, Maxima prend en charge une variété de méthodes de réorganisation des expressions algébriques symboliques, telles que la factorisation polynomiale , le calcul du plus grand diviseur commun polynomial , le développement, la séparation en parties réelles et imaginaires et la transformation de fonctions trigonométriques en fonctions exponentielles et vice versa. Il dispose de diverses techniques de simplification des expressions algébriques impliquant des fonctions trigonométriques, des racines et des fonctions exponentielles. Il peut calculer des primitives symboliques (« intégrales indéfinies »), des intégrales définies et des limites . Il peut dériver des développements en séries fermées ainsi que des termes de séries de Taylor-Maclaurin - Laurent . Il peut effectuer des manipulations de matrices avec des entrées symboliques.
Maxima est un système à usage général, et les calculs de cas particuliers tels que la factorisation de grands nombres , la manipulation de polynômes extrêmement grands , etc. sont parfois mieux effectués dans des systèmes spécialisés.
Calculs numériques
Maxima est spécialisé dans les opérations symboliques , mais il offre également des capacités numériques telles que les nombres entiers de précision arbitraire , les nombres rationnels et les nombres à virgule flottante , limités uniquement par des contraintes d'espace et de temps.
Programmation
Maxima comprend un langage de programmation complet avec une syntaxe de type ALGOL mais une sémantique de type Lisp . Il est écrit en Common Lisp et peut être consulté et étendu par programmation, car le Lisp sous-jacent peut être appelé depuis Maxima. Il utilise gnuplot pour le dessin.
Pour les calculs utilisant beaucoup de nombres à virgule flottante et de tableaux, Maxima dispose de traducteurs du langage Maxima vers d'autres langages de programmation (notamment Fortran ), qui peuvent s'exécuter plus efficacement.
Interfaces

Différentes interfaces utilisateur graphiques (GUI) sont disponibles pour Maxima :
- wxMaxima est une interface graphique de haute qualité utilisant le framework wxWidgets . wxMaxima fournit une structure de cellule similaire au bloc-notes Mathematica comme indiqué dans la figure de droite.
- Il existe un noyau pour Project Jupyter , une interface graphique flexible de type notebook écrite en Python .
- GMaxima est une interface Maxima utilisant GTK+ .
- Cantor , en utilisant Qt , peut s'interfacer avec Maxima (avec SageMath , R et KAlgebra )
- Les programmes d'édition mathématique GNU TeXmacs et LyX peuvent être utilisés pour fournir une interface graphique interactive pour Maxima, tout comme SageMath. D'autres options incluent l'interface Imaxima, ainsi qu'un mode d'interaction Emacs et XEmacs qui est activé par Imaxima.
- Kayali
- Climaxima, un frontal basé sur CLIM .
Exemples de code Maxima
Opérations de base
Arithmétique de précision arbitraire
bfloat ( sqrt ( 2 )), fpprec = 40 ;
Fonction
f ( x ) := x ^ 3 $ f ( 4 );
Développer
développer (( a - b ) ^ 3 );
Facteur
facteur ( x ^ 2 - 1 );
Résoudre des équations
résoudre ( x ^ 2 + a * x + 1 , x );
Résoudre des équations numériquement
trouver_racine ( cos ( x ) = x , x , 0 , 1 );
bf_find_root ( cos ( x ) = x , x , 0 , 1 ), fpprec = 50 ;
Intégrale indéfinie
intégrer ( x ^ 2 + cos ( x ), x );
Intégrale définie
intégrer ( 1 / ( x ^ 3 + 1 ), x , 0 , 1 ), ratsimp ;
Intégrale numérique
quad_qags ( sin ( sin ( x )), x , 0 , 2 )[ 1 ];
Dérivé
diff ( cos ( x ) ^ 2 , x , 3 );
Limite
limite (( 1 + sinh ( x )) / exp ( x ), x , inf );
Théorie des nombres
nombres premiers ( 10 , 20 );
fibre ( 10 );
Série
somme ( 1 / x ^ 2 , x , 1 , inf ), simpsum ;
Extension de la série
taylor ( sin ( x ), x , 0 , 9 );
niceindices ( powerseries ( cos ( x ), x , 0 ));
Fonctions spéciales
bessel_j ( 0 , 4.5 );
airy_ai ( 1.5 );