Maxima se basa en una versión de 1982 de Macsyma , que se desarrolló en el MIT con financiación del Departamento de Energía de los Estados Unidos y otras agencias gubernamentales. Bill Schelter mantuvo una versión de Macsyma desde 1982 hasta su muerte en 2001. En 1998, Schelter obtuvo permiso del Departamento de Energía para publicar su versión bajo la GPL. Esa versión, ahora llamada Maxima, es mantenida por un grupo independiente de usuarios y desarrolladores. Maxima no incluye ninguna de las muchas modificaciones y mejoras realizadas a la versión comercial de Macsyma durante 1982-1999. Aunque la funcionalidad principal sigue siendo similar, el código que depende de estas mejoras puede no funcionar en Maxima, y los errores que se corrigieron en Macsyma aún pueden estar presentes en Maxima, y viceversa. Maxima participó en Google Summer of Code en 2019 bajo el International Neuroinformatics Coordinating Facility . [2]
Cálculos simbólicos
Al igual que la mayoría de los sistemas de álgebra computacional, Maxima admite una variedad de formas de reorganizar expresiones algebraicas simbólicas, como factorización de polinomios , cálculo del máximo común divisor de polinomios , expansión, separación en partes reales e imaginarias y transformación de funciones trigonométricas en exponenciales y viceversa. Tiene una variedad de técnicas para simplificar expresiones algebraicas que involucran funciones trigonométricas, raíces y funciones exponenciales. Puede calcular antiderivadas simbólicas ("integrales indefinidas"), integrales definidas y límites . Puede derivar expansiones de series de forma cerrada , así como términos de series de Taylor-Maclaurin - Laurent . Puede realizar manipulaciones matriciales con entradas simbólicas.
Maxima incluye un lenguaje de programación completo con sintaxis similar a ALGOL pero semántica similar a Lisp . Está escrito en Common Lisp y se puede acceder a él mediante programación y extenderlo, ya que se puede llamar al Lisp subyacente desde Maxima. Utiliza gnuplot para dibujar.
Para cálculos que utilizan predominantemente puntos flotantes y matrices, Maxima tiene traductores del lenguaje Maxima a otros lenguajes de programación (especialmente Fortran ), que pueden ejecutarse de manera más eficiente.
wxMaxima [4] es una interfaz gráfica de alta calidad que utiliza el marco wxWidgets . wxMaxima proporciona una estructura de celda similar al cuaderno de Mathematica, como se muestra en la figura de la derecha.
GMaxima es una interfaz Maxima que utiliza GTK+ . [6]
Cantor , utilizando Qt , puede interactuar con Maxima (junto con SageMath , R y KAlgebra ) [7]
Los programas de edición matemática GNU TeXmacs y LyX se pueden utilizar para proporcionar una interfaz gráfica de usuario interactiva para Maxima, al igual que SageMath. Otras opciones incluyen la interfaz de usuario de Imaxima, así como un modo de interacción con Emacs y XEmacs que se activa mediante Imaxima.
Kayali [8]
Climaxima, [9] un front-end basado en CLIM . [10]
Ejemplos de código Maxima
Operaciones básicas
Aritmética de precisión arbitraria
bfloat ( sqrt ( 2 )), fpprec = 40 ;
Función
f ( x ) := x ^ 3 $y ( 4 );
Expandir
expandir (( a - b ) ^ 3 );
Factor
factor ( x ^ 2 - 1 );
Resolver ecuaciones
resolver ( x ^ 2 + a * x + 1 , x );
Resolver ecuaciones numéricamente
buscar_raiz ( cos ( x ) = x , x , 0 , 1 );
bf_find_root ( cos ( x ) = x , x , 0,1 ) , fpprec = 50 ;
Integral indefinida
integrar ( x ^ 2 + cos ( x ), x );
Integral definida
integrar ( 1 / ( x ^ 3 + 1 ), x , 0 , 1 ), ratsimp ;
Integral numérica
quad_qags ( sin ( sin ( x )), x , 0 , 2 )[ 1 ];
Derivado
diff ( cos ( x ) ^ 2 , x , 3 );
Límite
límite (( 1 + sinh ( x )) / exp ( x ), x , inf );
Teoría de números
primos ( 10 , 20 );
fibra ( 10 );
Serie
suma ( 1 / x ^ 2 , x , 1 , inf ), suma simple ;
Expansión de la serie
taylor ( sin ( x ), x , 0 , 9 );
niceindices ( series de potencias ( cos ( x ), x , 0 ));