[skip-to-content]
\(\newcommand{\identity}{\mathrm{id}} \newcommand{\notdivide}{{\not{\mid}}} \newcommand{\notsubset}{\not\subset} \newcommand{\lcm}{\operatorname{lcm}} \newcommand{\gf}{\operatorname{GF}} \newcommand{\inn}{\operatorname{Inn}} \newcommand{\aut}{\operatorname{Aut}} \newcommand{\Hom}{\operatorname{Hom}} \newcommand{\cis}{\operatorname{cis}} \newcommand{\chr}{\operatorname{char}} \newcommand{\Null}{\operatorname{Null}} \renewcommand{\gcd}{\operatorname{mcd}} \renewcommand{\lcm}{\operatorname{mcm}} \renewcommand{\deg}{\operatorname{gr}} \newcommand{\lt}{<} \newcommand{\gt}{>} \newcommand{\amp}{&} \)

Sección1.5Sage

Sage es un sistema poderoso para estudiar y explorar diversas áreas de las matemáticas. En este libro, se estudia una variedad de estructuras algebraicas, tales como grupos, anillos y cuerpos. Sage tiene excelentes implementaciones de muchas propiedades de estos objetos como veremos en lo capítulos que vienen. Pero acá y ahora, en este capítulo inicial, nos concentraremos en unas pocas cosas generales para sacarle el mayor provecho posible a Sage.

Usted puede usar Sage de varias formas diferentes. Lo puede usar como un programa de línea de comando si está instalado en su computador, o a través de una aplicación web como SageMathCloud. Este texto supondrá que lo está leyendo como una hoja de cálculo dentro de un Notebook Sage (una interfaz de navegador web), o que esta es una sección del libro completo presentado como páginas web, y usted está usando el Servidor de Sage Cell Server via esas páginas. Después de los primero capítulos las explicaciones debiesen ser igualmente válidas sin importar cómo esté ejecutando los comandos Sage.

SubsecciónEjecutando Comandos Sage

Su principal interacción será escribir comandos Sage dentro de una celda de cálculo. Si está leyendo esto dentro de un Notebook Sage o en la versión web del libro, entonces encontrará una celda de cálculo justo debajo de este párrafo. Pinche una vez dentro de la celda y si está en un Notebook Sage, obtendrá un borde más dintintivo alrededor, y un cursor parpadeante en el interior, además de un enlace “evaluate” debajo.

Escriba 2+2 y pinche en el enlace de evaluación. ¿Apareció un 4 debajo de la celda? Si es así, ha tenido éxito en enviar un comando a Sage para su evaluación y ha recibido la respuesta (correcta).

Acá hay otra celda de cálculo. Intente evaluar el comando factorial(300).

Hmmmmm. ¡Ese es un entero grande! El resultado debiese tener 615 dígitos en total. Puede que deba usar la barra de navegación para verlo completo o que aparezca cortado y con diagonales al final de cada línea (éstas indican la continuación en la línea siguiente).

Para hacer nuevas celdas de cálculo en el Notebook Sage (solo ahí), pase con el mouse justo arriba de otra celda de cálculo o justo debajo de una celda de salida. Cuando vea una delgada barra azul, pinche y se abrirá una nueva celda lista para ser usada. Note que su hoja de trabajo recordará todas las operaciones que realice, en el orden en que las realice, sin importar dónde estén las celdas por lo que es mejor mantener el orden y agregar celdas abajo.

Intente situar el cursor justo debajo del enorme número que obtuvo para \(300!\) Pinche en la barra azul (no funciona en la versión web del libro) y haga otro cálculo en la nueva celda de cálculo.

Cada celda de cálculo solo mostrará la salida del último comando en la celda. Intente predecir la salida de la siguiente celda antes de ejecutarla.

La siguiente celda de cálculo no producirá nada visible pues el único comando no produce salida. Pero tendrá un efecto, como puede apreciar cuando ejecute la celda siguiente. Note como se usa el valor de b de arriba. Ejecute esta celda una vez. Exactamente una vez. Aunque parezca no hacer nada. Si la ejecuta dos veces, no nos hacemos responsables de lo que pueda suceder.

