In Sage: the math server

Sibelius es muy conocido por obras como Finlandia, Tapiola, la suite Karelia y algunas otras obras. Algo menos conocida que las anteriores es el poema sinfónico “en saga” que a mi particularmente es mi composición de ese músico de todas las que conozco.

Espero convencer a alguien de que escuche el tema, que puede sin demasiadas dudas catalogarse como una maravilla musical. Pero desde luego esta entrada no versa sobre música clásica sino sobre un entorno de cálculo matemático con un nombre similar, SAGE.

Mi primer contacto con SAGE no fue demasiado venturoso. El año pasado me tocó lidiar con la asignatura de Algebra II, que en la UAM viene a significar teoría de Galois (del cuál, por cierto, se celebró anteayer el 200 aniversario de su nacimiento). La asignatura tiene fama de difícil por ser muy abstracta. Eso, a nivel particular, no supone ningún problema. Se me da estupendamente entender cosas abstractas y cuando esa es la mayor dificultad de una asignatura eso significa que me va resultar muy sencilla ;-). Pero hete aquí que el profesor que impartía la asignatura decidió ser original y considerar que a estas alturas es absurdo perder mucho tiempo enseñando a los alumnos a hacer cálculos explícitos cuando hay sistemas informáticos que los hacen mas rápido y sin errores. Por ese optó por organizar unas “prácticas de laboratorio” con el sistema informático SAGE. Dado que si estoy estudiando matemáticas es sobre todo para ver si consigo librarme de trabajar regularmente en algo que tenga demasiado que ver con la informática estoy muy contrariado con el enfoque de toda la carrera en la UAM y en particular con las malditas prácticas de laboratorio, en particular si son obligatorios, y peor aún si es obligatorio hacerlas in situ. Se ha llegado a dar la situación tan absurda de que para quitarme al asignatura de programación de primero (programación en C) he tenido que hacer 3 exámenes. En el primero saqué un 9.7 sobre 10. Pero claro, resulta que había que hacer prácticas, y yo, que me había presentado al examen sin pisar una clase no tenía ni idea. Total, que no me sirvió de nada la nota y suspendí la asignatura. Al año siguiente volví a presentarme, y saqué una nota similar en el examen. Tampoco había hecho las prácticas, pero ahora sabía que podía hacer las prácticas en verano (en mi casa) y entregarlas en septiembre con lo cuál me mantenían el aprobado del examen. El caso es que por motivos varios no pude hacer las prácticas y no me volví a presentar al examen hasta que con la extinción de la titulación de licenciatura ya no había que hacer prácticas. Ese examen es el que peor me salió, y sólo saqué un 8.5. Eso sí, la parte práctica, hacer un programa de memoria y escribirlo sobre un papel (sin probarlo en un ordenador para depurar ni nada) me salió perfecta obteniendo la máxima nota posible (y, por cierto, fuí el único en obtener esa nota, y, aparte, el que mas nota obtuvo, con diferencia, en la asignatura).

