14
Cuadernos Tecnológicos FRLR N°2 Octubre de 2012 Página 4 INTRODUCCIÓN A Maxima Ing. Matías De la Puente <[email protected]> 1. Introducción El sistema de álgebra computacional Maxima 1 es un motor de cálculo simbólico escrito en lenguaje Lisp publicado bajo licencia GNU/GPL. Maxima se especializa en operaciones simbólicas de todo tipo. Permite resolver expresiones aritméticas (entre números enteros y racionales grandes, reales en coma flotante de alta precisión y números complejos), expresiones algebraicas, ecuaciones lineales, no lineales, diferenciales y en diferencias. Además, cuenta con un amplio conjunto de funciones para hacer manipulación simbólica de polinomios, matrices, funciones racionales, límite, derivación, integración, manejo de gráficos en 2D y 3D, manejo de números de coma flotante muy grandes, expansión en series de potencias (Taylor) y de Fourier, transformada de Laplace, entre otras funcionalidades. Maxima es un programa multiplataforma, esto quiere decir que puede ser ejecutado en distintos sistemas operativos, como por ejemplo GNU/Linux, Windows y Mac OS X. En las siguientes secciones de este artículo el lector podrá conocer la historia de Maxima y comprender los beneficios que ofrece un programa libre. También, mediante una gran cantidad de demostraciones de uso, el usuario podrá conocer las diversas funcionalidades que ofrece Maxima. Por último, se ofrece un enlace web para descargar la última versión de Maxima para Windows. 2. Un poco de historia El origen de Maxima no es reciente y merece una breve reseña. A partir del año 1967 hasta SYmbolic MAnipulator) como parte del proyecto MAC (Machine Aided Cognition) con fondos del U.S. Defense Advanced Research Projects Agency y en menor proporción del Departamento de Energía (DOE). A finales de los '80s el U.S. Defense Advanced Research Projects Agency deja de financiar el proyecto y los desarrolladores de Macsyma deciden separarse del MIT y formar su propia empresa. Esta empresa, llamada Symbolics Inc., adquiere una licencia exclusiva de Macsyma en 1982. Pero el DOE rechaza pagar licencias a Symbolics y desarrolla una versión gubernamental o presencia frente a otros competidores como Maple o Mathematica, estos últimos empiezan a presentar nuevas funcionalidades y mejoras de rendimiento. En el año 1999, Macsyma es nuevamente vendido a la empresa Tenedos LLC. Hacia el año 2003, Tenedos no obtiene fondos suficientes para continuar el desarrollo de Macsyma y el proyecto queda estancado. 1 http://maxima.sourceforge.net/

Matias De la Puente

Embed Size (px)

Citation preview

Page 1: Matias De la Puente

CuadernosTecnológicosFRLR N°2 Octubrede2012 Página4

INTRODUCCIÓN A Maxima

Ing. Matías De la Puente <[email protected]>

1. Introducción El sistema de álgebra computacional Maxima1 es un motor de cálculo simbólico escrito en

lenguaje Lisp publicado bajo licencia GNU/GPL. Maxima se especializa en operaciones simbólicas de todo tipo. Permite resolver expresiones

aritméticas (entre números enteros y racionales grandes, reales en coma flotante de alta precisión y números complejos), expresiones algebraicas, ecuaciones lineales, no lineales, diferenciales y en diferencias.

Además, cuenta con un amplio conjunto de funciones para hacer manipulación simbólica de polinomios, matrices, funciones racionales, límite, derivación, integración, manejo de gráficos en 2D y 3D, manejo de números de coma flotante muy grandes, expansión en series de potencias (Taylor) y de Fourier, transformada de Laplace, entre otras funcionalidades.

Maxima es un programa multiplataforma, esto quiere decir que puede ser ejecutado en distintos sistemas operativos, como por ejemplo GNU/Linux, Windows y Mac OS X.

En las siguientes secciones de este artículo el lector podrá conocer la historia de Maxima y comprender los beneficios que ofrece un programa libre. También, mediante una gran cantidad de demostraciones de uso, el usuario podrá conocer las diversas funcionalidades que ofrece Maxima. Por último, se ofrece un enlace web para descargar la última versión de Maxima para Windows.

2. Un poco de historia El origen de Maxima no es reciente y merece una breve reseña. A partir del año 1967 hasta

SYmbolic MAnipulator) como parte del proyecto MAC (Machine Aided Cognition) con fondos del U.S. Defense Advanced Research Projects Agency y en menor proporción del Departamento de Energía (DOE).