Ahora ejecute esta celda, la que sí producirá una salida.

Así b comenzó su existencia como 6. A continuación le restamos \(10\text{.}\) En una celda posterior le sumamos 50. Esto suponiendo que ejecutó la celda exactamente una vez! En la última celda creamos b+20 (pero no guardamos el resultado) y es ese valor (\(66\)) el que se mostró, mientras b aún vale \(46\text{.}\)

Puede combinar varios comandos en una línea separándolos por punto y coma (;). Esto se puede usar para obtener múltiples salidas de una solo celda. La sintaxis para construir una matriz debiera ser bastante clara cuando vea el resultado, pero si no lo es, no se preocupe, por ahora no es importante.

SubsecciónAyuda Inmediata

Algunos comandos en Sage son “funciones,” un ejemplo es factorial() ariba. Otros comandos son “métodos” de un objeto y son características del objeto, un ejemplo .inverse() como un método de una matriz. Una vez que sabe como crear un objeto (como una matriz), entonces es fácil ver todos los métodos disponibles. Escriba el nombre del objeto seguido de un punto y presione la tecla TAB. Esto lamentablemente no parece funcionar en la versión web del libro.

Para obtener ayuda en cómo usar un método con un objeto, escriba su nombre después del punto (sin paéntesis) seguido de un signo de interrogación y presione TAB (o evalúe la celda). (Presione la tecla de escape “ESC” para sacar la lista, o presione en el texto para un método.)

Con un segundo signo de interrogación es posible ver las instrucciones programadas en Sage que hacen que el método funcione:

Vale la pena ver lo que hace Sage cuando hay un error. Seguramente le tocará ver un buen número de estos, e inicialmente pueden resultar bastante intimidantes. Pero con el tiempo, los podrá entender y usar efectivamente, además de ojalá verlos con menos frecuencia. Ejecute la celda de abajo, pide el inverso de una matriz que no es invertible.

Si está en una celda de un Notebook Sage, verá una versión abreviada del error. Pinchar a la izquierda de éste aumenta el detalle desplegado y pinchando nuevamente desaparece por completo. Finalmente pinchando una tercera vez se vuelve al mensaje abreviado. Lea la parte final del error primero, esa puede ser la mejor explicación. Acá el error ZeroDivisionError no es 100% apropiado, pero se acerca. La matriz no es invertible o equivalentemente su determinante es cero por lo que en algún punto Sage intentó dividir por cero. El resto del mensaje comienza con la parte de su código que dio origen al error, seguida de los comandos y funciones intermedias ejecutadas hasta el punto preciso donde se produjo el problema. A veces esta información le dará algunas pistas, otras veces será completamente indescifrable. No se deje asustar si parece misterioso, pero recuerde que conviene leer la última línea primero, después volver atrás y leer las primeras líneas para buscar algo que se parezca a lo que escribió usted.

SubsecciónComentando su Trabajo

Es fácil comentar el trabajo cuando está usando un Notebook Sage. (Lo siguiente solo es válido en ese contexto. Puede abrir un Notebook Sage y experimentar allí.) Es posible obtener un pequeño procesador de texto en otra celda entre las celdas de cálculo. Una forma de hacer que aparezca es pinchar en a barra azul mencionada antes, pero presionando simultáneamente la tecla SHIFT. Experimente con tipos de letra, colores, listas, etc y luego presione “Save changes” para guardar y salir. Pinche doble en su texto si necesita volver a editarlo.

Apra el procesador de texto nuevamente para escribir algo. Escriba lo siguiente exactamente,

Teorema de Pitágoras: $c^2=a^2+b^2$

y guarde los cambios. Los símbolos entre los signos pesos se interpretan de acuerdo al lenguaje conocido como o — puede navegar internet para aprender sobre esta útil herramienta. (Al menos entre matemáticos y físicos es muy popular.)

SubsecciónListas

