PlanetMath (more info)
 Math for the people, by the people. Sponsor PlanetMath
Encyclopedia | Requests | Forums | Docs | Wiki | Random | RSS  
Login
create new user
name:
pass:
forget your password?
Main Menu
[parent] Viewing Message
``computer solution'' by ayjara on 2007-04-25 10:04:37
Hi,

"The formulas for the roots are much too unwieldy to be used for solving quartic equations by radicals, even with the help of a computer."

I think we could compute the roots almost "easily" which this procedure:

%%%% begin MATLAB code %%%%
a3 = a;
a2 = b;
a1 = c;
a0 = d;

T1 = -a3/4;
T2 = a2^2 - 3*a3*a1 + 12*a0;
T3 = (2*a2^3 - 9*a3*a2*a1 + 27*a1^2 + 27*a3^2*a0 - 72*a2*a0)/2;
T4 = (-a3^3 + 4*a3*a2 - 8*a1)/32;
T5 = (3*a3^2 - 8*a2)/48;

R1 = sqrt(T3^2 - T2^3);
R2 = cubic_root(T3 + R1);
R3 = (1/12)*(T2/R2 + R2);
R4 = sqrt(T5 + R3);
R5 = 2*T5 - R3;
R6 = T4/R4;

r1 = T1 - R4 - sqrt(R5 - R6);
r2 = T1 - R4 + sqrt(R5 - R6);
r3 = T1 + R4 - sqrt(R5 + R6);
r4 = T1 + R4 + sqrt(R5 + R6);
%%%% end MATLAB code %%%

I does some tests and I think this code is correct.
My (not ease) job was to extract the Ts and Rs from your set of equations...

The cubic_root function must be

%%%% MATLAB code %%%
function v = cubic_root(u)
if imag(u) == 0 & real(u) < 0
 v = -(abs(u)^(1/3));
else
 v = u^(1/3);
end
%%%% end MATLAB code %%%

I think this may be helpful.

Regards,
Adalberto Ayjara Dornelles Filho
Caxias do Sul, Brasil
 
[ reply | up ]

Interact
reply