Saltar a contenido principal

Sección 21.6 Sage

En Sage, y otros lugares, una extensión de los racionales se llama “cuerpo de números.” Los cuerpos de números están entre la características más consolidadas de Sage.

Subsección 21.6.1 Cuerpos de números

Hay varias formas de crear un cuerpo de números. Estamos familiarizados con la sintaxis donde adjuntamos un número irracional que podamos describir con combinaciones de raíces y operaciones aritméticas.

Podemos también especificar el elemento que deseamos adjuntar como una raíz de un polinomio irreducible. Una posibilidad es construir primero el anillo de polinomios de manera que el polinomio tenga la ubicación de sus coeficientes determinada de forma explícita.

En lugar de construir todo el anillo de polinomios, podemos simplemente introducir una variable como el generador de un anillo de polinomios y luego crear los polinomios a partir de esta variable. Esto nos libera de ponerle un nombre al anillo de polinomios. Note que en este ejemplo ambas instancias de z son necesarias.

Podemos recuperar el polinomio usado para definir un cuerpo de números, incluso si fue construido con la especificación de un elemento irracional. En este caso, el polinomio corresponde al polinomio minimal del elemento.

Para cualquier elemento de un cuerpo de números, Sage es capaz de calcular su polinomio minimal.

Reemplazar el elemento en su presunto polinomio minimal y obtener 0 no es evidencia suficiente para demostrar que es realmente el polinomio minimal, pero al menos es tranquilizador.

Subsección 21.6.2 Cuerpos de Números Absolutos y Relativos

En Sage podemos adjuntar varios elementos de forma simultánea y podemos crear torres anidadas de cuerpos de números. Sage usa el término “absoluto” para referirse a un cuerpo de números como una extensión de los racionales, y el término “relativo” para referirse a un cuerpo de números construido, o visto, como una extensión de otro cuerpo de números (no trivial).

El cuerpo de números A fue construido como lo que escribiríamos \({\mathbb Q}\subset{\mathbb Q}[\sqrt{3}]\subset{\mathbb Q}[\sqrt{3},\sqrt{2}]\text{.}\) Notemos la ligera diferencia en el orden de los elementos adjuntados, y notemos como los cuerpos de números utilizan nombres internos algo más sofisticados (sqrt2, sqrt3) para los nuevos elementos.

Podemos “aplanar” un cuerpo relativo para verlo como un cuerpo absoluto, lo que podría haber sido nuestra intención desde el comienzo. Aquí crearemos un nuevo cuerpo de números a partir de A que lo hace un cuerpo de números absoluto.

Una vez que construimos un cuerpo de números absoluto de esta manera, podemos recuperar isomorfismos hacia y desde el cuerpo absoluto. Recordemos que nuestra torre fue construida por generadores a y b, mientras la torre aplanada es generada por c. El método .structure() entrega dos funciones, con el cuerpo absoluto como dominio y codominio (en este orden).

Esto nos dice que el generador, c, es igual a \(\sqrt{2}-\sqrt{3}\text{,}\) y que, tanto \(\sqrt{2}\) como \(\sqrt{3}\) pueden ser expresadas como funciones polinomiales de c. Con estas conexiones, le sugerimos desarrollar a mano las dos expresiones finales en c, y de esa manera apreciar mejor el trabajo que Sage hace al determinarlas por nosotros. Este cálculo es un ejemplo de la conclusión del Teorema 23.1.12 que viene a continuación.

Muchos de los métodos para cuerpos de números tienen tanto una versión absoluta como una relativa, y según lo que queramos hacer, será más cómodo trabajar en la torre o en la versión plana, de manera que los isomorfismos entre ambas serán de gran valor para traducir tanto las preguntas como las respuestas.

Como espacio vectorial sobre \({\mathbb Q}\text{,}\) o sobre otro cuerpo de números, los cuerpos de números son extensiones finitas y tienen una dimensión, llamada grado. Estos grados son fáciles de obtener en Sage, aunque en el caso de cuerpos relativos deberemos ser más precisos sobre cuál es el grado buscado.

Subsección 21.6.3 Cuerpos de descomposición

Acá hay un ejemplo concreto de cómo usar Sage para construir el cuerpo de descomposición de un polinomio. Consideremos \(p(x)=x^4+x^2-1\text{.}\) Primero construiremos un cuerpo de números con una raíz, para luego factorizar el polinomio sobre este nuevo cuerpo.

