Vous êtes sur la page 1sur 9

08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic.

Amado Malca Villalobos


1

POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION

Los polinomios son herramientas matemticas muy fciles de manipular, ya sea derivando y/o
integrando. Por lo cual los hace ideales para representar algn suceso discreto o tambin una
funcin cuya integral sea imposible de hallar o muy difcil de calcular.
La idea es que el error que se pueda dar con esta aproximacin polinomial, a una funcin
desconocida o una expresin complicada, sea el mnimo. Tendiendo hacia cero.
Este procedimiento de aproximar una funcin se denomina interpolacin.

Un polinomio es una expresin de la forma:
( )
1
1 1 0
,
n n
n n
p x a x a x a x a n Z

=

Polinomio En MatLab
( ) 2 5 p x x = [ [ 2 5 p =
( )
3 2
6 7 2 q x x x = [ [ 6 7 0 2 q =
( )
5 2
4 6 8 r x x x = [ [ 4 0 0 6 0 8 q =

VALOR DE UN POLINOMIO
Al dar un valor en la variable x del polinomio, se puede hallar su valor por medio del siguiente
comando:
( ) , polyval p x
Donde p es el vector con los coeficientes del polinomio, y x es el valor para el cual se debe evaluar
el polinomio.
Ejemplo:
Dado el polinomio
( )
5 4 3 2
12,1 40, 59 17, 015 71, 95 35,88 p x x x x x x =
a) Hallar p(5), p(9), p(-1)
b) Representar grficamente el polinomio p(x) en el dominio 1, 5 6, 7 x _ _

Solucin:

>> p=[1 -12.1 40.59 -17.015 -71.95 35.88]
p = 1.0000 -12.1000 40.5900 -17.0150 -71.9500 35.8800
>> polyval(p,5)
ans = -112.9950
>> polyval(p,9)
ans = 7.2611e+003
>> polyval(p,-1)
ans = 37.1250
>> x=-1.5:0.1:6.7;
>> y=polyval(p,x);
>> plot(x,y)
>> grid
>>
08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos
2



RAICES DE UN POLINOMIO
Siempre es necesario hallar los valores reales x, para los cuales un polinomio es cero.
Resolviendo la ecuacin:
( ) 0 p x =
Para este cometido ser necesario utilizar la funcin roots de MatLab, cuya sintaxis es:

( ) r roots p =
p es un vector fila con los coeficientes del polinomio
r es un vector columna con las races del polinomio.

En el ejemplo anterior calculando las races del polinomio dado:
>> r=roots(p)
r = 6.5000
4.0000
2.3000
-1.2000
0.5000
>>

Tambin tenemos el siguiente polinomio: ( )
4
1 p x x =
>> p=[1 0 0 0 -1]
p = 1 0 0 0 -1
>> r=roots(p)
r = -1.0000
-0.0000 + 1.0000i
-0.0000 - 1.0000i
1.0000
-2 -1 0 1 2 3 4 5 6 7
-200
-150
-100
-50
0
50
100
150
08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos
3
>>

Tambin podemos hacerlo directamente:

>> r=roots([1 0 0 0 -1])
r = -1.0000
-0.0000 + 1.0000i
-0.0000 - 1.0000i
1.0000
>>

Ahora veamos el proceso inverso, es decir dadas las races debemos encontrar el polinomio
correspondiente. Para ello usaremos el comando poly, la sintaxis de este comando es como sigue:
( ) p poly r =
r es un vector fila o columna con las races del polinomio
p es un vector con los coeficientes del polinomio.

>> r=[1 2 3 4 5]
r = 1 2 3 4 5
>> p=poly(r)
p = 1 -15 85 -225 274 -120
>> r=[1+4i 1-4i 2+sqrt(5) 2-sqrt(5)]
r = 1.0000 + 4.0000i 1.0000 - 4.0000i 4.2361 -0.2361
>> p=poly(r)
p = 1.0000 -6.0000 24.0000 -66.0000 -17.0000
>>

SUMA DE POLINOMIOS
Para sumar polinomios solo se debe tener en cuenta que los vectores asociados tengan la misma
dimensin:
Sumar ( )
4 3
6 5 7 p x x x x = y ( )
2
3 8 5 q x x x =

>> p=[1 6 0 -5 7]
p = 1 6 0 -5 7
>> q=[0 0 3 8 -5]
q = 0 0 3 8 -5
>> p+q
ans = 1 6 3 3 2
>> 2*p-3q
??? 2*p-3q
|Error: Unexpected MATLAB expression.
>> 2*p-3*q
ans = 2 12 -9 -34 29
>>

MULTIPLICACIN DE POLINOMIOS
Para el producto de polinomios no es necesario completar, pero si se usa el comando conv, de
MatLab.
( ) , c conv p q =
p y q son los polinomios a multiplicar.
08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos
4
c es el vector que contiene los coeficientes del producto
Multiplicar ( )
3 2
4 5 6 2 p x x x x = y ( )
2
7 3 q x x x =

>> p=[4 -5 6 2]
p = 4 -5 6 2
>> q=[3 8 -5]
q = 3 8 -5
>> c=conv(p,q)
c = 12 17 -42 79 -14 -10
>>

DIVISIN DE POLINOMIOS
Para la divisin, se usa el comando deconv, de MatLab.
[ [ ( ) , , q r deconv u v =
u y v son los polinomios a dividir.
q es el cociente de la divisin y r es el residuo.

Dividir ( )
5 2
6 3 8 20 u x x x x = y ( )
2
2 8 3 v x x x =
>>
>> u=[6 0 0 3 -8 20]
u = 6 0 0 3 -8 20
>> v=[2 8 -3]
v = 2 8 -3
>> [q,r]=deconv(u,v)
q = 1.0e+002 *
0.030000000000000 -0.120000000000000 0.525000000000000 -2.265000000000000
r = 1.0e+003 * 0 0 0 0 1.961500000000000 -0.659500000000000
>>

DERIVADA DE UN POLINOMIO

Para calcular en forma especfica la derivada de un polinomio, se usa el comando polyder.
Derivada de un polinomio
Aqu se tiene que p y q son vectores de los polinomios
( ) k polyder p = Donde ( ) ( ) ' k x p x =
Derivada de un producto de polinomios
( ) , k polyder p q = Donde ( ) ( ) ( ) ( )
' k x p x q x =
Derivada de una divisin de polinomios
[ [ ( ) , , n d polyder p q = Donde
( )
( )
( ) ( ) ( ) '
n x
p x q x
d x
=
Ejemplo:
Considere los polinomios:
( )
6 2
16 12 5 13 p x x x x = y ( )
2
5 18 23 q x x x =

08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos
5
>> p=[16 0 0 0 12 -5 13]
p = 16 0 0 0 12 -5 13
>> q=[5 18 -23]
q = 5 18 -23
>> m=polyder(p)
m = 96 0 0 0 24 -5
>> g=polyder(p,q)
640 2016 -2208 0 240 573 -602 349
>> [n,d]=polyder(p,q)
n = 320 1440 -2208 0 0 241 -682 -119
d = 25 180 94 -828 529
>>

CURVAS DE AJUSTE

REGRESION POLINOMIAL
Este tema tambin llamado regresin, muy utilizado para modelar una funcin que no se conoce,
solamente con algunos datos. El polinomio puede ser lineal, cuadrtico, cubico, etc.
La teora matemtica nos dice que, dados n puntos del tipo ( ) ,
i i
x y es posible hallar un
polinomio de grado n-1, que pase por tales puntos.
Pero si se tiene muchos datos es preferible buscar un polinomio de grado menor, as tendremos que
posiblemente la curva de ajuste no pase por todos los puntos, pero el error tiende a ser menor. Esta
metodologa se llama de Mnimos Cuadrados.
La forma bsica de buscar estas curvas es usando el comando polyfit, la sintaxis es como sigue:
( ) , , p polyfit x y n =
p es el vector de los coeficientes del polinomio de ajuste
x es el vector de las abscisas de los puntos
y son las ordenadas de los puntos
n es el grado de la curva de ajuste

Ejemplo: Ahora tenemos los valores de la temperatura en un espacio de 12 horas.
[ [ T 28 28 29 30 31 32 34 34 34 33 31 30 =
Hallaremos una curva de ajuste, de cuarto grado
Solucion:
Curvatemp.m Ejecucin en MatLab
x=[1 2 3 4 5 6 7 8 9 10 11
12]
T=[28 28 29 30 31 32 34 34
34 33 31 30]
p=polyfit(x,T,4)
t=1:0.01:12;
w=polyval(p,t);
plot(x,T,' *')
hold on
plot(t,w)
grid
hold on
Herror=polyval(p,x)-T
>> curvatemp
x = 1 2 3 4 5 6 7 8 9
10 11 12
T = 28 28 29 30 31 32 34 34
34 33 31 30
p = 0.002585955710956 -
0.092875874125877 0.939284673659698
-2.356861888111967
29.613636363636434
Herror = 0.105769230769244 -
0.044580419580427 -0.301573426573437
-0.067307692307693 0.318181818181827
0.576923076923094 -0.506993006992992
08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos
6
Herror_Total=sqrt(sum(Herro
r*Herror'))
-0.087412587412572 -0.256118881118880
-0.042832167832181 0.584790209790182
-0.278846153846175
Herror_Total = 1.137796299686555
>>



REGRESION POTENCIAL
El modelo matemtico es:
m
y bx = , convertible a un polinomio lineal, siguiendo la formula:
ln( ) ln( ) ln( ) y m x b =
La forma bsica de buscar estas curvas es usando el comando polyfit, la sintaxis es como sigue:
( ) log( ), log( ),1 p polyfit x y =
p es el vector de los coeficientes del polinomio lineal: p(1)=m y p(2)=ln(b)

REGRESION EXPONENCIAL
El modelo matemtico es:
mx
y be = , convertible a un polinomio lineal, siguiendo la formula:
ln( ) ln( ) y mx b =
La forma bsica de buscar estas curvas es usando el comando polyfit, la sintaxis es como sigue:
( ) , log( ),1 p polyfit x y =
p es el vector de los coeficientes del polinomio lineal: p(1)=m, p(2)=ln(b)

El modelo matemtico es: 10
mx
y b = , convertible a un polinomio lineal, siguiendo la
formula:
log( ) log( ) y mx b =
La forma bsica de buscar estas curvas es usando el comando polyfit, la sintaxis es como sigue:
0 2 4 6 8 10 12
27
28
29
30
31
32
33
34
08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos
7
( ) , log10( ),1 p polyfit x y =
p es el vector de los coeficientes del polinomio lineal: p(1)=m y p(2)=log(b)

REGRESION LOGARITMICA
El modelo matemtico es: ln( ) y m x b =
La forma bsica de buscar estas curvas es usando el comando polyfit, la sintaxis es como sigue:
( ) log( ), ,1 p polyfit x y =
p es el vector de los coeficientes del polinomio lineal: p(1)=m, y p(2)=b

El modelo matemtico es: log( ) y m x b =
La forma bsica de buscar estas curvas es usando el comando polyfit, la sintaxis es como sigue:
( ) log10( ), ,1 p polyfit x y =
p es el vector de los coeficientes del polinomio lineal: p(1)=m, y p(2)=b

REGRESION RECIPROCA
El modelo matemtico es:
1
y
mx b
=

, convertible a un polinomio lineal, siguiendo la


formula:
1
mx b
y
=
La forma bsica de buscar estas curvas es usando el comando polyfit, la sintaxis es como sigue:
( ) ,1. / ,1 p polyfit x y =
p es el vector de los coeficientes del polinomio lineal: p(1)=m, p(2)= b

Ejemplo: Considere la funcin dada por la siguiente tabla:

x 0 1 2 3 4 5
y 1.0000 -0.6242 -1.4707 3.2406 -0.7366 -6.3717
x 6 7 8 9 10
y 9.6120 2.3363 -24.5438 25.3848 23.5321

Solucin:

ajustecurv.m Ejecucin en MatLab
t =[0 1 2 3 4 5 6 7 8 9
10]
w = [6.00 4.83 3.70 3.15
2.41 1.83 1.49 1.21 0.96
0.73 0.64]
plot(x,y,' *')
p=polyfit(t,log(w),1);
m=p(1)
b=exp(p(2))
>> ajustecur
t = 0 1 2 3 4 5 6 7 8
9 10
w = 6.0000 4.8300 3.7000 3.1500
2.4100 1.8300 1.4900 1.2100 0.9600
0.7300 0.6400
m = -0.2290
b = 5.9889
>>
08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos
8
tm=0:0.1:10;
wm=b*exp(m*tm);
plot(t,w,' *',tm,wm)

>>



INTERPOLACION

Esta palabra significa encontrar un valor intermedio de una funcin ( ) y f x = , dado un
conjunto de valores de ella, la cual est definida en un dominio determinado. Este valor
corresponde a un elemento intermedio en el dominio.
Dado un conjunto de valores: ( ) , , 1,
i i
x y i n = ; donde
1
, 1, 1
i i
x x i n

< \ =
Para hallar este valor intermedio: se usa las curvas halladas en el tema de curvas de ajuste.
( ) , , 1,
i i
x y i n =
Para este procedimiento se usa el comando de interp1, con la siguiente estructura:
( ) int 1 , , , ' ' yi erp x y xi metodo =
x es el vector de abscisas de los puntos
y es el vector de ordenadas de los puntos
xi es la abscisa de punto a interpolar
yi es el valor interpolado
Por defecto el mtodo es ' ' linear , los otros mtodos son:
0 1 2 3 4 5 6 7 8 9 10
0
1
2
3
4
5
6
08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos
9
' ' nearest devuelve el valor del punto mas cercano al interpolado.
' ' linear utiliza interpolacin segmentaria lineal.
' ' spline utiliza interpolacin segmentaria cubica.
' ' pchip o ' ' cubic utiliza interpolacin de Hermite cubica

Ejemplo: Interpolar los valores de la funcin dada por la siguiente tabla:

x 0 1 2 3 4 5
y 1,0 -0,6242 -1,4707 3,2406 -0,7366 -6,3717
Que corresponden a la funcin: ( ) ( ) 1, 5 cos 2
x
f x x =
Solucin:
interpolf.m Ejecucin en
MatLab
x=0:1:5;
y=[1.0 -0.6242 -1.4707 3.2406 -0.7366
-6.3717];
xi=0:0.1:5;
yilin=interp1(x,y,xi,'linear');
yispl=interp1(x,y,xi,'spline');
yipch=interp1(x,y,xi,'pchip');
yfun=1.5.^xi.*cos(2*xi);
subplot(1,3,1)
plot(x,y,'o',xi,yfun,xi,yilin,'--');
subplot(1,3,2)
plot(x,y,'o',xi,yfun,xi,yispl,'--');
subplot(1,3,3)
plot(x,y,'o',xi,yfun,xi,yipch,'--');

>> interpolf
>>


0 1 2 3 4 5
-8
-6
-4
-2
0
2
4
0 1 2 3 4 5
-8
-6
-4
-2
0
2
4
0 1 2 3 4 5
-8
-6
-4
-2
0
2
4

Vous aimerez peut-être aussi