A finales de los '80s el U.S. Defense Advanced Research Projects Agency deja de financiar el proyecto y los desarrolladores de Macsyma deciden separarse del MIT y formar su propia empresa. Esta empresa, llamada Symbolics Inc., adquiere una licencia exclusiva de Macsyma en 1982. Pero el DOE rechaza pagar licencias a Symbolics y desarrolla una versión gubernamental

o presencia frente a otros competidores como Maple o Mathematica, estos últimos empiezan a presentar nuevas funcionalidades y mejoras de rendimiento. En el año 1999, Macsyma es nuevamente vendido a la empresa Tenedos LLC. Hacia el año 2003, Tenedos no obtiene fondos suficientes para continuar el desarrollo de Macsyma y el proyecto queda estancado. 1 http://maxima.sourceforge.net/

Page 2: Matias De la Puente

CuadernosTecnológicosFRLR N°2 Octubrede2012 Página5

Pero, en forma paralela luego del desprendimiento de Macsyma del MIT, desde 1982 a 2001 William Schelter (University of Texas) mantiene una versión del 'DOE Macsyma' adaptada al lenguaje Common Lisp, denominada Maxima. En el año 1998, Schelter logra el permiso del DOE para distribuir Maxima bajo la licencia GNU/GPL. Desde el año 1998 hasta la actualidad el desarrollo de Maxima es realizado por la comunidad del software libre.

3. Sobre el Software Libre La importancia del software libre en el ambiente académico no ha recibido aún una difusión

suficiente. Por ello se hace necesario incluir una breve introducción acerca de lo que es un programa libre.

Las condiciones de uso y distribución de cualquier programa están especificadas en su

Libertad 0: La libertad de usar el programa, para cualquier propósito. Libertad 1: La libertad de estudiar cómo funciona el programa y modificarlo, adaptándolo a

tus necesidades. Libertad 2: La libertad de distribuir copias del programa, con lo cual puedes ayudar a tu

prójimo. Libertad 3: La libertad de mejorar el programa y hacer públicas esas mejoras a los demás, de

modo que toda la comunidad se beneficie. Muchas personas asocian los programas libres con GNU/Linux. Esto no es así, ya que

Maxima es un programa libre (publicado bajo la licencia GNU/GPL), lo que significa que es posible usarlo para cualquier propósito, instalarlo las veces que uno quiera y realizar y distribuir copias exactas las veces que uno quiera. A su vez, es posible estudiar el funcionamiento interno de Maxima ya que se encuentra disponible su código fuente. Y al estar disponible su código fuente es posible agregar, mejorar y corregir sus funcionalidades libremente, esto permite que Maxima vaya evolucionando y adaptándose a las necesidades del usuario.

4. Interfaz de usuario de Maxima Al ser Maxima un motor de cálculo, es necesario disponer de una interfaz para que el

usuario interactúe de manera simple, sencilla y rápida con este motor. Existen muchas interfaces, pero la más empleada es wxMaxima2. Esta interfaz es, al igual que Maxima, libre y multiplataforma por lo que, gracias a su licencia, goza de los mismos beneficios que el motor Maxima en cuanto a su uso y distribución.

2 http://andrejv.github.com/wxmaxima/

Page 3: Matias De la Puente

CuadernosTecnológicosFRLR N°2 Octubrede2012 Página6

La interfaz que ofrece wxMaxima es una de las más sencillas, solo presenta la barra de menús en donde se encuentran todas las operaciones, la barra de herramientas para las opciones más empleadas y el área de trabajo en donde se desarrollan todos los cálculos.

Si el lector desea aprender a utilizar Maxima con las demostraciones siguientes tiene que tener en cuenta que, para ejecutar cada comando, debe presionar las teclas shift+enter. De lo contrario si sólo se presiona la tecla enter no se ejecutará el comando y el cursor pasará a una nueva línea. Esto es porque Maxima permite ingresar varias líneas de comando para luego ser ejecutadas en forma secuencial.

5. Demostraciones de cálculo con Maxima Para conocer las capacidades de Maxima, nada mejor que ver como resuelve problemas

matemáticos y algebraicos comunes a una carrera de ingeniería.

5.1. Operaciones aritméticas Maxima permite realizar todo tipo de operaciones aritméticas en forma simbólica de

números reales, desde las más básicas hasta las más complejas:

Figura 1: Interfaz de wxMaxima

Page 4: Matias De la Puente

CuadernosTecnológicosFRLR N°2 Octubrede2012 Página7

En la última operación puede verse que Maxima siempre intentará simplificar las expresiones, siempre y cuando sea posible.

