2015-03-30 1 views
2

Я хочу найти корни полинома под конечным полем. Поэтому я computate, что следующим образом:Корни 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 

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

+0

Какой выход для 'k'? Или это ошибка уже на этом этапе? – LutzL

ответ

0

Magma говорит мне

> 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 или в осуществлении шалфея. Есть ли пример, когда ваша последовательность команд работает безупречно?

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

+0

Хорошо, спасибо, очень поработал для меня. Мне нужно работать с расширениями, группами Галуа, дискриминаторами ... поэтому мне действительно нужны не типичные примеры (рациональные и комплексные), поэтому я ребрик для примеров как конечные поля. –