Bien, me he enrollado un poco para dejar claro el poco aprecio que tengo por la idea de prácticas en una carrera de matemáticas. Retomemos el hilo: en la que probablemente esté considerada como la asignatura de matemática mas pura de toda la licenciatura resulta que el profesor promueva la idea de hacer una práctica de laboratorio. Afortunadamente no es obligatoria y, por supuesto, no voy. Por desgracia aun siendo opcional la práctica el profesor opta por que el enunciado del examen parcial este escrito en el lenguaje de programación SAGE. Yo, como no voy regularmente a clase (y hay unos estupendos libros sobre el tema, y además el profesor colgó sus propios apuntes) no me entré de la fecha del parcial, que además es básicamente inútil. Pero luego, mirándolo en la web compruebo lo que ya había dicho, que los planteamientos del examen están escritos en la sintaxis del lenguaje SAGE. Como no contaba con eso a la hora de preparar el examen me encuentro sin tiempo de aprender la asignatura y además el lenguaje SAGE antes del examen, así que dejo la asignatura. Luego compruebo que en el examen final el enunciado fué “normal”, pero aún así las notas fueron las peores que he visto nunca, con sólo un aproado de entre la treintena o así de gente presentada. Sospecho que detrás de esos malos resultados estuvo el exceso de énfasis en enseñar a usar SAGE y el no centrarse en aprender a hacer las cosas “a mano”. Yo estoy de acuerdo que, en la práctica, normalmente se va a usar un sistema informático para hacer los cálculos. Pero, eso, en la práctica. Y aprender a usar un sistema informático es una tarea muy sencilla y que puede hacer uno mismo después de la carrera, y además lo va a aprender mucho mejor que en los dichosos laboratorios. Perder el tiempo de la licenciatura haciendo prácticas me parece un disparate que va a bajar mucho el nivel como matemáticos de las nuevas generaciones de alumnos.

Bien, el caso es que este año he cogido cálculo numérico II (no me queda otra, ya que es troncal, aká, obligatoria). Cómo quiera que es el último año que se imparte la asignatura (de hecho es el último año que se imparte un curso de licenciatura, que a partir de ahora queda totalmente extinta y ya sólo se imparte enseñanza para grado, es decir, “bolonitas”), y no quiero perder mas tiempo para intentar terminar la licenciatura he optado por ir a los laboratorios (que, además, por suerte, me los han puesto en un horario que no me resulta demasiado horrible). La primera parte de los laboratorios la hemos estado haciendo con matlab, el mismo entorno usado en cálculo numérico I. Cómo la mayoría de físicos teóricos mi package matemático favorito es de lejos mathematica. Pero bueno, no pasa nada por aprender matlab. Además la asignatura de CN II es mas bonita que CN I ya que se ven sistemas de ecuaciones diferenciales y EDP’s que es algo que a un físico le llama más la atención que álgebra lineal numérica (que, ojo, tiene su gracia y utilidad a nivel teórico en algunos puntos) y cosas mas “mundanas”, como integración numérica, ceros de funciones y etc, etc que se ven en CN I.

El caso es que ahora en los laboratorios empiezan con SAGE. El último día lo único que se hizo fué acceder al entorno, y ¡vaya! ¡el entrono es un navegador web!.

Yo, cuando se venía hablando del sistema operativo chrome y la idea de aplicaciones en la nube tenía la esperanza de que no triunfase, cómo así ha sido. Sencillamente, no me fiaba de la nube. Y eso era antes de que me cerraran dos cuentas del facebook (por no usar en ellas mi nombre real sino el de personajes de ficción famosos, Sheldon Cooper y Leonard hostfader). Ahora me fío aún menos, si cabe, de la nube. Por ese motivo la idea de un sistema operativo cuya única idea sea ofrecer un interfaz para aplicaciones que se ejecutan en servidores en “la nube” y que los datos se guarden allí me parece algo odioso. Ahora bien, una versión de la misma idea un poco menos delicada si me parece muy interesante. Mi idea era sencilla. Crear programas que tengan una interfaz y un núcleo separados. El núcleo podría instalarse en la misma máquina que la interfaz, o en un servidor dedicado (una máquina mas potente). La interfaz cliente podría conectarse al núcleo que eligiese, el del propio ordenador en el que se ejecutase, en uno conectado a este mediante red (intranet wifi por ejemplo) o, si acaso, opcionalmente, a un núcleo “en la nube”.

