El método se basa en un artículo de Herbert E. Salzer "Una Nota sobre la Solución de Ecuaciones de cuarto grado" (Am. De Matemáticas De La Sociedad De Procedimientos, 1959).
Supongamos que existe una ecuación de $X^4+AX^3+BX^2+CX+D=0$, reales o complejas raíces $X_1$, $X_2$, $X_3$, $X_4$.
En primer lugar, resolver la ecuación cúbica $ax^3+bx^2+cx+d$ donde $a=1$, $b=-B$, $c=AC-4D$, $d=D(4B-A^2)-C^2$; sólo 1 raíz real es necesario, llame a $x_1$.
Encontrar $m=\sqrt{\frac{1}{4}A^2-B+x_1}$, e $n=\frac{Ax_1-2C}{4m}$.
Si m=0, tome $n=\sqrt{\frac{1}{4}x_1^2-D}$.
Proceder para el caso de que yo o caso II dependiendo de si m es real o imaginario.
Caso I. $m$ es real;
Deje $\alpha=(\frac{1}{2}A^2-x_1-B)$ $\beta=4n-Am$
$\gamma=\sqrt{\alpha+\beta}$ $\delta=\sqrt{\alpha-\beta}$.
Con las notaciones anteriores
$X_1=\frac{-\frac{1}{2}A+m+\gamma}{2}$,
$X_2=\frac{-\frac{1}{2}A-m+\delta}{2}$,
$X_3=\frac{-\frac{1}{2}A+m-\gamma}{2}$,
$X_4=\frac{-\frac{1}{2}A-m-\delta}{2}$.
Caso II. $m$ es imaginario.
Tome $m=im'$, $n$ es también imaginario, tome $n=in'$;
Deje $\alpha=(\frac{1}{2}A^2-x_1-B)$ $\beta=4n'-Am'$
$\rho=\sqrt{\alpha^2+\beta^2}$, $\gamma=\sqrt{\frac{\alpha+\rho}{2}}$ y $\delta=\frac{\beta}{2\gamma}$.
A continuación,
$X_1=\frac{-\frac{1}{2}A+\gamma+i(m'+\delta)}{2}$, $X_2=\bar{X_1}$,
$X_3=\frac{-\frac{1}{2}A-\gamma+i(m'-\delta)}{2}$, $X_4=\bar{X_3}$
si $\gamma=0$$\alpha=-\alpha', \alpha'\ge 0$, y formaulae arriba todavía se mantienen siempre que $\delta$ es reemplazado por $\sqrt{\alpha'}$.
Esta solución es fácil de programar en contraposición a la tediosa fórmulas por Cardano-Ferrari.
A continuación es una función de MATLAB la producción de raíces REALES sólo (si hay alguna) basado en este método.
%devuelve r1,r2,r3,r4: REAL si las raíces son reales, CERO si el complejo
% isreal1, isreal2, isreal3, isreal4 - lógica (o bits), 1 (true) - si la raíz es real, 0 (false) - si la raíz es complejo
la función [r1, r2, r3, r4, isreal1, isreal2, isreal3, isreal4 ] = quarticsolve_salzer(a4,a3,a2,a1,a0)
%de inicialización
r1=0;
r2=0;
r3=0;
r4=0;
isreal1=0;
isreal2=0;
isreal3=0;
isreal4=0;
a=a3/a4;
b=a2/a4;
c=a1/a4;
d=a0/a4;
%En primer lugar, encontrar 1 raíz real de una ecuación cúbica
$x^3-bx^2+(ac-4d)x+d(4b-a^2)-c^2$%
x1=cubsolve_1realroot(1,-b,a*c-4*d,d*(4*b-a^2)-c^2);
%esta rutina es una versión modificada de la solución encontrada no
m2=0.25*a*a-b+x1;
si(m2)>0)
m=sqrt(0.25*a^2-b+x1);
n=(a*x1-2*c)/4/m;
elseif(m2==0)
m=0;
n=sqrt(0.25*x1^2-d);
otra cosa
%imaginary roots only
% r1,r2,r3,r4 are returned 0, isreal1,2,3,4 returned false (or 0)
de retorno;
end;
alfa=0.5*a^2-x1-b;
beta=4*n a*m;
si(alfa+beta>=0)
%dos raíces reales son producidos
gamma=sqrt(alfa+beta);
r1=-0.25*un+0.5*m+0.5*gamma;
r2=-0.25*un+0.5*m-0,5*gamma;
isreal1=1;
isreal2=1;
end;
si(alfa-beta>=0)
%otro par de raíces reales producidos
delta=sqrt(alfa-beta);
r3=-0.25*0.5*m+0.5*delta;
r4=-0.25*0.5*m-0,5*delta;
isreal3=1;
isreal4=1;
end;
de retorno;
final
la función [x1]=cubsolve_1realroot(a3,a2,a1,a0)
a=a2/a3;
b=a1/a3;
c=a0/a3;
Q=(a^2-3*b)/9;
R=(2*a^3-9*a*b+27*c)/54;
R2=R^2;
Q3=Q^3;
si (R2
A=-(abs(R)+sqrt(R2-Q3))^(1/3);
si (R < 0)
A=-A; %Si se utiliza Un=Un signo*(R), entonces, si R=0 = > (R)=0 => A=0 lo cual es incorrecto
final
si (A==0)
B=0;
otra cosa
B=Q/A;
final
AB=A+B;
x1=AB-a/3;
final