如何用Matlab/Mathematica/Python求解含参四次多项式的根?
给定四次多项式方程:
$$x^4 + 4bx^3 + (a^2 + 4b^2 + l2)x2 + 2(b(a2+l2)-ml^2)x + a2l2 = 0$$
对于任意系数的情况,可通过费拉里法(通用四次方程解法)逐步推导根式解,步骤如下:
1. 消去三次项
做变量替换 $x = z - b$,将原方程转化为不含三次项的简化四次方程:
$$z^4 + (a^2 + l^2 - 2b2)z2 - 2ml^2 z + (b^4 - a2b2 - b2l2 + 2bml^2 + a2l2) = 0$$
2. 构造完全平方形式
将简化后的方程改写为:
$$(z^2 + t)^2 = (t - (a^2 + l^2 - 2b2))z2 + 2ml^2 z + (t^2 - (b^4 - a2b2 - b2l2 + 2bml^2 + a2l2))$$
其中 $t$ 为待求参数,目的是让等式右侧成为完全平方式。
3. 求解三次预解方程
对于右侧的二次式 $Az^2 + Bz + C$,要成为完全平方式需满足判别式为0:$B^2 - 4AC = 0$。代入对应系数后,得到关于 $t$ 的三次方程:
$$m2l4 = (t - a^2 - l^2 + 2b2)(t2 - b^4 + a2b2 + b2l2 - 2bml^2 - a2l2)$$
解此三次方程,得到参数 $t$ 的根(实根或复根均可)。
4. 分解为二次方程求解
将求得的 $t$ 代入步骤2的等式,右侧可写成 $(kz + n)^2$ 的形式,开平方后得到两个二次方程:
$$z^2 + t = kz + n$$
$$z^2 + t = -kz -n$$
分别求解这两个二次方程,得到 $z$ 的所有根。
5. 还原到原变量
将 $z$ 的根代入替换式 $x = z - b$,即可得到原四次方程的所有根。
内容的提问来源于stack exchange,提问作者Aditya Das