El caso es que me había olvidado de esa idea, pero en cuanto ví que a la interfaz de SAGE se accedía mediante un navegador, introduciendo una URL me dí cuenta de que eso implementaba a la perfección mi idea. En el laboratorio de la UAM sage es un servidor de internet (como puedan serlo apache, o IIS, o algún otro, pero especializado en matemáticas) funcionando en un puerto http “rarito”, bueno tampoco tan rarito, el 8000. Hoy he estado mirando como usar SAGE desde casa. La web de ese pacakge es: http://www.sagemath.org/. Desde allí uno puede acceder a una página desde la que descargar el programa (una descarga de 1.13 GB en un formato que no conozco, ova (acabo de descargarlo y me tendré que poner a ver como leches se instala ese servidor en mi equipo.

Pero aparte de instalarlo en un equipo windows (o linux/unix supongo) también puede usarse desde una URL: http://www.sagenb.org/. Ahí uno se registra con un nombre de usuario y contraseña y accede al programa, mediante un nuevo whorksheet (pueden, claro está, crearse varios). Este worksheet se presenta en forma de una página web con un campo de texto dónde introducir la expresión en el lenguaje matemático oportuno. Para evaluar la expresión se pulsa sobre el link “evaluate”, o se pulsa la combinación de teclas “shift + intro”. El resultado aparece a continuación del cuadro de texto y, justo después, aparece otro cuadro de texto dónde introducir la siguiente instrucción. También puede volverse atrás y editar la expresión anterior y volverla a evaluar.

No he explorado mucho las tecnologías implicadas. Se habla de que usan Phyton, del cuál no sé gran cosa (por no decir nada). También veo que de vez en cuando sale el aviso de que se está usando un archivo llamado Ajax_math.js, o algo similar. Desde luego, viendo como funciona la interfaz, podía intuirse claramente que se estaba usando Ajax.Para quien lo desconozca decir que Ajax son una serie de componentes del navegador, que pueden instanciarse desde un lenguaje de script de cliente, tipo javascript, y que envían y recogen información del servidor de forma asíncrona-es decir, sin recargar toda la página web-. Ese tipo de funcionalidad también puede hacerse desde películas flash, pero a diferencia de este ajax es mas “standard”.

El worksheet queda guardado en el servidor (imagino que como página web alojada allí) y si se da a “imprimir” se abre una ventana emergente con la web, con la parte de las instrucciones matemáticas solamente, sin el resto de añadidos que puede salvarse en formato html en el disco duro para así tenerla a disposición en el futuro, y no depender de la voluntad de los que administran “la nube” esa. De ese modo uno puede acceder a las instrucciones para incluirlas en un whorsheet que pertenezca a un servido que uno haya instalado en su propio ordenador.

Las ventajas de este modo de operar son obvias, pero no está de más recalcarlas. Yo puedo instalar, si quiero, ese servidor en un tablet, y usarlo siempre que quiera, tenga o no conexión a internet. Pero vaya, eso ya pasa con mathemática, matlab, mapple, derive o el resto de sistemas de matemática por ordenador. Es mas divertido si instalo el package en el ordenador mas potente de mi casa (el sobremesa) y accedo a él mediante una URL de intrantet (vía wifi) desde el tablet o el portatil, o, incluso, desde el movil (sí, lo he comprobado y funciona perfectamente desde el navegador del móvil, un nokia N8 dónde instalé hace poco una versión no oficial de Symbian belle, que la verdad, es una auténtica maravilla, ya haré una entrada específica sobre symbian belle, windows 8 para tablets/ordenadores de sobremesa, que es mucho mas liviano que windows 7 y hace que le tablet vaya bastante mas rápido, y el nefasto windows phone). Por supuesto, aparte de en una intranet local puede usarse SAGE desde internet, a través del link que dí antes. En realidad, dado que está distribuido con licencia GNU imagino que cualquiera que así lo quiera, puede instalar SAGE en un servidor de internet y que haya varias URL desde dónde usarlo.