Las líneas con prefijo %i indican entradas realizadas por el usuario y las líneas con prefijo %o indican salidas devueltas por el motor Maxima. Estas líneas pueden ser referenciadas en cualquier otro comando posterior, indicando con el prefijo (%i o %o) y con el número de la entrada o salida del comando a ser referenciado.

También puede factorizar números enteros muy grandes:

Maxima puede trabajar con números complejos. En la próxima demostración se definen dos números complejos z1 y z2, y se calcula la suma de ambos:

El símbolo %i hace referencia al número complejo i. La multiplicación y división también es posible pero hace falta una operación extra para obtener el resultado:

El argumento % hace referencia al resultado del comando ejecutado anteriormente. Para la multiplicación hay que expandir el resultado y para división hay que pedirle a Maxima que lo

Page 5: Matias De la Puente

CuadernosTecnológicosFRLR N°2 Octubrede2012 Página8

represente en forma rectangular. También es posible mostrar el resultado de la división en forma polar:

El símbolo %e hace referencia a la constante e.

5.2. Expresiones algebraicas Los siguientes ejemplos muestran como Maxima trabaja con polinomios simples. Las

operaciones de suma, resta, multiplicación y división de polinomios se realizan de la misma manera que en los casos anteriores, con el mismo cálculo extra realizado en la multiplicación y división de números complejos.

Veamos ahora como expandir y evaluar una expresión algebraica:

El primer comando define la expresión algebraica 'p', el segundo comando expande esta expresión algebraica obteniendo el polinomio 'q' de grado 5. Por último, 'q' es evaluado en x=1/2.

Con Maxima también es posible realizar substituciones de expresiones algebraicas por otras:

Aquí puede verse como se substituye la variable x del polinomio 'q' por x+y. La expresión resultante puede expandirse para luego factorizarse:

Page 6: Matias De la Puente

CuadernosTecnológicosFRLR N°2 Octubrede2012 Página9

5.3. Ecuaciones

Veamos ahora como Maxima se ocupa de ecuaciones en general. Para la primera demostración vemos como calcular las raíces de una ecuación cúbica.

Maxima puede resolver sistemas de ecuaciones lineales:

Maxima también puede ocuparse de sistemas de ecuaciones no lineales:

5.4. Matrices

Para la demostración de cálculo matricial con Maxima definiremos dos matrices sencillas, una en el que cada elemento es una variable y la otra con números enteros como elementos. La primera matriz tiene variables como elementos para que pueda observarse el trabajo analítico que realiza Maxima en cada operación.

Page 7: Matias De la Puente

CuadernosTecnológicosFRLR N°2 Octubrede2012 Página10

Las operaciones de suma y multiplicación:

En la última operación hay que tener en cuenta que se realizó la multiplicación entre las matrices elemento a elemento. Si se quiere realizar la operación matricial propiamente dicha hay que emplear el operador '.':

Maxima también puede calcular en forma analítica determinante e inversa de matrices:

Page 8: Matias De la Puente

CuadernosTecnológicosFRLR N°2 Octubrede2012 Página11

5.5. Gráficos

Para realizar gráficos cartesianos sencillos se puede emplear la función wxplot2d, en el que se especifica la función a graficar y los limites de graficación. Por ejemplo, para graficar la función 1/x entre -5 y 5 tanto en el eje 'x' como en el eje 'y' se puede emplear el siguiente comando:

5.6. Límites Maxima también puede ocuparse del cálculo de límites de funciones en forma analítica. Por

ejemplo puede calcular el límite de la función graficada anteriormente cuando x tiene a 0, esto es:

Page 9: Matias De la Puente

CuadernosTecnológicosFRLR N°2 Octubrede2012 Página12

En esta demostración hay que destacar un par de detalles. En primer lugar, cuando un comando comienza con apóstrofo Maxima no muestra el resultado sino lo que muestra lo que realizaría ese comando, esto es de utilidad ya que permite visualizar en forma más clara lo que realizaría Maxima. En segundo lugar, el resultado del límite es infinity (infinito) esto es lógico porque infinity no especifica el signo al que tiende. Para conocer el signo de este límite infinito hay que evaluar el límite por derecha y por izquierda:

5.7. Derivadas

El trabajo con derivadas en Maxima es posible gracias a la función 'diff', empleada de la siguiente manera:

Aquí también se hizo uso del apóstrofo como prefijo de la función para representar la operación que realizaría Maxima. Maxima también puede realizar derivadas de mayor orden:

Las derivadas parciales en distintos órdenes tampoco son un problema para Maxima:

Page 10: Matias De la Puente

