我想在有限域下找到多项式的根。所以我计算了下面的内容:
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 :(得分: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)]
答案 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时存在问题。有没有一个例子,你的命令序列完美无缺?