Cálculo Simbólico

José Manuel Mira Ros

Departamento de Matemáticas. Universidad de Murcia

Introducción o qué es un CAS

Un sistema computacional de cálculo simbólico es una calculadora avanzada, capaz de realizar las operaciones numéricas habituales, más otras de naturaleza algebraica abstracta. O dicho de otra forma, puede trabajar con fórmulas en las que figuran, indistintamente, números y variables simbólicas no cuantificadas.

Este tipo de herramientas se denominan genéricamente CAS (del inglés computer algebra system) y los primeras aparecieron en la década de los 70. Al igual que ocurre con las calculadoras de bolsillo el objetivo de los CAS es automatizar la realización cálculos tediosos. Y aunque no todas las herramientas tienen las mismas prestaciones, un CAS genérico suele tener (y conviene que tenga) capacidades para realizar simplificaciones o desarrollos en fórmulas que contienen variables, para realizar derivadas e integrales indefinidas, para resolver ecuaciones lineales y algunas no lineales de forma exacta, para resolver ecuaciones de forma numérica o para resolver algunas ecuaciones diferenciales, para realizar cálculo matricial, etc. En síntesis, capacidades para los cálculos habituales de las matemáticas.

También se considera que un CAS de este tipo debe tener facilidades para dibujar gráficos de funciones y poner a disposición del usuario un lenguaje de programación que le permita definir sus propios procedimientos de cálculo. Junto a estos CAS de ‹‹amplio espectro›› existen otros más específicos para cálculo muy especializado.

Los CAS están influyendo de forma cada vez más significativa en la enseñanza de las matemáticas, especialmente a nivel universitario, por sus posibilidades de apoyo docente en ilustración de ciertos fenómenos y conceptos, en la validación experimental de algunas hipótesis, en el ahorro de tiempo en la realización de tareas conceptualmente simples pero tediosas, etc. El reto que tienen los docentes es conseguir que el CAS sea otra herramienta más, como el papel y el lápiz, o la bibliografía, en ese proceso personal de aprendizaje y que no quede reducido a un ‹‹artefacto›› o apéndice marginal.

Pero también se utilizan CAS en tareas de investigación matemática, frecuentemente en realización de cálculos simbólicos y en la experimentación para afianzar o desechar conjeturas. En ocasiones se utiliza un CAS genérico, pero en otras se utilizan CAS especializados (como por ejemplo el GAP - Groups, Algorithms, Programming - a System for Computational Discrete Algebra que emplean mis colegas del área de Álgebra).

Lecturas complementarias
  • Más sobre CAS. Wikipedia dedica una entrada a los CAS cuya lectura resulta aconsejable para completar esta introducción.
  • Tabla comparativa de CAS referida a aspectos básicos: nombre, creador, estado de desarrollo, licencia, costo, sistemas operativos en los que está disponible. Incluye software propietario y libre.
  • Una selección que sólo contiene herramientas libres.
Otros recursos

Muchos de los CAS pueden hacer cálculos numéricos de amplio espectro y grafismo, pero para objetivos específicos hay herramientas especializadas que pueden resultar interesantes.

  • Análisis numérico. Una lista de herramientas y una tabla comparativa referida a aspectos básicos de las mismas.
  • Estadística. Una lista de herramientas y una tabla comparativa de las mismas. En esta misma página, en el apartado del menú de la izquierda correspondiente a "Cálculo estadístico" podrá encontrar más información sobre herramientas de este tipo.
  • Hojas de cálculo. Aunque pertenecen a una categoría diferente, también pueden resultar interesantes para determinados propósitos.
  • Grafismo. Una lista de programas para hacer gráficos matemáticos.
  • EZ Graph Para gráficos desde la web de funciones sencillas: polinómicas, racionales, exponenciales, logarítmicas o trigonométricas.

