SAGE根源于根域

时间:2015-03-30 13:37:19

标签: math 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

我无法找到正在发生的事情。 有人可以帮我吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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的调用或执行sage时存在问题。有没有一个例子,你的命令序列完美无缺?