Está en la página 1de 22

Raíces de polinomios

Solucion de Problemas matemáticos


con Programación Numérica
Definición
Un polinomio de grado n es una expresión de la forma:
P(x) = anxn + an-1xn-1 + ... +a1x + a0
Donde an <> 0

Teorema (teorema fundamental del álgebra): Si P(x) es un


polinomio de grado n >= 1, entonces P(x) = 0 tiene al menos
una raíz (posiblemente compleja).
Corolario
Si P(x) es un polinomio de grado n >= 1, entonces existen
constantes únicas x1, x2, ... xk, posiblemente complejas, y
enteros positivos m1, m2, ..., mk, tales que:
k

m
i 1
i n

P( x)  an x  x1  x  x2 m ...x  xk m
m1 2 k
Ejercicios
Evaluar:

P(x) = 2x4 – 3x2 + 3x – 4 en x0 = –2

P(x) = 7x5 + 6x4 – 6x3 + 3x – 4 en x0 = 3

P(x) = – 5x6 + 3x4 + 2x2 – 4x en x0 = –1


Método de Müller
Se aproxima el siguiente valor utilizando una parábola en lugar
de una recta como en el método de la secante.
f(x)
f(x) parábola

Línea
recta

Raíz
Raíz estimada
estimada

x
x1 x0 x
x2 x1 x0
raíz
Método de Müller
Utiliza tres aproximaciones: x0, x1, x2.
Determina la siguiente aproximación x3 encontrando la
intersección con el eje x de la parábola definida por los
puntos (x0,f(x0)), (x1,f(x1)), (x2,f(x2)).

x0 x1 x2 x3
Método de Müller

Se considera el polinomio
P(x) = a(x – x2)2 + b(x – x2) + c
Se puede encontrar a, b y c resolviendo
f(x0) = a(x0 – x2)2 + b(x0 – x2) + c
f(x1) = a(x1 – x2)2 + b(x1 – x2) + c
f(x2) = a(x2 – x2)2 + b(x2 – x2) + c
Método de Müller
Se llega a

c  f ( x2 )

 x0  x2   f ( x1 )  f ( x2 )  x1  x2   f ( x0 )  f ( x2 )
2 2
b
x0  x2 x1  x2 x0  x1 

 x1  x2  f ( x0 )  f ( x2 )  x0  x2  f ( x1 )  f ( x2 )
a
x0  x2 x1  x2 x0  x1 
Método de Müller
Los cálculos pueden simplificarse usando

h0  x1  x0
h1  x2  x1
f  x1   f  x0 
d0 
h0
f  x2   f  x1 
d1 
h1
d1  d 0
a
h1  h0
b  ah1  d1
c  f  x2 
Método de Müller
Para minimizar el error al resolver la cuadrática P(x) = 0, se
calcula x3 con
2c
x3  x2 
b  signo (b) b 2  4ac

El proceso se reinicia tomando ahora x1, x2, y x3.


Müller en MatLab
function y = muller(p,x0,x1,x2,ee,ni)
i = 3;
while i<=ni
h1 = x1-x0;
h2 = x2-x1;
[fx0 muda] = horner(p,x0);
[fx1 muda] = horner(p,x1);
[fx2 muda] = horner(p,x2);
d1 = (fx1-fx0)/h1;
d2 = (fx2-fx1)/h2;
a = (d2-d1)/(h2+h1);
b = d2+h2*d1;
c = fx2;
D = sqrt(b*b-4.0*a*c);
if(abs(b-D)<abs(b+D))
E = b+D;
else
E = b-D;
end
h = -2.0*c/E;
x3 = x2+h;
if(abs(h)<ee)
break;
end
x0 = x1;
x1 = x2;
x2 = x3;
i=i+1;
end
y = x3;
Ejemplo
P(x) = 16x4 – 40x3 + 5x2 + 20x + 6

x0 = 0.5 x1 = -0.5 x2 = 0.0


i xi P(xi)
3 -0.555556 + ( -0.598352)i -29.400701 + ( 3.898725)i
4 -0.435450 + ( -0.102101)i 1.332225 + ( 1.193097)i
5 -0.390631 + ( -0.141852)i 0.375058 + ( 0.670168)i
6 -0.357698 + ( -0.169926)i -0.146750 + ( 0.007446)i
7 -0.356051 + ( -0.162856)i -0.001840 + ( -0.000538)i
8 -0.356062 + ( -0.162758)i 0.000002 + ( -0.000001)i
Ejemplo
x0 = 2.5 x1 = 2.0 x2 = 2.3
i xi P(xi)
3 1.960592 + ( 0.000000)i -0.611310 + ( 0.000000)i
4 1.970564 + ( 0.000000)i 0.007455 + ( 0.000000)i
5 1.970447 + ( 0.000000)i 0.000029 + ( 0.000000)i

x0 = 0.5 x1 = 1.0 x2 = 1.5


