¿Cómo programar raíz cubica en Matlab o Pseint?

Tengo el el siguiente problema que tenemos que resolver en Matlab o Pseint

Ax^3  +  bx^2 + cx +  d  =  0 

Determinar en pseint  las tres raíces _utilizando la formula algebraica :  

  1. Tres raíces distintas.     tres raíces iguales.       C.  raíz real  e imaginaria.

X 1  = X 2 = X 3 ,  raíces  iguales;     X1, X2  y  X3  son raíces distintas;

X1 = 3 + 2i  ; X2 = 5 + 3i,  X3 = 4 -  3   raíces  real  e  imaginaria ; x1 = 3  parte  real

2i =  parte imaginaria

X^2  = - b +- sqrt (b^2 – 4*a*c ) / 2*a

Sqrt (b^2 – 4*a*c ) > 0  raices distintas

Sqrt (b^2  - 4*a*c ) = 0  raices iguales

Sqrt ( b^2 – 4*a*c ) < 0  raices real  e  imaginaria

                                          Sqrt = raíz  cuadrada.

Y bueno lo siguiente es lo mismo pero más detallado para desarrollar el código en programación

  1. Calcular discriminante

Ax^3 + bx^2 + cx + d = 0

  1. Calcular p  y  q

P = (3*c/a – (b/a)^2)/3

q =  (2*(b/a)^3 – a*b*c/a/a + 27*d/a)/27

  1. Calcular el discriminante

D = (p/3)^3 + (q/2)^2

  1. Dependiendo del valor de DE haga las diferencias

Si D < 0 tiene tres raíces distintas

Si  D = 0  tiene tres  raíces reales de las cuales dos son iguales

Si  D > o tiene una raíz real y dos raíces complejas

  1. Para D > 0  y D = 0

        Calcular u  y  v

u = cbrt (-q/2 +  sqrt (D))

v  = cbrt ( -q/2 – sqrt (D))

Encuentre las tres raices

Y1 = u + v

Y2 = - (u+v) /2 +i (u-v)*sqrt/3)/2

Y3 = - (u +v)/2 – i (u+v)*sqrt(3)/2

  1. Alternativa para D < 0 una formula trigonométrica la mas conveniente

t = arccos (-q/2/sqrt + (abs(p)^3 /27)

Y1 = 2*sqrt (abs(p)^3 cos(t/3)

Y2 = -2*sqrt (abs(p)^3*cos(t + pi)/3)

Y3 = -2*sqrt (abs(p)^3cos(t – pi)/3)

  1. Finalmente encontramos las tres raíces

           X1 = Y1 – b/a/3

           X2 = Y2 – b/a/3             

          X3  = Y3 –b/a/3

Vi algo parecido en este link http://mimosa.pntic.mec.es/jgomez53/javas/resecu3img.htm 

Añade tu respuesta

Haz clic para o