José Manuel Mira Ros
Departamento de Matemáticas. Universidad de Murcia
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).
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.
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.
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
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.
Maxima es un CAS genérico capaz de realizar
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:
También existen varios servidores de internet que permiten probar y ejecutar Maxima sin necesidad de instalarlo en nuestra computadora.
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.
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:
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.
<h1> <h2> <h3> <p> <br> <ul> <ol> <li> <strong> <b> <i> <em> <img>
lo cual suele ser suficiente.
<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.
<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.
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).
En la Universidad de Murcia se utiliza Maxima en la docencia de los siguientes cursos (al menos)
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.