Seção 21.6 Sage
Em Sage, e outros lugares, uma extensão dos racionais se chama “corpo de números.” Os corpos de números estão entre as características mais consolidadas da Sage.
Subseção 21.6.1 Corpos de números
Existem várias formas de criar um corpo de números. Estamos familiarizados com a sintaxe donde anexamos um número irracional que possamos descrever com combinações de raízes e operações aritméticas.
Podemos também especificar o elemento que desejamos anexar como uma raíz de um polinômio irredutível. Uma possibilidade é construir primeiro o anel de polinômios de maneira que o polinômio tenha a localização de seus coeficientes determinada de forma explícita.
Invés de construir todo o anel de polinômios, podemos simplesmente introduzir uma variável como gerador de um anel de polinômios e logo criar os polinômios a partir desta variável. Isto nos libera de colocar um nome no anel de polinômios. Note que neste exemplo ambas instâncias de z
são necessárias.
Podemos recuperar o polinômio usado para definir um corpo de números, ainda que tenhamos o construído com a especificação de um elemento irracional. Neste caso, o polinômio corresponde ao polinômio minimal do elemento.
Para qualquer elemento de um corpo de números, Sage é capaz de calcular seu polinômio minimal.
Substituindo o elemento
em seu teórico polinômio minimal e obtendo 0 não é evidência suficiente para demonstrar que é realmente o polinômio minimal, mas ao menos é tranquilizador.
Subseção 21.6.2 Corpos de Números Absolutos e Relativos
Em Sage podemos anexar vários elementos de forma simultânea e podemos criar torres aninhadas de corpos de números. Sage usa o termo “absoluto” para se referir a um corpo de números como uma extensão dos racionais, e o término “relativo” para se referir a um corpo de números construédo, ou visto, como uma extensão de outro corpo de números (não trivial).
O corpo de números A
foi construído como o que escreveríamos \({\mathbb Q}\subset{\mathbb Q}[\sqrt{3}]\subset{\mathbb Q}[\sqrt{3},\sqrt{2}]\text{.}\) Notemos a ligeira diferença na ordem dos elementos anexados e notemos como os corpos de números utilizam nomes internos mais sofisticados (sqrt2
, sqrt3
) para os novos elementos.
Podemos “planificar” um corpo relativo para o ver como um corpo absoluto, o que podría ter sido nossa intenção desde o começo. Aqui criaremos um novo corpo de números a partir de A
que faz um corpo de números absolutos.
Uma vez que construímos um corpo de números absolutos desta maneira podemos fazer isomorfismos do e para o corpo absoluto. Recordemos que nossa torre foi construída por geradores a
e b
, enquanto a torre planificada é gerada por c
. O método .structure()
entrega duas funções, com o corpo absoluto como domínio e contradomínio (nesta ordem).
Isso nos diz que o gerador, c
, é igual a \(\sqrt{2}-\sqrt{3}\text{,}\) e que, tanto \(\sqrt{2}\) como \(\sqrt{3}\) podem ser expressadas como funções polinomiais de c
. Com estas conexões, te sugerimos desenvolver a mano as duas expressões finais em c
, e dessa maneira apreciar melhor o trabalho que a Sage faz ao determiná-las para nós. Este cálculo é um exemplo da conclusão do Teorema 23.1.12 que vem na continuação.
Muitos ds métodos para corpos de números tem tanto uma versão absoluta como uma relativa e nós acharemos mais conveniente trbalhar numa torre ou numa versão planificada dela, de forma que os isomorfismos entre as duas possam ser avaliadas por traduzir ambas perguntas e respostas.
Como o espaço vetorial sobre \({\mathbb Q}\text{,}\) ou sobre outro corpo de números, os corpos de números são extensões finitas e tem uma dimensão, chamada grau. Esses graus são fáceis de se obter em Sage, ainda que no caso de corpos relativos deveremos ser mais precisos sobre qual é o grau buscado.
Subseção 21.6.3 Corpos de decomposição
Aqui temos um exemplo concreto de como usar Sage para construir o corpo de decomposição de um polinômio. Consideremos \(p(x)=x^4+x^2-1\text{.}\) Primeiro construiremos um corpo de números com uma raiz, para depois fatorar o polinômio sobre este novo corpo.
Assim nosso polinômio se fatora parcialmente em dois fatores lineares e um quadrático. Mas notemos que o fator quadrático tem um coeficiente irracional, \(a^2+1\text{,}\) de maneira que o fator quadrático pertence estritamente ao anel de polinômios sobre M
e não sobre QQ
.
Construiremos uma extensão que contenha uma raiz do fator quadrático, chamado q
neste caso. Então, no lugar de usar a função polygen()
, construiremos um anel de polinômios R
sobre N
com a variável z
. A razão de fazer esto é que podemos ilustrar como “evoluir” o polinômio p
com a sintaxe R(p)
para passar de ter coeficientes em M
e começar a tê-los em N
.
Assim teremos um corpo, N
, em que nosso polinômio se fatora com todos seus fatores lineares. Podemos obter outra fatoração convertendo N
em um corpo absoluto e fatorando aí. Necessitaremos recriar o polinômio sobre N
, pois uma substituição levaria elementos do anel equivocado.
Esta é uma alternativa interessante, naquilo que as raízes do polinômio são expressões polinomiais em termo de um sé gerador c
. Como as raízes envolvem potências sétimas de c
, podemos suspeitar (mas não estar certo) que o polinômio minimal de c
tem grau \(8\) e que P
é uma extensão de grau \(8\) dos racionais. De fato P
(ou N
) é um corpo de decomposição para \(p(x)=x^4+x^2-1\text{.}\) Suas raízes não são realmente tão horríveis como parecem — vamos devolvê-las ao corpo relativo.
Primero queremos reescrever um fator (o primeiro) na forma \((w-r)\) para identificar a raiz com os signos corretos.
Com os isomorfismos convertidos podemos reconhecer as raízes pelo que elas são.
Assim a expressão complicada em termos de c
é simplesmente o oposto da raiz anexada no segundo passo da construção da torre de corpos de números. Seria um bom exercício ver o que acontece com as outras três raízes ( tendo cuidade de escrever corretamente os sinais em cada uma delas).
Esta é uma boa oportunidade para ilustrar o Teorema 21.1.17.
Subseção 21.6.4 Números Algébricos
O Corolário 21.1.24 diz que o conjunto de todos os números algébricos forma um corpo. Este corpo está implementado na Sage como QQbar
. Isto permite encontrar raízes de polinômios como números exatos que se mostram como aproximações.
Assim tendo pedido pelas raízes de um polimônio com coeficientes racionais, especificando que queremos qualquer raiz que possa estar fora dos racionais e dentro do corpo dos algébricos. Como o corpo dos números algébricos contém todas as raízes, obtemos as quatro raízes do polinômio de grau quatro. Estas raízes estão calculadas de maneira a estar em um intervalo e o sinal de interrogação indica que os dígitos anteriores são corretos. (Os inteiros que seguem a cada uma das raízes, indicam a multiplicidade com que essas raízes ocorrem. Use a opção multiplicities=False
para que essa informação não apareça.) Vamos dar uma olhada em como a Sage trabalha com o corpo dos números algébricos.
Três coisas estão associadas com esta primeira raiz. Em primeiro lugar um corpo de números, com gerador a
e um polinômio similar mas não idêntico ao polinômio do qual estamos buscando as raízes. Em segundo lugar exite uma expressão no gerador a
, que representa a raiz específica. Neste caso, a expressão é simples, mas poderia ser mais complicada em outros exemplos. Finalmente, existe um homomorfismo do corpo dos números ao “Algebraic Real Field”, AA
, que é o subcorpo de QQbar
que contém solmente números reais, que associa o gerador a
com o número -0.7861513777574233?
. Verifiquemos, de duas formas diferentes, que a raiz dada realmente é uma raiz.
Agora que temos teoria suficiente para entender o corpo dos números algébricos e uma forma natural de representá-los de forma exata, podemos considerar as operações no corpo. Se tomamos os números algébricos e os somamos, obtemos outro número algébrico (Corolário 21.1.24). Então, qual é o polinômio minimal resultante? Como se obtém em Sage? Você pode ler o código fonte se estiver interessados na resposta.
Subseção 21.6.5 Construções geométricas
Sage pode fazer muitos coisas, mas ainda não é capaz de traçar retas com régua e compasso. No entanto, podemos rapidamente determinar que tressecar um ângulo de \(60\) grau é impossível. Anexamos o cosseno de um ângulo de \(20\) graus (em radianos) aos racionais, determinamos o grau da extensão, e verificamos que não é uma potência inteira de \(2\text{.}\) Tudo em uma linha. Ótimo!