Así nuestro polinomio se factoriza parcialmente en dos factores lineales y uno cuadrático. Pero notemos que el factor cuadrático tiene un coeficiente irracional, \(a^2+1\text{,}\) de manera que el factor cuadrático pertenece estrictamente al anillo de polinomios sobre M y no sobre QQ.

Construiremos una extensión que contenga una raíz del factor cuadrático, lamado q acá. Entonces, en lugar de usar la función polygen(), construiremos todo un anillo de polinomios R sobre N con la variable z. La razón para hacer esto es que podemos ilustrar como “subir” el polinomio p con la sintaxis R(p) para pasar de tener coeficientes en M a tenerlos en N.

Así tenemos un cuerpo, N, en el que nuestro polinomio se factoriza con todos sus factores lineales. Podemos obtener otra factorización convirtiendo N en un cuerpo absoluto y factorizando ahí. Necesitaremos recrear el polinomio sobre N, pues una sustitución llevaría elementos del anillo equivocado.

Esta es una alternativa interesante, en tanto que las raíces del polinomio son expresiones polinomiales en términos de un solo generador c. Como las raíces involucran potencias séptimas de c, podemos sospechar (pero no estar seguros) que el polinomio minimal de c tiene grado \(8\) y que P es una extensión de grado \(8\) de los racionales. De hecho P (o N) es un cuerpo de descomposición para \(p(x)=x^4+x^2-1\text{.}\) Sus raíces no son realmente tan horribles como parecen — devolvámoslas al cuerpo relativo.

Primero queremos reescribir un factor (el primero) en la forma \((w-r)\) para identificar la raíz con los signos correctos.

Con los isomorfismos de conversión, podemos reconocer las raíces por lo que son.

Así la expresión complicada en términos de c es simplemente el opuesto de la raíz adjuntada en el segundo paso de la construcción de la torre de cuerpos de números. Sería un buen ejercicio ver lo que le pasa a las otras tres raíces (teniendo cuidado de escribir correctamente los signos para cada raíz).

Esta es una buena oportunidad para ilustrar el Teorema 21.1.17.

Subsección 21.6.4 Números Algebraicos

El Corolario 21.1.24 dice que el conjunto de todos los números algebraicos forma un cuerpo. Este cuerpo está implementado en Sage como QQbar. Esto permite encontrar raíces de polinomios como números exactos que se muestran como aproximaciones.

Así hemos pedido las raíces de un polinomio con coeficientes racionales, especificando que queremos cualquier raíz que pudiera estar fuera de los racionales y dentro del cuerpo de los algebraicos. Como el cuerpo de los números algebraicos contiene todas estas raíces, obtenemos las cuatro raíces del polinomio de grado cuatro. Estas raíces están calculadas de manera de estar en un intervalo y el signo de interrogación indica que los dígitos anteriores son correctos. (Los enteros que siguen a cada una de las raíces, indican la multiplicidad con que ocurre esa raíz. Use la opción multiplicities=False para que no aparezcan.) Veamos tras bambalinas como Sage se las arregla con el cuerpo de números algebraicos.

Tres cosas están asociadas con esta primera raíz. En primer lugar un cuerpo de números, con generador a y un polinomio similar pero no idéntico al polinomio del cual estamos buscando las raíces. En segundo lugar hay una expresión en el generador a, que representa la raíz específica. En este caso, la expresión es simple, pero podría ser más complicada en otros ejemplos. Finalmente, hay un homomorfismo del cuerpo de números al “Algebraic Real Field”, AA, que es el subcuerpo de QQbar que contiene solamente números reales, que asocia al generador a con el número -0.7861513777574233?. Verifiquemos, de dos formas diferentes, que la raíz dada realmente es una raíz.

Ahora que tenemos suficiente teoría para entender el cuerpo de los números algebraicos, y una forma natural de representarlos de forma exacta, podemos considerar las operaciones en el cuerpo. Si tomamos dos números algebraicos y los sumamos, obtenemos otro número algebraico (Corolario 21.1.24). ¿Cuál es entonces el polinomio minimal resultante? ¿Cómo se obtiene en Sage? Podríamos leer el código fuente si estamos interesados en la respuesta.

Subsección 21.6.5 Construcciones geométricas

Sage puede hacer muchas cosas, pero aún no es capaz de trazar rectas con regla y compás. Sin embargo, podemos rápidamente determinar que trisectar un ángulo de \(60\) grados es imposible. Adjuntamos el coseno de un ángulo de \(20\) grados (en radianes) a los racionales, determinamos el grado de la exensión, y verificamos que no es una potencia entera de \(2\text{.}\) Todo en una línea. Bien!