Корни SAGE на корневом поле

Я хочу найти корни многочлена в конечном поле. Итак, я вычисляю следующее:

sage: R.<x>=PolynomialRing(GF(9,'a'))
sage: f=x^3+2*x+1
sage: K.<alpha>=f.root_field()
sage: f.roots(ring=K)

Но он не работает, он показывает мне эту ошибку:

ValueError: factorization of 0 not defined

И я не могу найти, что происходит. Может ли кто-нибудь помочь мне с этим?


person Xavier Tapia Gonzalez    schedule 30.03.2015    source источник
comment
Каков результат для K? Или ошибка уже на этом шаге?   -  person Lutz Lehmann    schedule 30.03.2015


Ответы (2)


Sage на самом деле не поддерживает относительные расширения конечных полей. (Было бы хорошо, если бы это было так, но это не так -- кто-нибудь, добавьте эту функциональность, пожалуйста.) Можно найти корни, по крайней мере, в абсолютном поле, следующим образом:

F.<alpha> = GF(3^6)
R.<x> = PolynomialRing(F)
f = x^3+2*x+1
f.roots()

Это выводит:

  [(2*alpha^5 + 2*alpha^4, 1), (2*alpha^5 + 2*alpha^4 + 2, 1), (2*alpha^5 + 2*alpha^4 + 1, 1)]

https://cloud.sagemath.com/projects/4a5f0542-5873-4eed-a85c-a18c706e8bcd/files/support/2015-03-30-112034-root-stack-overflow.sagews

person William Stein    schedule 30.03.2015
comment
Хорошо, большое спасибо, это действительно сработало для меня. Что мне нужно, так это работать с расширениями, группами Галуа, дискриминантами ... поэтому мне действительно нужны не типичные примеры (рациональные и комплексные), поэтому я нахожу примеры как конечные поля. - person Xavier Tapia Gonzalez; 09.04.2015

Магма говорит мне

> G<a>:=GaloisField(9);
> P<x>:=PolynomialRing(G);
> p:=x^3+2*x+1;
> Roots(p);
[]
Q<z>:=SplittingField(p); Q;
Finite field of size 3^6
> Roots(p,Q);
[ <z^28, 1>, <z^84, 1>, <z^252, 1> ]

так что видимо проблема либо в вызове с ring=K либо в реализации sage. Есть ли пример, когда ваша последовательность команд работает безупречно?

person Lutz Lehmann    schedule 30.03.2015