sábado, 24 de diciembre de 2016

Maxima: Un sistema de álgebra computacional

En esta ocasión quería hablaros de Maxima, un software matemático que he estado utilizando estos últimos meses y del que estoy muy sorprendido por sus amplias capacidades en el ámbito del algebra.

Máxima es un sistema de álgebra computacional derivado de Macsyma, creado por el MIT y desarrollado en el lenguaje de programación Lisp, también es 100% gratuito por estar bajo licencia GLP. Está especializado en operaciones simbólicas, permitiendo realizar cálculos conceptualmente ilimitados (solo nos limitará el hardware de la máquina) pero además de lo anterior posibilita la realización de cálculos intensivos en reales de coma flotante con una alta precisión.

Maxima nos permite la manipulación de expresiones simbólicas y numéricas, teniendo soporte para operar en los siguientes campos de las matemáticas:
  • Soporte para campos más específicos de las matemáticas
    • Polinomios: Operaciones con polinomios.
    • Funciones Especiales: Funciones especiales.
    • Funciones elípticas: Funciones e integrales elípticas.
    • Límites: Cálculo de límites.
    • Diferenciación: Cálculo diferencial.
    • Integración: Cálculo integral.
    • Ecuaciones: Definición y resolución de ecuaciones.
    • Ecuaciones Diferenciales: Definición y resolución de ecuaciones diferenciales.
    • Métodos numéricos: Integración numérica, transformadas de Fourier, etc.
    • Matrices y Álgebra Lineal: Operaciones matriciales.
    • Afines     
    • itensor: Manipulación indexada de tensores
    • ctensor: Manipulación por componentes de tensores
    • atensor: Manipulación algebraica de tensores
    • Sumas productos y series: Sumas, productos, Taylor y series de potencias.
    • Teoría de Números: Teoría de números.
    • Simetrías     
    • Grupos: Álgebra abstracta.
  • Funcionalidades avanzadas y programación
    • Entorno de Ejecución: Personalización de Maxima. 
    • Miscelánea de opciones: Opciones que afectan globalmente el comportamiento de Maxima. 
    • Reglas y patrones: Patrones de definidos por el usuario y reglas de simplificación.
    • Conjuntos: Operaciones con conjuntos. 
    • Definición de Funciones: Programando funciones. 
    • Programación: Programación en Maxima. 
    • Depurado: Depuración de fallos en programas Maxima. 
  • Paquetes adicionales
    • augmented_lagrangian: Paquete augmented_lagrangian.
    • Bernstein: Polinomios de Bernstein.
    • bode: Gráficos de Bode. 
    • cobyla: Optimización no lineal con restricciones en desigualdades. 
    • contrib_ode: Procedimientos adicionales para EDOs. 
    • descriptive: Estadística descriptiva. 
    • diag: Matrices de Jordan. 
    • distrib: Distribuciones de probabilidad. 
    • draw: Un interfaz Maxima-Gnuplot. 
    • drawdf: Dibuja campos de direcciones con Gnuplot. 
    • dynamics: Gráficas de sistemas dinámicos y fractales. 
    • ezunits: Magnitudes dimensionales. 
    • f90: Traductor de Maxima fortran. 
    • finance: Cálculo financiero. 
    • fractals: Fractales. 
    • ggf: Expresión general de sucesiones. 
    • graphs: Teoría de grafos. 
    • grobner: Funciones para trabajar con bases de Groebner. 
    • impdiff: Derivadas implícitas. 
    • interpol: Interpolación. 
    • lapack: Paquete LAPACK para álgebra lineal. 
    • lbfgs: Paquete L-BFGS para minimización sin restricciones. 
    • lindstedt: Paquete Lindstedt.
    • linearalgebra: Funciones de álgebra lineal.
    • lsquares: Mínimos cuadrados.
    • makeOrders: Utilidad sobre polinomios.
    • minpack: Funciones MINPACK para optimización y cálculo de raíces
    • mnewton: Método de Newton.
    • numericalio: Lectura y escritura de ficheros.
    • opsubst: Utilidad para sustituciones.
    • orthopoly: Polinomios ortogonales.
    • romberg: Integración numérica por el método de Romberg.
    • simplex: Programación lineal.
    • simplification: Reglas y funciones de simplificación.
    • solve_rec: Recurrencias lineales.
    • stats: Inferencia estadística.
    • stirling: Fórmula de Stirling.
    • stringproc: Procesamiento de cadenas.
    • to_poly_solve: Paquete to_poly_solve.
    • unit: Unidades físicas y dimensiones.
    • zeilberger: Funciones para series hipergeométricas.
Otro aspecto muy interesante de Maxima es que, al facilitarnos el código fuente, podemos adecuarlo para ser utilizado en proyectos donde tengamos necesidades matemáticas de alta precisión.

Como tal, máxima es un motor de cálculo que se usa de manera muy austera mediante comandos, pero si lo que queremos es utilizarlo yo recomendaría su uso a través de un entorno como wxMaxima.

WxMaxima es una interfaz gráfica que permite el uso del motor de cálculo simbólico Máxima de manera fácil gracias a un conjunto de menús y ayudas en línea y también es 100% gratuito por estar bajo licencia GPL.



En futuros post pondré ejemplos de uso en problemas matemáticos concretos.

No hay comentarios:

Publicar un comentario