Raices de Polinomios -...

26
Raices de Polinomios Jorge Eduardo Ortiz Triviño [email protected] http://www.docentes.unal.edu.co/jeortizt/

Transcript of Raices de Polinomios -...

Page 1: Raices de Polinomios - disi.unal.edu.codisi.unal.edu.co/profesores/jeortizt/MetNum/Archivos/04B... · algoritmo de Horner

Raices de Polinomios

Jorge Eduardo Ortiz Triviño

[email protected]

http://www.docentes.unal.edu.co/jeortizt/

Page 2: Raices de Polinomios - disi.unal.edu.codisi.unal.edu.co/profesores/jeortizt/MetNum/Archivos/04B... · algoritmo de Horner

Definición

Un polinomio de grado n es una expresión de la forma:

P(x) = anxn + an-1x

n-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).

Page 3: Raices de Polinomios - disi.unal.edu.codisi.unal.edu.co/profesores/jeortizt/MetNum/Archivos/04B... · algoritmo de Horner

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

i

i nm1

km

k

mm

n xxxxxxaxP ...)( 21

21

y

Page 4: Raices de Polinomios - disi.unal.edu.codisi.unal.edu.co/profesores/jeortizt/MetNum/Archivos/04B... · algoritmo de Horner

Método de Horner Sea

P(x) = anxn + an-1x

n-1 + ... +a1x + a0

Si bn = an y

bk = ak + bk+1x0 para k = n – 1, n – 2, ..., 1, 0

Por tanto b0 = P(x0). Más aún, si

Q(x) = bnxn–1 + bn-1x

n-2 + ... +b2x + b1

Entonces

P(x) = (x – x0) Q(x) + b0

Page 5: Raices de Polinomios - disi.unal.edu.codisi.unal.edu.co/profesores/jeortizt/MetNum/Archivos/04B... · algoritmo de Horner

Regla de Horner Teorema del resto:

P(a) es el resto de la división de P(x) por (x a)

P(x) = Q(x)(x-a) + R(x); grado(R(x))= 0; P(a) = R

Consecuencia: P’(a) es el valor del cociente anterior en x = a

P’(x) = Q’(x)(x-a) + Q(x) ; P’(a) = Q(a)

Algoritmo de Horner:

qn-1 = an

for k = n-2, n-3, … , 0 do

bk = ak+1+aqk+1

end

P(a) = a0+aq0

Page 6: Raices de Polinomios - disi.unal.edu.codisi.unal.edu.co/profesores/jeortizt/MetNum/Archivos/04B... · algoritmo de Horner

Aplicaciones del algoritmo de Horner

Cálculo del cociente y el resto de dividir un polinomio

P(x) por (x-a): Q(x) y R con

P(x)= Q(x)(x-a)+R.

Evaluación de un polinomio P(x) en un valor real a: P(a).

Deflacción de un polinomio: si a es raíz de P(x), P(x) es

divisible por (x-a) y Q(x) = P(x)/(x-a) es una deflacción.

Método de Newton para polinomios

)('

)(

1n

xP

nxP

nx

nx

Page 7: Raices de Polinomios - disi.unal.edu.codisi.unal.edu.co/profesores/jeortizt/MetNum/Archivos/04B... · algoritmo de Horner

Ejemplo

P(x) = x4 - 5x3 + 4x2 - 3x + 2

1 5 4 3 2

2 2 6 4 14

1 3 2 7 12

Cociente

1 3 2 7

2 2 2 8

1 1 4 15

Resto = p(2)

p'(2)

Paso de Newton

x p(x)/p'(x) =

2 12/15 = 6/5

Q(x) = x3 - 3x2 - 2x - 7

Page 8: Raices de Polinomios - disi.unal.edu.codisi.unal.edu.co/profesores/jeortizt/MetNum/Archivos/04B... · algoritmo de Horner

Acotación de raíces reales

P(x)=anxn+an-1xn-1+…+a1x+a0, an 0

Cota general (Mc Laurin): Sean A = max{|an-1|, …, |a1|,

|a0|}, M = {|an/a0|, …, |a1/a0|}, y sea r con P(r) = 0, entonces

1/(1+M) < |r| < 1+(A/|an|)

Regla de Newton: Un número natural k es cota superior de

las raíces positivas de P(x) si

P(k)0, P’(k)0, …, P(n-1(k)0, P(n(k)>0.

Regla de Laguerre: k es cota superior de las raíces positivas

de P(x) si al dividir P(x) por (x-k) todos los coeficientes del

cociente son 0 y el resto es >0.

Page 9: Raices de Polinomios - disi.unal.edu.codisi.unal.edu.co/profesores/jeortizt/MetNum/Archivos/04B... · algoritmo de Horner

Recuento de raíces reales P(x)=anx

n+an-1xn-1+…+a1x+a0, an 0

v(c1, c2, …, cn) = nº de cambios de signo en la suc. sin ceros

Regla de los signos de Descartes:

v(an,an-1, …, a0) nº raíces reales positivas (mod 2)

Regla de Sturn: Si P(x) no tiene raíces multiples y P(a) 0,

P(b) 0 para ciertos a, b , a<b. Entonces el número de raíces

reales de P(x) en el intervalo (a, b) coincide con

v(P0(a), …, Pm(a)) - v(P0(b), …, Pm(b)),

siendo P0(x) = P(x), P1(x) = P’(x),

P2(x) = - R2(x) con P(x)=P’(x)Q2(x)+R2(x), …,

Pk(x) = - Rk(x) con Pk-2(x)=Pk-1(x)Qk(x)+Rk(x), …, Pm(x)=cte.

Page 10: Raices de Polinomios - disi.unal.edu.codisi.unal.edu.co/profesores/jeortizt/MetNum/Archivos/04B... · algoritmo de Horner

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

Page 11: Raices de Polinomios - disi.unal.edu.codisi.unal.edu.co/profesores/jeortizt/MetNum/Archivos/04B... · algoritmo de Horner

Método de Horner en C

double horner(double p[],int n, double x){

double y = p[0];

int i;

for(i = 1; i<n; i++){

y = x*y + p[i];

}

return y;

}

double eval(double p[],int n, double x){

double s = 0;

int i;

for(i = 0; i<n; i++){

s = s + p[i]*pow(x,n-i-1);

}

return s;

}

Page 12: Raices de Polinomios - disi.unal.edu.codisi.unal.edu.co/profesores/jeortizt/MetNum/Archivos/04B... · algoritmo de Horner

Ejercicio

• Implementar el método de Horner en C++.

Page 13: Raices de Polinomios - disi.unal.edu.codisi.unal.edu.co/profesores/jeortizt/MetNum/Archivos/04B... · algoritmo de Horner

Evaluación de la derivada

Dado que:

P(x) = (x – x0) Q(x) + b0

donde

Q(x) = bnxn–1 + bn-1x

n-2 + ... +b2x + b1

Derivando

P’(x) = Q(x)+(x – x0)Q’(x)

En x = x0,

P’(x0) = Q(x0)

Page 14: Raices de Polinomios - disi.unal.edu.codisi.unal.edu.co/profesores/jeortizt/MetNum/Archivos/04B... · algoritmo de Horner

Método de Newton para polinomios

Se puede aplicar el método de Newton para polinomios

evaluando el polinomio y su derivada mediante el método de

Horner.

El esquema sería

n

nn

n

nnn

xQ

xPx

xP

xPxx

'1

Page 15: Raices de Polinomios - disi.unal.edu.codisi.unal.edu.co/profesores/jeortizt/MetNum/Archivos/04B... · algoritmo de Horner

Newton para polinomios en C

double NewtonPol(double p[],int n,double x0,double ee,

int ni){

int i=0;

double f,df,x = x0,error;

while(i<ni){

hornerDer(p,n,x,f,df);

x = x0 - f/df;

error = fabs((x-x0)/x);

if(error<=ee)

return x;

i++;

x0 = x;

}

std::cout << "No solución en " << i << " pasos\n";

return x;

}

Page 16: Raices de Polinomios - disi.unal.edu.codisi.unal.edu.co/profesores/jeortizt/MetNum/Archivos/04B... · algoritmo de Horner

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

f

Page 17: Raices de Polinomios - disi.unal.edu.codisi.unal.edu.co/profesores/jeortizt/MetNum/Archivos/04B... · algoritmo de Horner

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

Page 18: Raices de Polinomios - disi.unal.edu.codisi.unal.edu.co/profesores/jeortizt/MetNum/Archivos/04B... · algoritmo de Horner

Método de Müller

Se llega a

)( 2xfc

102120

20

2

2121

2

20 )()()()(

xxxxxx

xfxfxxxfxfxxb

102120

21202021 )()()()(

xxxxxx

xfxfxxxfxfxxa

Page 19: Raices de Polinomios - disi.unal.edu.codisi.unal.edu.co/profesores/jeortizt/MetNum/Archivos/04B... · algoritmo de Horner

Método de Müller

Para minimizar el error al resolver la cuadrática P(x) = 0, se

calcula x3 con

acbbsignob

cxx

4)(

2223

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

Page 20: Raices de Polinomios - disi.unal.edu.codisi.unal.edu.co/profesores/jeortizt/MetNum/Archivos/04B... · algoritmo de Horner

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

Page 21: Raices de Polinomios - disi.unal.edu.codisi.unal.edu.co/profesores/jeortizt/MetNum/Archivos/04B... · algoritmo de Horner

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

Page 22: Raices de Polinomios - disi.unal.edu.codisi.unal.edu.co/profesores/jeortizt/MetNum/Archivos/04B... · algoritmo de Horner

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.

Page 23: Raices de Polinomios - disi.unal.edu.codisi.unal.edu.co/profesores/jeortizt/MetNum/Archivos/04B... · algoritmo de Horner

La División Larga de un polinomio

n

i

i

i xaxP0

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

n

i

i

i xbxQ0

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

01

2

2

2 brxbxbsrxxxPn

i

i

i

Page 24: Raices de Polinomios - disi.unal.edu.codisi.unal.edu.co/profesores/jeortizt/MetNum/Archivos/04B... · algoritmo de Horner

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.

200

111

bss

br

r

b

bss

br

r

b

D

D

D

D

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

similar al utilizado para calcular las b’s.

Page 25: Raices de Polinomios - disi.unal.edu.codisi.unal.edu.co/profesores/jeortizt/MetNum/Archivos/04B... · algoritmo de Horner

cn = bn

cn–1 = bn–1 + rcn

ci = bi + rci+1 + sci+2 (i = n – 2,…, 1)

Donde:

s

bc

r

bc

s

bc

r

bc

02

01

13

11

,

,

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

Page 26: Raices de Polinomios - disi.unal.edu.codisi.unal.edu.co/profesores/jeortizt/MetNum/Archivos/04B... · algoritmo de Horner

Tarea

Escriba un programa en C amigable para el usuario que utilice la

función bairstow() para encontrar las raíces de un polinomio.

Deberá pedir el grado del polinomio, los coeficientes, los valores

iniciales para la función bairstow, el error esperado y el número

de iteraciones máximo.

Deberá dar como salida una lista de las raíces del polinomio y/o

una indicación de error.