改用维基教科书上的公式写成代码如下:
TrigSolve =
Module[{L, Q, R, \[CapitalDelta], \[Theta]},
L = CoefficientList[#1, #2]; {c, b, a} = Delete[L/L[[4]], 4];
Q = (3 b - a^2)/9;
R = (9 a b - 27 c - 2 a^3)/54; \[CapitalDelta] =
Q^3 + R^2; \[Theta] = ArcCos[R/Sqrt[-Q^3]];
2 Sqrt[-Q] Cos[\[Theta]/3 + 2 Pi/3 {0, 1, 2}] - a/3] &;
再测试2#的例子,这回都是0,说明公式在方程有两个虚根时仍然适用. |