Software matemático básico:
Maxima
Curso intensivo i-MATH de Software libre orientado
a Ciencias e Ingeniería.
Vigo - Cádiz. Julio de 2008
Mario Rodríguez Riotorto
[email protected]
1
Copyright c2008 Mario Rodriguez Riotorto
Este documento es libre; se puede redistribuir y/o modificar bajo los términos de la
GNU General Public License tal como lo publica la Free Software Foundation. Para más
detalles véase la GNU General Public License en http://www.gnu.org/copyleft/gpl.html
This document is free; you can redistribute it and/or modify it under the terms of the
GNU General Public License as published by the Free Software Foundation. See the
GNU General Public License for more details at http://www.gnu.org/copyleft/gpl.html
Índice general
1. Generalidades
2. Despegando con Maxima
Instalación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.
2.2. Tomando contacto con el programa . . . . . . . . . . . . . . . . . . . . . . . . . . .
3. Matemáticas con Maxima
3.1. Números . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2. Listas
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3. Transformaciones algebraicas
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4. Resolución de ecuaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5. Límites, derivadas e integrales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6. Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.7. Vectores y campos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.8. Gráficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.9. Ecuaciones diferenciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.10. Probabilidades y análisis de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.11. Interpolación numérica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4. Programación
4.1. Nivel Maxima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2. Nivel Lisp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
5
5
6
13
13
15
19
24
27
33
40
44
50
57
61
65
65
73
2
Capítulo 1
Generalidades
Maxima es un programa de Matemáticas escrito en Lisp.
Su nombre original fue Macsyma (MAC’s SYmbolic MAnipulation System). Se desarrolló en
los laboratorios del MIT entre los años 1969 y 1982 con fondos aportados por varias agencias
gubernamentales norteamericanas (National Aeronautics and Space Administration, Office of Naval
Research, U.S. Department of Energy (DOE) y U.S. Air Force).
El concepto y la organización interna del programa están basados en la tesis doctoral que Joel
Moses elaboró en el MIT sobre integración simbólica. Según Marvin Minsky, director de esta tesis,
Macsyma pretendía automatizar las manipulaciones simbólicas que realizan los matemáticos, a fin
de entender la capacidad de los ordenadores para actuar de forma inteligente.
El año 1982 es clave. El MIT da por finalizado el proyecto; una copia pasará al DOE (conocida
como DOE-Macsyma) y otra a la empresa Symbolics Inc. para su explotación comercial, haciendo
el código propietario. La copia del DOE fue mantenida por William Schelter de la Universidad
de Texas y traducida a Common Lisp; parte de la comunidad científica podría utilizarla, pero
no tendría derechos de redistribución. Es la época en la que aparecen en el mercado Maple y
Mathematica. La versión comercial apenas se desarrolla, es superada por estos dos programas y
deja de desarrollarse en 1999.
En 1998 Schelter obtiene permiso del Departamento de Energía para distribuir Maxima (así lla-
mado ahora para diferenciarlo de la versión comercial) bajo la licencia GPL (General Public Li-
cense) de la Free Software Foundation. En el año 2000 Maxima pasa a ser un proyecto hospedado
en Sourceforge y en el 2001 fallece Schelter. Actualmente el proyecto se mantiene con el trabajo
voluntario de un equipo internacional de programadores.
Toda la información relevante del proyecto está disponible en la URL
http://maxima.sourceforge.net
desde donde se puede descargar la documentación y los ficheros de instalación. La vía más directa
y rápida de tomar contacto con el equipo de desarrollo y el resto de usuarios es a través de la lista
de correo
http://maxima.sourceforge.net/maximalist.html
Además, existe una lista de correos para usuarios de habla hispana en
http://sourceforge.net/mailarchive/forum.php?forum id=50322
Uno de los aspectos más relevantes de este programa es su naturaleza libre; la licencia GPL en
la que se distribuye brinda al usuario ciertas libertades:
3
CAPÍTULO 1. GENERALIDADES
4
libertad para utilizarlo,
libertad para modificarlo y adaptarlo a sus propias necesidades,
libertad para distribuirlo,
libertad para estudiarlo y aprender su funcionamiento.
La gratuidad del programa, junto con las libertades recién mencionadas, hacen de Maxima una
formidable herramienta pedagógica, accesible a todos los presupuestos, tanto institucionales como
individuales.
Finalmente, tampoco es ajeno este programa al mundo empresarial e industrial (no en vano
algunos de los desarrolladores actuales de Maxima son ingenieros), ya que junto a la reducción
de los costes económicos en licencias hay que añadir el dinamismo de su desarrollo, pues no son
pocas las ocasiones en las que una sugerencia o propuesta de mejora por parte de los usuarios del
programa ha tenido una rápida respuesta por parte del equipo de desarrollo.
Capítulo 2
Despegando con Maxima
2.1.
Instalación
Maxima funciona en Windows, Linux y Mac-OS.
En Windows, la instalación consiste en descargar el binario exe desde el enlace correspondiente
En Linux, la mayoría de las distribuciones tienen ficheros precompilados con las extensiones
en la página del proyecto y ejecutarlo.
rpm o deb, según el caso.
Las siguientes indicaciones sobre su compilación hacen referencia al sistema operativo Linux.
Si se quiere instalar Maxima en su estado actual de desarrollo, será necesario descargar los
ficheros fuente completos del CVS de Sourceforge y proceder posteriormente a su compilación. Se
deberá tener operativo un entorno Common Lisp en la máquina (clisp, cmucl, sbcl y gcl son
todas ellas alternativas libres válidas), así como todos los programas que permitan ejecutar las
instrucciones que se indican a continuación, incluidas las dependencias tcl-tk y gnuplot. Grosso
modo, los pasos a seguir son los siguientes1:
1. Descargar las fuentes a un directorio local siguiendo las instrucciones que se indican en el
enlace al CVS de la página del proyecto.
2. Acceder a la carpeta local de nombre maxima y ejecutar las instrucciones
./bootstrap
./configure --enable-clisp --enable-lang-es-utf8
make
make check
sudo make install
make clean
3. Para ejecutar Maxima desde la línea de comandos se deberá escribir
maxima
si se quiere trabajar con la interfaz gráfica (ver sección siguiente), teclear
xmaxima
1Se supone que se trabajará con clisp, siendo la codificación del sistema unicode.
5
CAPÍTULO 2. DESPEGANDO CON MAXIMA
6
2.2. Tomando contacto con el programa
En esta sesión se intenta realizar un primer acercamiento al programa a fin de familiarizarse
con el estilo operativo de Maxima, dejando sus habilidades matemáticas para más adelante.
Una vez iniciada la ejecución del programa, se nos presenta una cabecera:
Maxima 5.15.0cvs http://maxima.sourceforge.net
Using Lisp CLISP 2.41 (2006-10-13)
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
The function bug_report() provides bug reporting information.
(%i1)
donde el símbolo (%i1) nos indica que Maxima está esperando la primera entrada del usuario
(i de input). Ahora se puede escribir una instrucción y terminarla con un punto y coma (;) para
que el programa la ejecute; por ejemplo,
(%i1) diff(1-exp(-k*x),x);
( %o1)
k e−k x
(%i2)
donde le pedimos la derivada de la función y = 1 − exp(−kx) respecto de x, a lo que Maxima res-
ponde con ke−kx, etiquetando este resultado con (%o1) (o de output). Nótese que tras la respuesta,
la etiqueta (%i2) nos indica que Maxima espera una segunda instrucción.
El símbolo %e es la forma que tiene Maxima de representar la base de los logaritmos naturales,
de igual forma que %pi representa al número π. Continuando con la sesión,
(%i2) %pi + %pi;
( %o2)
(%i3) float(%);
2 π
( %o3)
6.283185307179586
Maxima hace simplificaciones algebraicas, como π + π = 2π, las cuales devuelve en forma
simbólica. El símbolo %, cuando se utiliza aislado, representa la última respuesta dada por Maxima;
así, en la entrada número tres se solicita que el último resultado se devuelva en formato decimal
de coma flotante.
Maxima está escrito en Lisp, por lo que ya se puede intuir su potencia a la hora de trabajar
con listas, las cuales deben finalizar y terminar con corchetes ([a,c,...]); en el siguiente diálogo,
el texto escrito entre las marcas /* y */ son comentarios que no afectan a los cálculos, además se
observa cómo se hace una asignación con el operador de dos puntos (:) a la variable xx,
(%i4) /* Se le asigna a la variable x una lista */
xx: [cos(%pi), 4/16, [a, b], (-1)^3, integrate(u^2,u)];
( %o4)
−1,
1
4 , [a, b] ,−1,
u3
3
CAPÍTULO 2. DESPEGANDO CON MAXIMA
7
(%i5) /* Se calcula el número de elementos del último resultado */
length(%);
( %o5)
5
(%i6) /* Se transforma una lista en conjunto, */
*/
*/
/* eliminando redundancias. Los
/* corchetes se transforman en llaves
setify(xx);
( %o6)
−1,
1
4 , [a, b] ,
u3
3
De la misma manera que % representa el último resultado, también se puede hacer referencia a
una sal
Comentarios de: Software matemático básico: Maxima (0)
No hay comentarios