CuadernosTecnológicosFRLR N°2 Octubrede2012 Página13

5.8. Series de Taylor

Maxima puede realizar series de Taylor:

Como puede verse, Maxima desarrollo la serie de Taylor de la función en el punto 1 y hasta el 4° término de la serie. Se expande el resultado para obtener el polinomio correspondiente. Maxima también puede desarrollar serie de Taylor de funciones de más de una variable:

Aquí se obtuvo la serie de Taylor en el punto x=y=0 y hasta el 7° término de la serie. También se expande para obtener el polinomio correspondiente.

5.9. Integrales

Maxima puede resolver una gran cantidad de integrales en forma analítica. Veamos una demostración de un cálculo de integral indefinida:

Page 11: Matias De la Puente

CuadernosTecnológicosFRLR N°2 Octubrede2012 Página14

Aquí también puede verse el uso del apóstrofo como prefijo de la función para ver en forma clara la operación que está por realizar Maxima. Las integrales definidas tampoco son un problema para Maxima:

Maxima puede resolver integrales impropias como la de la siguiente función, la cual también es graficada:

La integral impropia de la función es por lo tanto:

Page 12: Matias De la Puente

CuadernosTecnológicosFRLR N°2 Octubrede2012 Página15

5.10. Ecuaciones diferenciales

Para la demostración de resolución de ecuaciones diferenciales considere la siguiente:

La solución general de la ecuación es:

La solución particular, considerando como condiciones iniciales x=0 y y=1, es:

Maxima puede también resolver ecuaciones diferenciales de orden superior:

La solución general de la ecuación es:

La solución particular, considerando como condiciones iniciales x=0, y=0 y y'=1, es:

Page 13: Matias De la Puente

CuadernosTecnológicosFRLR N°2 Octubrede2012 Página16

Maxima también puede resolver sistemas de ecuaciones diferenciales pero no en forma directa, para ello se pueden emplear métodos numéricos o la transformada de Laplace.

5.11. Series de Fourier Para el cálculo de serie de Fourier primero hay que cargar la librería que contiene las

funciones que desarrollan la serie de Fourier. También hay que declarar que la variable 'n', que se empleará en la serie de Fourier, será entera para que realice las simplificaciones oportunas:

Para esta demostración se desarrolla la serie de Fourier de la función y=x entre -

Se emplea lo siguiente para ver la serie de Fourier hasta la 5 armónica:

Esta serie puede graficarse con wxplot2d como se demostró anteriormente.

5.12. Transformada de Laplace Maxima también es capaz de realizar transformada de Laplace, por ejemplo:

Page 14: Matias De la Puente

CuadernosTecnológicosFRLR N°2 Octubrede2012 Página17

También es posible realizar las transformadas de funciones básicas como el impulso o escalón unitario:

Descarga Maxima se encuentra en la versión 5.26.0 que fue liberada el 19 de Diciembre del 2011 y se

puede descargar directamente la versión para Windows (unos 30,4 MB) desde el siguiente enlace: http://downloads.sourceforge.net/project/maxima/Maxima-Windows/5.26.0-Windows/maxima-5.26.0.exe

Conclusión

Como pudo comprobarse en las demostraciones, Maxima permite realizar todo tipo de cálculo analítico que se desarrolla una carrera típica de ingeniería.

Hay que tener en cuenta que si bien Maxima facilita y acelera el cálculo, éste no resuelve los problemas que se presentan en ingeniería, ya que esta tarea sigue y seguirá siendo realizada por el ingeniero.

Tampoco hay que dejar de lado la enseñanza del análisis matemático y álgebra que es necesaria para la formación de todo ingeniero. Maxima, de implementarse en una carrera de ingeniería, facilitaría y afianzaría el entendimiento por parte del alumno de los conceptos desarrollados durante la carrera de ingeniería.

Además, Maxima, al facilitar y acelerar el cálculo analítico, nos permite trabajar en un nivel más alto, logrando un mejor entendimiento del problema. Dicho en otras palabras, se puede analizar mejor y más rápido el problema sin perder tiempo en el desarrollo de los cálculos en cada solución encontrada.

Bibliografía

Documentación oficial en español de Maxima - http://maxima.sourceforge.net/docs/manual/es/maxima.html

Wikipedia en español - http://es.wikipedia.org/wiki/Maxima Prácticas de ordenador con Maxima Prats, Jerónimo y otros Universidad de Granada

España Manual de uso de Maxima y wxMaxima en asignaturas de cálculo diferencial Vallejo

Rodríguez, José Antonio Universidad Autónoma de San Luis Potosí México.