Gran parte de nuestra interacción con conjuntos será por medio de listas Sage. Estas no son realmente conjuntos — permiten duplicados, y el orden de los elementos es relevante. Pero se parecen a los conjuntos, y son muy poderosas de manera que las usaremos a menudo. Empezaremos con una lista inventada para practicar, las cremillas significan que los elementos son de texto, sin significado especial. Ejecute estas celdas en la medida que avanzamos.

Los corchetes definen los límites de la lista, comas separan sus elementos, y le podemos asignar un nombre a la lista. Para trabajar con un elemento de la lista, usamos el nombre y un par de corchetes conteniendo un índice. Note que las listas usan índices que comienzan a enumerar desde cero. Esto parece extraño al principio, pero se acostumbrará.

Podemos agregar un nuevo animal al zoológico, se sitúa al final.

Podemos sacar a un criatura.

Podemos extraer una sublista. Acá comenzamos con el elemento 1 (elephant) y continuamos hasta, pero sin incluirlo, el elemento 3 (beetle). Nuevamente un poco extraño, pero parecerá natural a la larga. Por ahora, note que estamos extrayendo dos elementos de la lista, exactamente \(3-1=2\) elementos.

Querremos saber si dos listas son iguales, o si los conjuntos que representan lo son. Para lograrlo tendremos que ordenar las listas primero. La función sorted crea una nueva lista ordenada, sin alterar la lista original. Guardamos la nueva lista con otro nombre.

Note que si ejecuta esta última celda su zoológico habrá cambiado y algunos comandos no necesariamente se ejecutarán de la misma forma. Si quiere experimentar, vuelva a la creación original del zoo y ejecute las celdas nuevamente con un zoo renovado.

Una construcción llamada list comprehension (no he encontrado una buena traducción) es muy poderosa, especialmente dado que imita casi exactamente la notación que usamos para describir conjuntos. Supongamos que queremos formar los plurales de los nombres de las criaturas en nuestro zoo. Construimos una nueva lista, basada en todos los elementos de nuestra lista anterior.

Casi como dice: agregamos una “s” al nombre de cada animal, para cada animal en el zoo, y los ponemos en una nueva lista. Perfecto. (Excepto que el plural de “ostrich” está mal.)

SubsecciónListas de Enteros

Un tipo final de lista, con números esta vez. La función srange() creará una lista de enteros. (La “s” en el nombre se refiere a “Sage” y producirá enteros óptimos para Sage. Muchas de las dificultades iniciales con Sage y teoría de grupos pueden ser aliviadas con solo usar este comando para crear listas de enteros.) En su formal más simple, srange(12) creará una lista de 12 enteros, empezando de cero y llegando hasta 11. ¿Suena familiar?

A continuación dos formas adicionales que entenderá estudiando los ejemplos.

SubsecciónGuardando y Compartiendo su Trabajo

Hay un botón “Save” en la esquina superior derecha del Notebook Sage. Pinchar en él guardará su trabajo de manera que pueda recuperarlo desde el notebook Sage en una ocasión futura, sin embargo deberá volver a ejecutar todas las celdas cuando reabra su hoja de trabajo.

También hay un menú que se despliega donde dice “File”, a la izquierda, justo arriba de la primera celda de cálculo (no lo confunda con el menú de su navegador). Verá una opción acá etiquetada “Save worksheet to a file...” Cuando haga esto, creará una copia de su hoja de trabajo en el formato sws (abreviación de “Sage WorkSheet”). Puede enviar este archivo por email, o publicarlo en una página web, para que otros usuarios lo vean y lo suban usando el enlace “Upload” en su propio notebook incorporando una copia de su hoja de trabajo en el notebook de ellos.

Hay otras formas de compartir hojas de trabajo con las que puede experimentar, pero esto le da una manera de compartir con cualquier persona.

Hemos visto bastantes cosas en esta sección, así es que vuelva más adelante a repasar y descubrir detalles que no haya notado. Hay muchas otras características del Notebok Sage que no hemos cubierto acá.