话不多说,直接上代码!(只是片段,参数请自行撮合)
var a, b, c, ld, rd,x1, x2, x3, x2_real, x2_virtual, x3_real, x3_virtual //ax^3 + bx^2 + cx + ld = rd
//盛金公式
threecalculation: function() {
var d = ld - rd; //移项使得右边为零
var A = b * b - 3 * a * c;
var B = b * c - 9 * a * d;
var C = c * c - 3 * b * d; //三个重根判别式
var detal = B * B - 4 * A * C; //总判别式
if (A == 0 && B == 0) {
x1 = -c / b;
x2 = -b / (3 * a);
x3 = -3 * d / c;
} else if (detal > 0) {
var X1 = A * b + 3 * a * (1 / 2 * (-B + Math.sqrt(delta)));
var X2 = A * b + 3 * a * (1 / 2 * (-B - Math.sqrt(delta)));
//负数开立方会返回Null,所以要做一下操作
if (X1 >= 0) {
var Y1 = Math.pow(X1, 1 / 3);
} else {
var Y1 = - Math.pow(-X1, 1 / 3);
}
if (X2 >= 0) {
var Y2 = Math.pow(X2, 1 / 3);
} el