Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programacin Numrica
Definicin
Un polinomio de grado n es una expresin 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 raz (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
P( x) an x x1
m1
x x2 m ... x xk m
2
Mtodo de Horner
Sea
P(x) = anxn + an-1xn-1 + ... +a1x + a0
Si bn = an y
Ejercicios
Evaluar:
en x0 = 2
en x0 = 3
en x0 = 1
Mtodo 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;
}
Evaluacin de la derivada
Dado que:
P(x) = (x x0) Q(x) + b0
donde
Q(x) = bnxn1 + bn-1xn-2 + ... +b2x + b1
Derivando
P(x) = Q(x)+(x x0)Q(x)
En x = x0,
P(x0) = Q(x0)
Evaluacin de la derivada en C
void hornerDer(double p[],int n, double
x,double &y,double &z){
y = p[0];
z = p[0];
int i;
for(i = 1; i<n-1; i++){
y = x*y + p[i];
z = x*z + y;
}
y = x*y + p[n-1];
}
Mtodo horner
Entrada: grado n, a0, a1, ..., an, x0
Salida: y =P(x0), z = P(x0)
1.
2.
3.
4.
5.
6.
7.
y = an
//calcule bn para P
z = an
//calcule bn-1 para Q
Para j = n 1, n 2, .... , 1
y = x0*y + aj
z = x0*z + y
y = x0*y + a0
regresar y, z
Mtodo de Mller
Se aproxima el siguiente valor utilizando una parbola en lugar
de una recta como en el mtodo de la secante.
f(x)
f(x)
parbola
Lnea
recta
Raz
estimada
Raz
estimada
x1
raz
x0
x
x2 x1 x0
Mtodo de Mller
Utiliza tres aproximaciones: x0, x1, x2.
Determina la siguiente aproximacin x3 encontrando la
interseccin con el eje x de la parbola definida por los
puntos (x0,f(x0)), (x1,f(x1)), (x2,f(x2)).
x0 x1
x2 x3
Mtodo de Mller
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
Mtodo de Mller
Se llega a
c f ( x2 )
2
2
x0 x2 f ( x1 ) f ( x2 ) x1 x2 f ( x0 ) f ( x2 )
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
Mtodo de Mller
Los clculos pueden simplificarse usando
h0 x1 x0
h1 x2 x1
f x1 f x0
d0
h0
f x2 f x1
d1
h1
a
d1 d 0
h1 h0
b ah1 d1
c f x2
Mtodo de Mller
Para minimizar el error al resolver la cuadrtica P(x) = 0, se
calcula x3 con
x3 x2
2c
b signo(b) b 2 4ac
Mller 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
xi
P(xi)
-0.555556 + ( -0.598352)i
-29.400701 + (
3.898725)i
-0.435450 + ( -0.102101)i
1.332225 + (
1.193097)i
-0.390631 + ( -0.141852)i
0.375058 + (
0.670168)i
-0.357698 + ( -0.169926)i
-0.146750 + (
0.007446)i
-0.356051 + ( -0.162856)i
-0.001840 + ( -0.000538)i
-0.356062 + ( -0.162758)i
0.000002 + ( -0.000001)i
Ejemplo
x0 =
2.5
x1 =
2.0
x2 =
2.3
xi
1.960592 + (
0.000000)i
-0.611310 + (
0.000000)i
1.970564 + (
0.000000)i
0.007455 + (
0.000000)i
1.970447 + (
0.000000)i
0.000029 + (
0.000000)i
x0 =
0.5
x1 =
1.0
P(xi)
x2 =
1.5
xi
P(xi)
1.287855 + (
0.000000)i
-1.376275 + (
0.000000)i
1.237459 + (
0.000000)i
0.126945 + (
0.000000)i
1.241605 + (
0.000000)i
0.002193 + (
0.000000)i
1.241677 + (
0.000000)i
-0.000001 + (
0.000000)i
Actividad
Encontrar las races reales y complejas del
siguiente polinomio por el mtodo de Mller en
MatLab.
Mtodo de Bairstow
El enfoque de Bairstow es el de utilizar el Mtodo de Newton
para ajustar los coeficientes r y s en la cuadrtica x2 rx + s
hasta que sus races sean tambin races del polinomio que se
quiere resolver.
Con estos coeficientes se determina la cuadrtica
correspondiente que se utiliza para simplificar la expresin,
eliminando estas races del conjunto buscado.
El proceso se repite hasta que el polinomio se convierta en uno
cuadrtico o lineal, momento en que todas las races quedan
determinadas.
P x ai x i
i 0
Q x bi x i
i 0
b x
P x x rx s
2
n2
i 2
b1 x r b0
cn = b n
cn1 = bn1 + rcn
ci = bi + rci+1 + sci+2 (i = n 2,, 1)
Donde:
b1
b
, c3 1
r
s
b
b
c0 0 , c2 0
r
s
c2
Ejemplo
Encontrar las races 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