Sagemath:是否有一种简单的方法来分解 C 上的多项式并让根以根式而不是小数形式出现?

Sagemath: Is there a simple way to factor a polynomial over C & have the roots appear in radical instead of decimal form?

在 Mathematica 中,如果我执行以下操作

Roots[x^3 - 2 == 0, x]

我明白了

x=(-1)^(2/3) 2^(1/3) || x=(-2)^(1/3) || x = 2^(1/3)

我想在 Sagemath 中做类似的事情

sage: F1.<x> = PolynomialRing(CC)
sage: f=x^3 - 2
sage: f.roots()
[(1.25992104989487, 1),
 (-0.629960524947437 - 1.09112363597172*I, 1),
 (-0.629960524947437 + 1.09112363597172*I, 1)]

在 sagemath 中有没有办法将其视为部首或 ^(1/n) 或类似的东西?

您是否需要在复杂的多项式环内进行此计算?我不是计算机代数方面的专家,我确​​定我过于简单化了,但我相信这是这种行为的根源; Sage 将复数视为不精确的字段,这意味着它将 a+b*I 中的系数 ab 存储为(默认 53 位)浮点数而不是符号常量。基本上,您要求的是类型错误,在 ComplexField(或 ComplexDoubleField 或可能是任何不精确的字段)上定义的任何对象都将浮点数作为其系数。另一方面,符号环中的相应行为(令牌 x 默认存在)似乎正是您要寻找的;更具体地说,评估 var("t"); solve(t^3-2==0,t) returns [t == 1/2*I*sqrt(3)*2^(1/3) - 1/2*2^(1/3), t == -1/2*I*sqrt(3)*2^(1/3) - 1/2*2^(1/3), t == 2^(1/3)].