La lista anterior recoge información existente en Wikipedia y sobrepasa mi limitada experiencia. En base a esa experiencia, y al diálogo con algunos colegas, realizo una selección.

  • Gnuplot es un excelente programa para realizar gráficos matemáticos, muy extendido y con el aval de que otros programas libres (Maxima y Octave entre ellos) lo utilizan para construir sus gráficos. La capacidad de reciclaje es uno de los valores del software libre.
  • Matlab es posiblemente uno de los programas de propósito general para cálculo numérico y grafismo más ampliamente usado en universidades y empresas tecnológicas. Matlab utiliza un lenguaje de alto nivel que resulta más amigable que los clásicos Fortran y C utilizados tradicionalmente en cálculo numérico. Es posible encontrar muchas líneas de código escritas en el lenguaje que Matlab reconoce. Pero Matlab es un programa propietario. Dentro del software libre GNU Octave sigue la misma filosofía y es altamente compatible con Matlab.
  • Scilab El INRIA (Institute National de Recherche en Informatique y Automatique) de Francia impulsa el Scilab Consortium que mantiene y desarrolla este software, con una licencia compatible con GNU GPL. Se trata de paquete de software científico para cálculo numérico que proporciona un potente y flexible entorno de trabajo en ingeniería y aplicaciones científicas. Scilab incluye cientos de funciones matemáticas y la posibilidad de añadir interactivamente programas de variados lenguajes (C, C++, Fortran...), mantiene un amplio nivel de compatibilidad con Matlab (a través de un programa de conversión) y su uso está extendido en las universidades francesas.
  • R es una buena elección para cálculo estadístico. En esta misma página podrá encontrar más información escrita por el Prof. Palazón.

Maxima

Las nuevas orientaciones impulsadas por el Espacio Europeo de Educación Superior aconsejan la introducción de instrumentos y recursos que faciliten el aprendizaje autónomo-dirigido de los estudiantes. Y los recursos informáticos de tipo CAS pueden prestar un ayuda significativa a los estudiantes

  • para cálculo simbólico o numérico;
  • en el estudio de funciones y sus propiedades apoyado por la representación gráfica;
  • y en la adquisición e interiorización, a través de la experimentación con los elementos anteriores, de las ideas que sustentan el conocimiento abstracto en matemáticas.

Los CAS más conocidos, como ©Derive, ©Maple, ©Mathematica..., son productos comerciales de precios elevados. Maxima no sólo es gratuito, es un programa de código abierto, cuyo código fuente está disponible bajo licencia GPL, pudiendo ser compilado en cualquier sistema operativo y distribuido libremente bajo los términos de dicha licencia.

Maxima desciende de Macsyma, el legendario sistema de álgebra computacional desarrollado a finales de 1960 en el Instituto Tecnológico de Massachusetts (MIT) como programa propietario, anterior a los CAS antes señalados.

William Schelter, profesor de Matemáticas en la Universidad de Texas en Austin, obtuvo en 1998 el permiso para liberar el código fuente bajo la licencia GPL de GNU y desde 1982 hasta su muerte en 2001 estuvo manteniendo la rama Maxima de Macsyma. Actualmente su mantenimiento y desarrollo se apoya en el esfuerzo altruista de una comunidad activa de usuarios y programadores. La última versión al escribir estas notas es la 5.16 y está fechada en agosto de 2008.

Qué es

Maxima es un CAS genérico capaz de realizar

  • cálculo simbólico, como diferenciación, integración, desarrollos en series de Taylor, transformadas de Laplace, ecuaciones diferenciales ordinarias, resolución de sistemas de ecuaciones lineales, matrices, tensores... utilizando números reales o complejos;
  • cálculo numérico con alta precisión usando fracciones exactas y representaciones con aritmética de coma flotante arbitraria;
  • gráficas utilizando funciones matemáticas, o tablas de datos, en dos y tres dimensiones;
  • tareas complejas programables en un lenguaje propio;
  • accesos a toda la potencia del lenguaje Common Lisp sobre el que está construido y con el que puede interaccionar, permitiendo, en particular, que el usuario implemente nuevos comandos o instrucciones.

Maxima es un programa para trabajar en modo consola (o línea de comandos). Existen, sin embargo, varios interfaces gráficos (GUI) para trabajar de forma más amigable. Los GUI de uso más extendido actualmente son:

  • xMaxima. Es el más veterano de todos los GUI y forma parte de la distribución de Maxima, a veces como un módulo opcional. Consta de dos ventanas: en una de ellas existe una consola para escribir los comandos Maxima y en la otra hay un navegador html para leer guiones de prácticas (notebooks) interactivos con Maxima.
  • wxMaxima. Es una interface que simplifica la introducción de los instrucciones más básicas vinculándolos a botones o menús desplegables con formularios listos para recibir los parámetros. Requiere instalar previamente Maxima.
  • GNU TeXmacs. A través de un módulo específico, Maxima puede ser ejecutado desde esta potente herramienta de edición de propósito amplio (que despierta pasiones a favor y en contra) y las salidas que Maxima produce son incorporadas después de procesarlas con TeX.