i xi P(xi)
3 1.287855 + ( 0.000000)i -1.376275 + ( 0.000000)i
4 1.237459 + ( 0.000000)i 0.126945 + ( 0.000000)i
5 1.241605 + ( 0.000000)i 0.002193 + ( 0.000000)i
6 1.241677 + ( 0.000000)i -0.000001 + ( 0.000000)i
Actividad
Encontrar las raíces reales y complejas del
siguiente polinomio por el método de Müller en
MatLab.

P(x) = x4 – 2x3 + 6x2 – 8x + 8


Raíces de no lineales en Matlab
fzero(FUN, x0) – encuentra la raíz de FUN cerca al punto
x0.
Ejemplos:
FUN puede especificarse usando @:
X = fzero(@sin,3)
regresa pi.
X = fzero(@sin,3,optimset('disp','iter'))
regresa pi, usa la tolerancia por omisión y despliega
información de las iteraciones.

FUN puede ser una función en línea:


X = fzero(inline('sin(3*x)'),2);
Polinomios con Matlab
polyval(P, x) – evalua el polinomio P en el punto x. El
polinomio se especifica como un vector donde P(1) es el
coeficiente de la potencia más alta y P(length(P)) es el
término independiente.
polyder(P) – obtiene la derivada delpolinomio P.
con(A, B) – multiplica el polinomio A por el polinomio B.
[Q R] = deconv(A, B) – divide los dos polinomios A y
B y almacena el cociente en Q y el residuo en R.
roots(P) – encuentra todas las raices reales y complejas
del polinomio P.
Método de Bairstow
El enfoque de Bairstow es el de utilizar el Método de Newton
para ajustar los coeficientes r y s en la cuadrática x2 – rx + s
hasta que sus raíces sean también raíces del polinomio que se
quiere resolver.
Con estos coeficientes se determina la cuadrática
correspondiente que se utiliza para simplificar la expresión,
eliminando estas raíces del conjunto buscado.
El proceso se repite hasta que el polinomio se convierta en uno
cuadrático o lineal, momento en que todas las raíces quedan
determinadas.
La División Larga de un polinomio
n
Px    ai x i
i 0

por x2 – rx – s resulta en un cociente de la forma


n2
Q x    bi x i
i 0

y un residuo b1(x – r) + b0 tal que

 n2 i 
 
Px   x  rx  s   bi x   b1 x  r   b0
2

 i 2 
Se utiliza la división sintética para obtener la división entre el factor
cuadrático:
bn = an
bn–1 = an–1 + rbn
bi = ai + rbi+1 + sbi+2 (i = n – 2,…, 0)
El método se reduce a determinar los valores de r y s que hacen que el factor
cuadrático sea un divisor exacto.
Se utiliza el método de Newton-Raphson. Se calculan incrementos Dr y Ds
para acercarse a la solución.
b1 b
Dr  1 Ds  b1
r s
b0 b
Dr  0 Ds  b0
r s

Las derivadas parciales se calculan por un proceso de división sintética


similar al utilizado para calcular las b’s.
cn = bn
cn–1 = bn–1 + rcn
ci = bi + rci+1 + sci+2 (i = n – 2,…, 1)
Donde:
b1 b
c2  , c3  1
r s
b b
c0  0 , c2  0
r s

Se resuelven las ecuaciones para Dr y Ds y se emplean para mejorar r y s.


Ejemplo
Encontrar las raíces del siguiente polinomio en Excel
P( x) = x5 – 3.5x4 + 2.75x3 + 2.125x2 – 3.88x +1.25
Comience en r = -1 y s = -1
Hoja de Excel de Bairstow
Haga doble clic sobre la hoja para ver las fórmulas. Los valores
en amarillo son los valores que se obtuvieron paso a paso. Los
valores en naranja son los coeficientes del polinomio de grado
n–2 que hay que resolver aplicando el mismo método. Note
que los coeficientes b0 y b1 son casi cero.

Método de Bairstow
n-> 5 4 3 2 1 0r s valores calculados x1 x2
a-> 1 -3.5 2.75 2.125 -3.875 1.25 -0.5 0.5 -1 -1 #¡NUM! #¡NUM!
-0.5 2.5 -4.625 3.875 -1.250000456 Dr Ds -0.6442 0.1381 0.1697 -0.8139
b-> 1 -4 5.25 -2.5 5E-07 -4.55699E-07 7E-08 1E-08 -0.5111 0.4697 0.4759 -0.9870
-0.5 2.75 -6.25 8.375 Error r Error s -0.4997 0.5002 0.5002 -0.9999
c-> 1 -4.5 8.000001 -8.75 8.375 1E-05 2E-06 -0.5000 0.5000 0.5000 -1.0000
sistema b -0.5 0.5
c2,c3 -8.75 8 -4.9E-07 7E-08
c1,c2 8.38 -8.75 4.56E-07 1E-08