Está en la página 1de 9

08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic.

Amado Malca Villalobos

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: p (x)= an xn + an- 1xn- 1 + L + a1x + a0 , n Z + Polinomio p (x)= 2x + 5 En MatLab p = [2 5]

q (x)= 6x3 - 7 x2 + 2 r (x)= 4x5 + 6x2 - 8

q = [6 - 7 0 2] q = [4 0 0 6 0 - 8]

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 p (x)= x5 - 12,1x4 + 40,59x3 - 17,015x2 - 71,95x + 35,88 a) Hallar p(5), p(9), p(-1) b) Representar grficamente el polinomio p(x) en el dominio - 1,5 x 6,7 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


150

100

50

-50

-100

-150

-200 -2

-1

RAICES DE UN POLINOMIO Siempre es necesario hallar los valores reales x, para los cuales un polinomio es cero. Resolviendo la ecuacin: p (x)= 0 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: >> 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 >> Tambin podemos hacerlo directamente: >> r=roots([1 0 0 0 -1]) r = -1.0000 -0.0000 + 1.0000i -0.0000 - 1.0000i 1.0000 >> 2

p (x)= x4 - 1

08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos

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 p (x)= x4 + 6x3 - 5x + 7 y q (x)= 3x2 + 8x - 5 >> 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. c es el vector que contiene los coeficientes del producto Multiplicar p (x)= 4x3 - 5x2 + 6x + 2 y q (x)= x2 - 7 x + 3 >> 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. 3

08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos

[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 u (x)= 6x5 + 3x2 - 8x + 20 y v (x)= 2x2 + 8x - 3 >> >> 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 (x) = ( p( x) q( x))' [n, d ]= polyder ( p, q) Donde d (x) Ejemplo: Considere los polinomios: p (x)= 16x6 + 12x2 - 5x + 13 y q (x)= 5x2 + 18x - 23 >> 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 >> [n,d]=polyder(p,q) n= 320 1440 -2208 0 0 d = 25 180 94 -828 529 >>

573 241

-602 -682

349 -119

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.

08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos

La teora matemtica nos dice que, dados n puntos del tipo (xi , yi ) 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 >> curvatemp 10 11 12] x= 1 2 3 4 5 6 T=[28 28 29 30 31 32 7 8 9 10 11 12 34 34 34 33 31 30] T = 28 28 29 30 31 p=polyfit(x,T,4) 32 34 34 34 33 31 30 t=1:0.01:12; p = 0.002585955710956 w=polyval(p,t); 0.092875874125877 plot(x,T,' *') 0.939284673659698 hold on 2.356861888111967 plot(t,w) 29.613636363636434 grid Herror = 0.105769230769244 hold on 0.044580419580427 Herror=polyval(p,x)- 0.301573426573437 T 0.067307692307693 Herror_Total=sqrt(su 0.318181818181827 m(Herror*Herror')) 0.576923076923094 0.506993006992992 0.087412587412572 0.256118881118880 0.042832167832181 0.584790209790182 0.278846153846175 Herror_Total = 1.137796299686555 >>

08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos


34

33

32

31

30

29

28

27 0

10

12

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

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

08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos

El modelo matemtico es:

y=

1 , convertible a un polinomio lineal, siguiendo la formula: mx + b

1 = mx + b y La forma bsica de buscar estas curvas es usando el comando polyfit, la sintaxis es como sigue: p = polyfit (x,1. / y,1) 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 y x y 0 1 1.0000 0.6242 6 7 9.6120 2.3363 2 -1.4707 3 3.2406 4 -0.7366 5 6.3717

8 9 10 25.3848 24.5438 23.5321

Solucin: ajustecurv.m 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)) tm=0:0.1:10; wm=b*exp(m*tm); plot(t,w,' *',tm,wm) Ejecucin en MatLab >> 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 >> >>

10

08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos

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: (xi , yi ), i = 1, n ; donde xi < xi+ 1 , " i = 1, n - 1 Para hallar este valor intermedio: se usa las curvas halladas en el tema de curvas de ajuste. (xi , yi ), i = 1, n Para este procedimiento se usa el comando de interp1, con la siguiente estructura: yi = int erp1(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: ' 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 y 1 2 3 4 5 3,2406 0,6242 1,4707 0,7366 6,3717 Que corresponden a la funcin: f (x)= 1,5x cos (2x) Solucin: interpolf.m Ejecucin en MatLab x=0:1:5; >> interpolf 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,'-'); 0 1,0

08. POLINOMIOS, CURVAS DE AJUSTE E INTERPOLACION Lic. Amado Malca Villalobos


4 4 4

-2

-2

-2

-4

-4

-4

-6

-6

-6

-8

-8

-8

También podría gustarte