Imagino que quienes han estado leyendo esta entrada, y están algo enterados de estos temas, habrán estado pensando todo el tiempo que SAE no es tan especial ya que el bastante mas famoso Wolfram Alpha es algo similar. Si, cierto, uno puede ir a la web del wolfram alpha y en el cuadro de texto que aparece teclear una instrucción en el lenguaje de mathemática y al recargarse la página web le ofrecerá el resultado que daría mathemática, mas algún extra. Si por ejemplo, uno escribe en Wolfran Alpha Integrate[x^2,x], la instrucción en mathemática para el cálculo de la integral de ^x^2 la web le ofrece no sólo el resultado de la integral (escrito con notación matemática) sino también la gráfica de la función x^3/3 (el resultado de hacer la integral indeinida, con la constante c de integración tomada como 0).

Desde luego eso es útil, pero no permite guardar worksheets, y, además, es un sistema muy ambicioso en otros aspectos, yo mas bien diría que pretencioso.En particular se supone que el sistema es listo, que piensa por si mismo y que el decide cuál es la mejor salida que puede dar para lo que tu le pongas. Yo, sinceramente, prefiero un sistema algo mas modesto del que puedas tener claro que es lo que se espera que salga, y eso es SAGE, que, aparte, como ya digo, puedes salvar worksheets, para usar en entornos locales.

Por supuesto uno se puede preguntar ¿Cómo es la sintaxis de SAGE?. La verdad es que no es muy compleja. En la asignatura de álgebra II indicaban la sintaxis para trabajar con grupos de galois, raíces de polinomios y demás. Lo vi muy por encima, pero no parecía nada complicado. Ahora estoy empezando a mirar como se hacen las cosas elementales de cálculo simbólico (aparte de, por supuesto, como se programa, que es lo que piden en la asignatura de cálculo numérico: implementar runge kutas y cosas así).

Por ejemplo, el análogo a la sintaxis de mathematica para calcular la integral de una función es f.integral(). Para que eso se ejecute uno previamente ha debido asignar un valor a la función.

Tendríamos pues que escribir, por ejemplo:

f=sin(x)

pulso “evaluate”

f.integral()

pulso “evaluate” y obtengo el resultado: -cos(x).

Por supuesto puedo llamar a la función f como quiera (dentro de un orden normal a cualquier lenguaje de programación).

También puedo poner todo en una sentencia única. Por ejemplo, para evaluar la integral de x*sin(x) debo escribir:

(x*sin(x)).integral()

No he explorado mucho el sistema, así que no sé cuantas tareas típicas están implementadas. Gracias a un manual de la autónoma, que usan los estudiantes de grado (intuyo que ahora la UAM va a optar por trabajar con SAGE en vez de con matlab) veo que las operaciones típicas de primero de carrera (cálculo diferencial e integral, álgebra lineal, cálculo vectorial) están incluidas. Sé por el curso de álgebra II que se pueden calcular grupos de galoise, así que imagino que también podrán calcularse soluciones de EDOs (simbólicamente y numeéicamente, entiéndase, sin imlementar el algorimo uno mismo), EDPs y el resto de las cosas típicas de licenciatura. Por lo visto SAGE surge de un intento de unificar numerosos packages aislados para muchas tareas bajo un formato común, e imagino que habrá muchas, muchas cosas hechas, algunas muy especializadas. También imagino que es un sistema que mediante la opción de “share” podrá ir creciendo y que habrá librerías para cosas muy específicas. De hecho eso del “share” es muy interesante porque abre la posibilidad de compartir en equipo los worksheets con el resto de colaboradores de un grupo de investigación.