También existen varios servidores de internet que permiten probar y ejecutar Maxima sin necesidad de instalarlo en nuestra computadora.

Por qué Maxima

Cuando hace ya varios años me propuse comenzar a utilizar recursos informáticos de apoyo en mi docencia de Análisis Matemático para estudiantes de Física y Matemáticas, la cuestión era qué CAS elegir. Y para ello lo primero era dilucidar qué tipos de apoyo útiles podría prestarme un CAS en ese ámbito y buscar información sobre herramientas que fueran aptas para esos objetivos.

Para adoptar la decisión tuve en cuenta las siguientes variables, aunque no a todas asigné el mismo peso relativo.

  1. A través de su autopropaganda en internet forjarme una idea sobre el interés de la herramienta para mis objetivos.
  2. Qué herramientas han usado otros colegas, para qué y qué servicios prestan en ese ámbito.
  3. Posibilidades reales de profesor y alumnos para usar la herramienta sin limitaciones.
  4. Libros o manuales de uso accesibles a profesor y alumnos.
  5. Disponibilidad de materiales de fácil acceso diseñados para la herramienta.
  6. Carácter multidisciplinar: mejor si sirven para varias asignaturas.
  7. Multiplataforma: GNU-Linux y MS-Windows, al menos.
  8. Ergonomía.
  9. Desarrollo activo.
  10. Buena relación con LaTeX.

Y me decidí por Maxima. Estoy satisfecho con los resultados: hasta el momento Maxima responde a mis necesidades.

No probé todos los CAS que encontré referenciados, entre otros motivos porque no disponía de una copia legalizada. Pero entre los que probé, Maxima aguantaba bien la comparación (véase más abajo "A Critique of the Mathematical Abilities of CA Systems") en términos puramente técnicos, con los más afamados de sus competidores, mientras que en la relación calidad/precio o en la posibilidad de extender la herramienta, no había posibilidad de comparación porque Maxima es un software libre y abierto.

Con posterioridad otros compañeros del Departamento de Matemáticas de la Universidad de Murcia han hecho esa misma elección, haciendo que Maxima ocupe el puesto que anteriormente tenía en su docencia otro CAS propietario muy afamado. Comentando nuestras experiencias y valoraciones las carencias más significativas que vemos en Maxima son:

  • El navegador de xMaxima es demasiado primitivo: cuestiones tan básicas como poder abrir un fichero buscando con ratón no pueden realizarse. Y aunque, una vez abiertos, es posible editar los ficheros manteniendo la posibilidad de interacción, luego no es posible guardarlos con el formato inicial. Falta una herramienta eficiente para notebooks.
  • A diferencia de lo que ocurre con otros CAS, no hay materiales docentes de tipo notebook escritos para Maxima. Y los que hay en formato pdf son muy escasos. Evidentemente, esa es una contribución que podemos realizar quienes nos beneficiamos de Maxima, poniendo nuestros materiales a disposición de otros bajo una licencia Creative Commons o similar.

El manualico: así trabajo yo

En la página oficial pueden encontrarse diferentes documentos y manuales, más o menos ambiciosos, sobre Maxima escritos en formato pdf o html. Yo he escrito uno más, manualico.html, con la intención de que pueda ser de utilidad para mis alumnos, y por ello únicamente se abordan cuestiones relativas a algunos de los servicios que Maxima puede prestar como herramienta de apoyo a mi docencia.

El interés de este manualico, si lo tiene, es que está pensado fundamentalmente para ser leído desde xMaxima a los mandos de una computadora como un guión interactivo de prácticas. La manera de saber qué pasa cuando se ejecuta una instrucción de Maxima es ejecutarla, haciendo doble click con el ratón sobre ella, y a continuación modificarla dinámicamente para cercioarse de que se ha entendido su funcionamiento.

La idea no es nueva, de hecho ha sido utilizada desde siempre (hasta donde yo se) en el breve fichero intro.html que sirve como página de bienvenida en xMaxima. Sin embargo esa idea no ha sido explotada en los otros manuales html (ni en los pdf) que he consultado, en los cuales se puede actuar, recostado en un confortable sillón, como mero espectador de la película que discurre en el papel ante nuestros ojos. Por supuesto, esos materiales se pueden utilizar también en presencia de un ordenador y prácticar con ellos copiando selectivamente y pegando texto en alguna de las interfaces de Maxima, pero no están integrados con Maxima.

No es lo mismo abrir con un navegador estándar el fichero manualico.html que abrirlo con xmaxima ejecutando desde la consola (o similar)

xmaxima -url http://webs.um.es/mira/maxima/manualico.html

en el supuesto de que xMaxima está instalado y en el path del sistema.

Como se deduce fácilmente de lo anterior, considero de utilidad la preparación de guiones de prácticas en ese formato. Hay libros enteros con destino a otros CAS (comerciales) escritos con esa filosofía. Con xMaxima el problema no es que el profesor escriba esos materiales, que no es difícil (más adelante contaré como lo hago yo), sino cómo recuperar el trabajo de los alumnos en ese mismo formato, después de que hayan hecho sus experimentos y resuelto los ejercicios que se les propongan. Esa es, en mi opinión, una de las carencias de xMaxima que sería conveniente corregir.

El lenguaje html, aunque con un propósito diferente, conceptualmente es muy similar al lenguaje de LaTeX (véase en esta misma página más información sobre LaTeX escrita por el Prof. Ataz). Ambos son lenguajes de marcas en los que se escribe un fichero de texto plano (lo cual se puede hacer con cualquier editor, por simple que éste sea) que luego será interpretado por la herramienta oportuna para producir una salida "vistosa" en la pantalla del ordenador o en papel. Para conseguir esos efectos se escribe, también en texto plano, determinadas instrucciones para determinar el formato final, pero es necesario diferenciar de alguna manera entre el contenido y estas instrucciones de formato, llamadas comandos o etiquetas. En el leguaje html se utilizan los símbolos <> para delimitar tales etiquetas: por ejemplo

<b> este texto aparece en negrita </b>

es un tipo de construcción típica en html en el que se aprecia la etiqueta de apertura y cierre del grupo.

Existen editores específicos para html que disponen de botones para facilitar la utilización de etiquetas html; mi preferido es Quanta Plus. Con tales editores preparar un guión de prácticas para el navegador de xMaxima es realmente muy simple y sólo hay que tener en cuenta unas pocas cosas.

  • No todas las etiquetas del lenguaje html son entendidas por xMaxima, pero entiende
<h1> <h2> <h3> <p> <br> <ul> <ol> <li> <strong> <b> <i> <em> <img>

lo cual suele ser suficiente.

  • Existe una etiqueta no estándar con dos variantes
<eval program=maxima doinsert=0>Código Máxima</eval>

<eval program=maxima doinsert=1>Código Máxima</eval>

para que xMaxima identifique su contenido como código Maxima y lo pueda ejecutar mediante un doble clik de ratón, de forma que el resultado de la ejecución del comando Maxima se inserta en el fichero html cuando hay un 1 y no lo hace cuando hay un 0.

  • Existe otra etiqueta no estándar
<result modified>??</result>

que actúa en colaboración con la etiqueta anterior en su variante 1. Se coloca a continuación de ella para delimitar un grupo (arriba aparece ?? que es el que suelo utilizar) que será sustituido por el resultado producido por Maxima al ejecutar el código delimitado por la etiqueta precedente de evaluación. Tanto esta como la etiqueta del ítem anterior, obviamente, no forman parte de la botonera de Quanta, pero es sencillo asignarlas a dos nuevos botones en Quanta.

  • No entiende las instrucciones css en el fichero html, pero no genera problemas si tales instrucciones son cargadas mediante referencia a un fichero css externo. Esto permite que el guión de prácticas pueda tener una apariencia diferente según se lea con xMaxima o un navegador genérico (véase en tal sentido manualico.html).

Para alguien como yo acostumbrado a utilizar a diario LaTeX y a tener abiertas de forma simultánea dos ventanas, una con el código en cierto editor y otra con la salida, es completamente natural crear guiones de prácticas teniendo dos ventanas abiertas simultáneamente: en la primera está Quanta con el fuente en html, en la segunda xMaxima interpretando dicho código y permitiendo ejecutar los comandos Maxima identificados mediante la etiqueta <eval...> y comprobando el buen funcionamiento de los mismos.

Tan sólo es necesario recargar el archivo html con xMaxima cada vez que Quanta guarda una modificación. En los sistemas LaTeX actuales esa recarga se realiza de forma automática, algo que también sería deseable que hiciera xMaxima (sólo es necesario que alguien con los conocimientos adecuados y las ganas de colaborar con el proyecto lo implemente).

Como se ve, en realidad no es complicado y los estudiantes podrían utilizar ese mismo procedimiento para redactar la resolución de sus prácticas con Maxima, lo cual serviría como estímulo para iniciarse en la escritura de html, algo que sin duda puede ser de utilidad para ellos, como lo es LaTeX.Vídeo en formato ogg (40MB).

Docencia con Maxima en la UMU

En la Universidad de Murcia se utiliza Maxima en la docencia de los siguientes cursos (al menos)

  • Análisis Matemático de una variable. Licenciatura de Matemáticas
  • Análisis Matemático de una variable. Licenciatura de Física
  • Álgebra Lineal. Licenciatura de Matemáticas

Referencias para Maxima

La referencia principal

  • La página oficial de Maxima, en sourceforge, es la fuente primaria de información y de descarga del programa. También podrá encontrar en ella enlaces a Other Open Source Computer Algebra Systems !!!

Documentación

Instalación

  • Instalar Maxima. Para los sistemas GNU-Linux Debian y Ubuntu Maxima está disponible en los repositorios y por tanto es suficiente con ejecutar desde una consola como superusuario (root)
apt-get install xmaxima gnuplot wxmaxima

Desde la página de sourceforge pueden descargarse autoinstalables en formato rpm y exe para Linux y MS-Windows, respectivamente. Y también están los fuentes para compilarlos en la propia máquina, sea cual sea su sistema, y ese es mi procedimiento preferido aunque requiere tener instalado un compilador de Lisp.

  • Probar Maxima, sin instalar nada. También es posible hacerlo desde el enlace anterior, que funcionaba cuando se escribieron estas notas. Pero no hay garantías, porque puede dejar de funcionar, como ocurre con algún otro que figura en la página oficial de Maxima (vídeo).
  • Entornos de trabajo
  • Interfaces gráficas de trabajo hay varias. Busque la que mejor se adapte a sus gustos y necesidades. En mi opinión, para un uso exporádico, o para estudiantes de enseñanza secundaria, wxmaxima es una buena opción y quizá la primera a probar; pero para desarrollar material docente de prácticas mi preferido es xMaxima (Euler puede ser también algo a considerar, aunque el planteamiento es diferente). Vídeo con tres escenarios diferentes.
  • LaTeX, Maxima y Gnuplot pueden colaborar eficientemente entre sí utilizando el paquete maxiplot de LaTeX. Vídeo ilustrativo de la dinámica. Para una solución diferente: pMaxima.

Otros

Prácticas

  1. Utilizando su navegador preferido inicie dos pestañas o sesiones: en una de ellas tenga abierto manualico.html y en la otra un servidor remoto en el que pueda ejecutar Maxima sin instalarlo en su computadora. Una vez realizado esto vaya leyendo las secciones del manualico que sean de su interés y por el procedimiento de copiar y pegar compruebe la ejecución del código Maxima en el servidor remoto.
  2. Instale en su computadora Maxima y xMaxima utilizando el procedimiento adecuado dependiendo de su sistema operativo. Abra el manualico.html con el navegador de xMaxima y práctique con aquellas secciones que sean de su interés.
  3. Descargue en su computadora manualico.html. Abra dicho fichero con su editor html preferido y, después de guardarlo con otro nombre, modifíquelo para crear un guión de prácticas sobre algún tema de su gusto. A continuación abra dicho guión con xMaxima y compruebe si todo funciona como se espera.