如何用枫树分解这个三阶多项式

How to factorize this 3rd order polynomial with maple

maple 有一些行为,我不明白。假设我想分解多项式 1-z-z^3,所以我使用

计算它的根
z0 := solve(1-z-z^3=0,z);

给出(只是为了完整性...)

z0 := 1/6*(108+12*93^(1/2))^(1/3)-2/(108+12*93^(1/2))^(1/3), -1/12*(108+12*93^(1/2))^(1/3)+1/(108+12*93^(1/2))^(1/3)+1/2*I*3^(1/2)*(1/6*(108+12*93^(1/2))^(1/3)+2/(108+12*93^(1/2))^(1/3)), -1/12*(108+12*93^(1/2))^(1/3)+1/(108+12*93^(1/2))^(1/3)-1/2*I*3^(1/2)*(1/6*(108+12*93^(1/2))^(1/3)+2/(108+12*93^(1/2))^(1/3))

现在,如果我尝试分解第一个根,

factor(1-z-z^3,z0[1]);

我得到

Error, (in factor) 2nd argument, 1/6*(108+12*93^(1/2))^(1/3)-2/(108+12*93^(1/2))^(1/3), 
is not a valid algebraic extension

这是什么意思?这是一个错误,还是 z0[1] 的表达式太复杂了?如果第二个为真,那么分解阶多项式(例如 3 到 4)的更好做法是什么?

问题是 Maple 想要,特别是 RootOf 或有理幂表达式,或它们的集合,作为它的第二个参数。例如,

factor(x^2-2, 1+sqrt(2))

将不起作用,而

factor(x^2-2, sqrt(2))

确实如此。同样,在您的示例中,您将希望从您解决的表达式中提取理性力量。您可以按如下方式进行:

factor(1-z-z^3, indets(z0[1], anything^And(rational, Non(integer))))

或者可能不那么做作:

with_rootof := convert(z0[1], RootOf);
factor(1-z-z^3, indets(with_rootof, specfunc(RootOf)));