En fin, que me parece una gran idea, y a lo mejo no tan famosa como mereciera. Yo voy a seguir usando mathematica a título personal (que ya lo conozco y me siento cómodo con él), matlab, ya que me han obligado a prenderlo, pero desde luego voy a aprender SAGE en condiciones, y no sólo la parte que se requiera para los laboratorios de cálculo numérico. Eso de que teniendo en el móvil una conexión a internet (que es barata, incluso en modalidad de prepago) puedas acceder desde casi cualquier lado a un whorksheet con las fórmulas típicas que usas para un determinado artículo, y poder hacer cuentas relativamente complejas asistidas por ordenador es fascinante. Vale, también puedes hacer lo mismo desde un tablet (que es algo que pesa muy poco y puedes llevar sin problemas a casi cualquier sitio) con windows usando mathemáthica o matlab, o con un talbet android que tenga conexión 3 G accediendo a la versión on-line. Pero la opción de hacerlo todo en el móvil, que es algo que de todos modos vas a llevar, y que en el móvil puedes tener fácilmente 48 GB (por ejemplo mi N8 van 16 GB de memoria interna y puedo ponerle una micro SD de 32 GB) para almacenar libros y artículos eso significa que es casi imposible tener mas facilidades para poder hacer cosas más o menos sitias en cualquier sitio y lugar donde uno tenga cobertura con el móvil.

Y, para terminar la entrada, vuelvo al off-topic musical con el que la empecé.

SAGE es un sistema relativamente desconido. También es relativamente desconocido el músico clásico contemporáneo Gavin Bryars. Un tema suyo, inspirado en la tragedia del titanic, “The Sinking of the Titanic” es el siguiente:

Un versión más “animada” del mismo tema, y posiblemente mas conocida, es la que hizo el músico que publica discos bajo el pseudónimo “aphex twin”. El tema se titula “raising the titanic: big drum mix”.

Vale, en ese vídeo se usan imágenes de la película “titanic” de James Cameron. A mi no me disgusta esa película, aunque ciertamente es algo pastelera en algún momento. Si alguien le tiene aversión al susodicho film que simplemente escuche la música, que merece la pena. Y que también oiga la obra orquestal original y compare. Para ser música culta contemporánea este tema de Bryars es muy “light”, de hecho es agradable al oído incluso si uno no ha pasado nunca por las torturas de escuchar a Schöembreg, Stockhausen, Boulez, o algunos de los mas recalcitrantes músicos de la vertiente del dodecafonismo. Digamos que está más en la línea de música con armonías exóticas y filigranas orquestales con texturas y cosas así que uno puede encontrar en temas de Ian Xenakis, aunque posiblemente mas “edulcorado”. Con todo es una música preciosa y a la altura, en mi modesta opinión, de los clásicos del romanticismo o de la parte mas “consonante” del siglo XX.

Anuncios

Etiquetas:

4 comentarios to “In Sage: the math server”

  1. Iván Says:

    No me parece de recibo que se dediquen más de tres horas a hacer cálculos explícitos en una asignatura de teoría de cuerpos a nivel licenciatura. El Sage es de lo mejor, y la idea que hay detrás también. Por ejemplo, se sabe mucho a nivel teórico de objetos como formas modulares, curvas de Shimura y Hilbert modular surfaces. Pero sin sage no habría las ingentes bases de datos que permiten soportar las conjeturas aritméticas e intuír ideas para una demostración. No tendríamos tampoco posibilidad de conocer la pinta deobjetos como operadores de Hecke. Pero a nivel licenciatura uno debe entender primero los fundamentos. Poco efectivo será que use el sage para calcular un grupo de Galois de orden tropecientos mil si no se conoce la extensión ciclotómica. Te sugiero también Magma y Pari (son más algebraicos).

  2. Satan Says:

    zas, en toda la boca

  3. Física “galáctica”: Física (y mates) en el galaxy note « Ciencia DiY Says:

    […] <a href="http://www.wolfram.com/news/android.html. Como ya dije en la entrada sobre Sage no me entusiasma wolphran alpha, y, además, sigue siendo una aplicación que requiere conexión a […]

  4. Software científico en Android: Máxima y Octave | Ciencia DiY Says:

    […] que eran unos clones restringidos de matlab. Posteriormente llegó a android una versión de Sage que permite conectar con el servidor web a través de una interfaz dedicada. También llegó matlab, […]

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


A %d blogueros les gusta esto: