matlab yamil interpolacion polinomios

25
Interpolación y polinomios Ing Yamil Armando Cerquera Rojas – [email protected] Especialista en Sistemas Universidad Nacional Docente Universidad Surcolombiana Neiva – Huila - Enero 2007 El objetivo principal de la interpolación es el de interpolar datos conocidos en puntos discretos de forma tal que se puedan encontrar valores funcionales entre dichos puntos. Así por ejemplo, los métodos de integración numérica se derivan integrando polinomios de interpolación y las aproximaciones de diferencias finitas son derivadas igualmente de polinomios de interpolación. En esto radica la importancia del estudio de las expresiones de los polinomios de interpolación, su exactitud y los efectos de la selección de puntos de datos. Existen diversas formas para expresar los polinomios de interpolación, una de ellas es la expresión en serie de potencia. Un polinomio de orden o potencia n, tiene n raíces, las cuales pueden ser simples, múltiples o complejas. En general, si todos los coeficientes del polinomio son reales, todas las raíces complejas se encontrarán en pares conjugados complejos. La expresión general de un polinomio en serie de potencia es la siguiente: 1 2 3 1 2 1 .... + - - + + + + = n n n n c x c x c x c xn c y Donde n es el orden del polinomio (potencia más alta) y los i c son los coeficientes. Un polinomio puede también expresarse en forma factorizada según la siguiente expresión: ) r - .(x ) r - )(x r - (x c n 2 1 1 = y Donde i r son las raíces del polinomio. Definición de Polinomios en MATLAB: Un polinomio, en MATLAB, se representa mediante la notación usada para definir a un vector fila, éste vector estará conformado por los coeficientes de las potencias del polinomio descritas en forma descendente. Así, por ejemplo el polinomio siguiente: 6 5 2 3 5 2 3 4 + - - + = x x x x y Se representa en MATLAB como un vector fila definido con los elementos: p= [5 3 -2 -5 6] Es importante resaltar que los ceros definidos a la derecha en el vector son significativos, pues indican que el coeficiente de una potencia de orden menor a la potencia máxima es de valor cero, así para el siguiente polinomio:

Upload: victoria-pulido

Post on 01-Dec-2015

136 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: MatLab Yamil Interpolacion Polinomios

Interpolación y polinomiosIng Yamil Armando Cerquera Rojas – [email protected]

Especialista en Sistemas Universidad Nacional Docente Universidad Surcolombiana

Neiva – Huila - Enero 2007 El objetivo principal de la interpolación es el de interpolar datos conocidos en puntos discretos de forma tal que se puedan encontrar valores funcionales entre dichos puntos. Así por ejemplo, los métodos de integración numérica se derivan integrando polinomios de interpolación y las aproximaciones de diferencias finitas son derivadas igualmente de polinomios de interpolación. En esto radica la importancia del estudio de las expresiones de los polinomios de interpolación, su exactitud y los efectos de la selección de puntos de datos. Existen diversas formas para expresar los polinomios de interpolación, una de ellas es la expresión en serie de potencia. Un polinomio de orden o potencia n, tiene n raíces, las cuales pueden ser simples, múltiples o complejas. En general, si todos los coeficientes del polinomio son reales, todas las raíces complejas se encontrarán en pares conjugados complejos. La expresión general de un polinomio en serie de potencia es la siguiente:

12

31

21 .... +−− ++++= nnnn cxcxcxcxncy

Donde n es el orden del polinomio (potencia más alta) y los ic son los coeficientes. Un polinomio puede también expresarse en forma factorizada según la siguiente expresión:

)r-.(x)r-)(xr-(xc n211 …=y

Donde ir son las raíces del polinomio.

Definición de Polinomios en MATLAB: Un polinomio, en MATLAB, se representa mediante la notación usada para definir a un vector fila, éste vector estará conformado por los coeficientes de las potencias del polinomio descritas en forma descendente. Así, por ejemplo el polinomio siguiente:

65235 234 +−−+= xxxxy

Se representa en MATLAB como un vector fila definido con los elementos:

p= [5 3 -2 -5 6]

Es importante resaltar que los ceros definidos a la derecha en el vector son significativos, pues indican que el coeficiente de una potencia de orden menor a la potencia máxima es de valor cero, así para el siguiente polinomio:

Page 2: MatLab Yamil Interpolacion Polinomios

Funciones aplicables en MatLab

Interpolación de datos

interp1 - 1-D interpolation (table lookup). interp1q - Quick 1-D linear interpolation. interpft - 1-D interpolación usando el método FFT. interp2 - 2-D interpolación (table lookup). interp3 - 3-D interpolación (table lookup). interpn - N-D interpolación (table lookup). griddata - Data gridding and surface fitting. Interpolación Spline

spline - Cubic spline interpolation. ppval - Evaluate piecewise polynomial. Análisis Geométrico.

delaunay - Delaunay triangulation. dsearch - Search Delaunay triagulation for nearest point. tsearch - Closest triangle search. convhull - Convex hull. voronoi - Voronoi diagram. inpolygon - True for points inside polygonal region. rectint - Rectangle intersection area. polyarea - Area of polygon. Polinomios.

roots - Encuentra las raíces del polinomio. poly - Convierte raíces a polinomios. polyval - Evaluación polinomial. polyvalm - Evaluación polinomial con argumento matriz. residue - Partial-fraction expansión (residues). polyfit - Ajuste polinomial a datos. polyder - Diferenciación polinomial. pretty - Presenta de manera tradicional un polinomio. conv - Multiplica polinomios deconv - Divide polinomios. expand - Expande un polinomio simplify - Simplifica un polinomio solve - factor - poly2sym - sym2poly -

Page 3: MatLab Yamil Interpolacion Polinomios

Para obtener la ayuda presentada anteriormente Digite desde el prompt

» help \matlab\polyfun INTERP1 YI = INTERP1(X,Y,XI) interpola para encontrar YI, los valores de la función subyacente Y a los puntos en el vector XI. El vector X especifica los puntos a que los datos que Y se da. Si Y es una matriz, Entocens la interpolacion es desarrollada para cada columna de Y y YI will be length(XI)-by-size(Y,2). Valores fuera del rango son retornados como NaN.

YI = INTERP1(Y,XI) assumes X = 1:N, where N is the length(Y) for vector Y or SIZE(Y,1) for matrix Y. Interpolation is the same operation as "table lookup". Described in "table lookup" terms, the "table" is [X,Y] and INTERP1 "looks-up" the elements of XI in X, and, based upon their location, returns values YI interpolated within the elements of Y.

interp1(x,y,xi,’método’) Obtiene los valores correspondientes a los puntos xi con el método seleccionado a partir de los datos (x,y). Los métodos posibles son:‘nearest’: punto más cercano (grado 0)''linear': interpolación lineal (por defecto)'spline': interpolación cúbica con splines'pchip': Interpolación cúbica con polinomios de Hermite'cubic': Ide´ntica a 'pchip'

Ejemplos Si se define un vector con los valores de 1 a 10 y otro vector cuyos valores sean los mismos del vector anterior multiplicado por 2 se tendría lo siguiente.

» x=1:10; » y=2*x; La función interp1 permite encontrar un valor para y tal que x valga 5.5 » interp1(x,y,5.5) ans = 11 En el siguiente ejemplo nos permite encontrar un valor x tal que y valga 11. » interp1(y,x,11) ans = 5.50000000000000

Page 4: MatLab Yamil Interpolacion Polinomios

Por ejemplo, genere una curva seno e interpole sobre sobre el vector xi» x = 0:10; y = sin(x); xi = 0:.25:10; » yi = interp1(x,y,xi); plot(x,y,'o',xi,yi)

INTERP2 Ejemplo de utilización de interp2 » [x,y,z] = peaks(10); » [xi,yi] = meshgrid(-3:.1:3,-3:.1:3); » zi = interp2(x,y,z,xi,yi); » mesh(xi,yi,zi) La función peaks(i) es una función que consiste en lo siguiente: Genera una tabla de i elementos en forma de matriz donde x tendrá i filas por i columnas con valores que van desde -3 hasta 3 con step de 6/i, y cada columna con los mismos valores, mientras que para y los valores son los transpuestos de x La variable z estará dada por la función mostrada a continuación. z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2)... - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ... - 1/3*exp(-(x+1).^2 - y.^2) [xi,yi] = meshgrid(x,y) transforma el dominio especificado por os vectores x y y en matrices xi y yi que pueden ser usadas para la evaluación de funciones de 2 variables y graficar surface de 3 dimensiones. Las filas de la matriz xi de salida son copiadas del vector x y las columnas de la matriz de salida yi son copiadas de vector y. En últimas realiza algo similar que peaks con la diferencia que el meshgrid no calcula valores para z. Teniendo valores para x,y,z y dado los vectores xi y yi la función interp2 se encarga de encontrar os valores para zi y luego proceder a realizar la gráfica en tres dimensiones con la función mesh.

Ejercicio.- Considere la función

z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ... - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ... - 1/3*exp(-(x+1).^2 - y.^2);

Page 5: MatLab Yamil Interpolacion Polinomios

Implementada en la función peaks de MATLAB.

Tome una muestra de puntos de dicha superficie » [x,y]=meshgrid(-3:1:3); » z=peaks(x,y); » surf(x,y,z)

Genere una malla más fina

» [xi,yi]=meshgrid(-3:0.25:3);

Interpole mediante el método 'nearest'

» zi1=interp2(x,y,z,xi,yi,'nearest');

Interpole mediante el método 'bilinear'

» zi2=interp2(x,y,z,xi,yi,'bilinear');

Interpole mediante el método 'bicubic'

» zi3=interp2(x,y,z,xi,yi,'bicubic');

Si se dibuja los interpolantes

» surf(xi,yi,zi1); » surf(xi,yi,zi2); » surf(xi,yi,zi3);

Se puede observar que el método 'bicubic' proporciona contornos más suaves. No obstante, no siempre esto es lo deseado.

INTERP3

INTERPn

INTERPOLACION SPLINE SPLINE interpolación de datos Cúbica spline.

Page 6: MatLab Yamil Interpolacion Polinomios

YY = SPLINE(X,Y,XX) usa interpolación cúbica del spline para encontrar un vector YY que corresponde a XX. X y Y son los vectores de los datos dados y XX es el nuevo vector de la abscisa. Las ordenadas Y puede ser vector-evaluados en donde todos los Y(:,j) es la ordenada del j-th. PP = SPLINE(X,Y) retorna el ppform del spline cúbico interpolando en cambio, para el uso más tarde con PPVAL, etc. Ordinariamente, las condiciones de extremo de no-un-nudo se usan. Sin embargo, si Y contiene dos más ordenadas que las entradas de X, entonces el primero, y última ordenada en Y se usa como el endslopes para el spline cúbico. el siguiente ejemplo que genera una curva del seno con pocos puntos para el trazo, entonces muestra el spline encima graficando una malla mas fina. » x = 0:10; y =sin(x); » xx = 0:0.25:10; » yy =spline(x,y,xx); » plot(x,y,'o',xx,yy) En el siguiente ejemplo se ofrece un spline vector-valorados, junto con completo interpolación del spline, es decir, encajando al extremo dado se inclina (en lugar de usar La condición de extremo de no-un-nudo); usa SPLINE para generar un círculo: » x=0:4; » y=[0 1 0 -1 0 1 0;pi/2 0 1 0 -1 0 pi/2]; » circle = spline(x, y); » xx = 0:0.1:4; » cc= ppval(circle,xx); » plot(cc(1,:), cc(2,:)), axis equal % ejes iguales También vea INTERP1, PPVAL, SPLINES (El Spline Toolbox)

POLINOMIOS

ROOTS: Raíces de polinomios La función roots devuelve las raíces correspondientes al polinomio descrito en la variable que se de como parámetro. si se tiene una función y=x4-3*x2-3*x se puede calcular las raíces de la siguiente manera;

Page 7: MatLab Yamil Interpolacion Polinomios

En el vector x se almacenan los coeficientes de la función que para el caso del ejemplo sería 1 para x4

0 para x3

-3 para x2

-3 para x1

0 para el termino x0 o lineal. » x=[1 0 -3 -3 0]; » roots(x) ans = 0 2.10380340273554 -1.05190170136777 + 0.56523585167717i -1.05190170136777 - 0.56523585167717i Analizando la respuesta entregada por matlab se puede deducir que el polinomio tiene 4 raíces de las cuales 2 son reales y 2 imaginaras, correspondiendo las reales a los términos [0 y 2.10380340273554] y las raíces imaginarias a los términos [-1.05190170136777 + 0.56523585167717i] y [-1.05190170136777 -0.56523585167717i ]

POLY » help poly POLY convierte raíces de ecuaciones en ecuación polinomial.♦ POLY(A), donde A es una matriz de N por N, poly(A) es un vector con N+1

elementos donde cada término corresponde a los coeficientes del polinomio característico, DET(lambda*EYE(SIZE(A)) - A).

♦ POLY(V), cuando V es un vector, poly(V) es un vector donde los elementos son los coeficientes del polinomio si las raíces son los elementos de V . Para vectores, ROOTS y POLY son funciones inversas, up to ordering, scaling, and roundoff error.

♦ roots(poly(1:20)) genera el famoso ejemplo Wilkinson's. Ver también ROOTS, CONV, RESIDUE, POLYVAL. Si se conocen las raíces de un polinomio cualquiera se puede encontrar el polinomio entrando los valores de las raíces y aplicando la función poly para encontrar dicho polinomio así: » x=[-2 2]; » poly(x)

Page 8: MatLab Yamil Interpolacion Polinomios

ans = 1 0 -4 Para el ejemplo anterior los valores de -2 y 2 son las raíces dadas, al aplicar la función poly entrega como respuesta los coeficientes del polinomio, el resultado entregado por el programa se interpreta como que las raíces declaradas en vector fila x son las del polinomio definido por la siguiente relación: 1x2 + 0x - 4 es decir 42 −x . Para el caso de aplicar la función poly en matemática simbólica se dará: » help sym/poly.m POLY Polinomio característico simbólico♦ POLY(A) computes the characteristic polynomial of the SYM matrix A. el

resultado es el polinomio simbólico en 'x' o 't'♦ POLY(A,v) usa 'v' en lugar de 'x'. v es una variable simbólica SYM. Ejemplo: Se puede dar valores a cuatro variables así: » a=3; » b=5; » c=2; » d=5; » poly([a b; c d]) ans = 1 -8 5 o también se puede definir una matriz de 2 por 2 y así: » y=[3 5;2 5]; » poly(y) ans = 1 -8 5 Para ambos casos del ejemplo la función poly realiza lo siguiente: poly([a b; c d]) retorna x^2-x*d-a*x+a*d-b*c x^2-5x-3x+15-10 = x^2-8x+5 que es el resultado de la aplicación de la función poly. Si se define una matriz con los siguientes elementos

Page 9: MatLab Yamil Interpolacion Polinomios

» a=[1 0 -1; 2 1 -1; -1 1 2]; » poly(a) ans =

1.0000 -4.0000 5.0000 0.0000

Se sabe que el polinomio característico de a viene dado por πλλ 54 23 +− .

Si se trabaja con matemática simbólica es decir con variables a las cuales no se les conoce los valores se tendrá » syms a b c d; » f=[a b;c d]; » poly(f) ans = x^2-x*d-a*x+a*d-b*c

ó » syms v » poly(f,v) ans = v^2-v*d-a*v+a*d-b*c Ahora dependiendo de los valores que se de a las variables a,b,c,d se tendrá la ecuación característica de la matriz f en función de x o v "variable simbólica definida".

POLYVAL: Evaluación polinomial.

La notación polyval(p,xi) permite evaluar el valor del polinomio p(x) para el valor de xi. Si xi es un vector que contiene múltiples valores de la abscisa, el resultado será un vector, con los valores de las respuestas, de la misma longitud de xi.

Sintaxis:♦ Y = POLYVAL(P,X), donde P es un vector de longitud N+1, cuando los

elementos son los coeficientes del polinomio, Y es el valor del polinomio evaluado en X así.

Y = P(1)*X^N + P(2)*X^(N-1) + ... + P(N)*X + P(N+1)

si X es una matriz o un vector, el polinomio es evaluado con todos los puntos de X. mirar también POLYVALM para evaluación en una matriz sense.

♦ [Y,DELTA] = POLYVAL(P,X,S) uses the optional output structure generated by POLYFIT to generate error estimates, Y +/- delta. If the errors in the data input to POLYFIT are independent normal with constant variance, Y +/- DELTA contains at least 50% of the predictions.

Page 10: MatLab Yamil Interpolacion Polinomios

Ejemplo Si se tiene el polinomio 6523)( 23 −+−= xxxxf y se quiere evaluar dicha función en x=2, para ello se dará las siguientes instrucciones » y=[3 -2 5 -6]; corresponde a los coeficientes del polinomio » z=polyval(y,2) la instrucción para evaluar el polinomio en el valor de x= 2z = 20 El resultado corresponde a 2062*52*22*3)2( 23 =−+−=f Si se tiene un vector x dado por 5 valores como se muestra en ejemplo siguiente » x=[1:5]; » z=polyval(y,x) z =

0 20 72 174 344 Los valores entregados para z corresponden a la evaluación del polinomio con cada uno de los valores de x, es decir. f(1)=3*13-2*12+5*1-6 = 0f(2)=3*23-2*22+5*2-6 = 20f(3)=3*33-2*32+5*3-6 = 72f(4)=3*43-2*42+5*4-6 = 174f(5)=3*53-2*52+5*5-6 = 344

RESIDUE: Diferenciación de polinomios.

Descomposición en fracciones parciales de una función racional: la notación [r,p,k]=residue(numf(x),denomf(x)) permite la descomposición en fracciones parciales de la función f(x), donde los componente r son los residuos de las fracciones parciales, los componentes p son los polos o raíces de la fracción y k es el orden o factor de ganancia.

% Descomposición en Fracciones Parciales de una función racional:

» nFx=[4 2 -1]; % Define numerador de f(x)» dFx=[5 6 4 -3 -5]; % Define denominador de f(x)» [r,p,k]=residue(nFx,dFx) r =-0.0385 - 0.2932i-0.0385 + 0.2932i-0.0490

Page 11: MatLab Yamil Interpolacion Polinomios

0.1261

p =-0.5369 + 1.0477i-0.5369 - 1.0477i-0.91480.7887

k =[ ]

La interpretación de estos resultados es la siguiente: la función f(x) definida en la forma polinómica:

53465124)( 234

2

−−++−+=

xxxxxxxf

Al descomponerla en fracciones parciales será igual a:

07887.01261.0

)9148.0(049.0

)0477.15369.0(2932.00385.0

)0477.15369.0(2932.00385.0)( +

−+

−−−+

−−−+−+

+−−−−=

xxjxi

jxixf

En el caso de que en la descomposición de la función en fracciones parciales aparezcan polos múltiples, el desarrollo de la función se presentará en el orden siguiente:

npxpxpxpx )(,...,)(,)(),( 13

12

11 −−−−

Reconstrucción de una función racional a partir de sus fracciones parciales: es posible el reconstruir el numerador y denominador de una función racional utilizado la notación siguiente: [numFx,denFx] = residue(r,p,k). el programa entrega dos vectores contentivos de los datos del polinomio de numerador y del polinomio del denominador de la función f(x).

» nFs=[2 4 2]; » dFs=[4 6 2 4 2]; » [r,p,k]=residue(nFs,dFs) r =

-0.0320-0.0396 - 0.3326i-0.0396 + 0.3326i0.1111

p =-1.46560.2328 + 0.7926i0.2328 - 0.7926i-0.5000

Page 12: MatLab Yamil Interpolacion Polinomios

k =[ ]

» numFs,denFs]=residue(r,p,k) numFs =

0 0.5000 1.0000 0.5000denFs =

1.0000 1.5000 0.5000 1.0000 0.5000

Puede observarse en los resultados obtenidos que el polinomio del numerador y el polinomio del denominador aparecen simplificados por un factor de escala (4 en este caso) que es el coeficiente de la potencia de mayor orden del polinomio del denominador, si ambos (numerador y denominador) se multiplican por este factor, se obtienen los respectivos valores iniciales (definidos) de los polinomios de la función racional.

» 4*numFs ans =

0 2.0000 4.0000 2.0000» 4*denFs ans =

4.0000 6.0000 2.0000 4.0000 2.0000

Descomponer el cociente de dos polinomios en fracciones con un único polo. Por ejemplo, dados los polinomios p=s2+s+1 y q=s3-5s2+8s-4 la descomposición sería:

13

)2(7

22

4851

223

2

−+

−+

−−=

−+−++

ssssssss

POLYFIT:

POLYFIT Fit polynomial to data.

POLYFIT(X,Y,N) encuentra los coeficientes de un polinomio P(X) de grado N que ajusta los datos, P(X(I))~=Y(I), in a least-squares sense. [P,S] = POLYFIT(X,Y,N) returns the polynomial coefficients P and a structure S for use with POLYVAL to obtain error estimates on predictions. If the errors in the data, Y, are independent normal with constant variance, POLYVAL will produce error bounds which contain at least 50% of the predictions. The structure S contains the Cholesky factor of the Vandermonde matrix (R), the degrees of freedom (df), and the norm of the residuals (normr) as fields. See also POLY, POLYVAL, ROOTS.

Page 13: MatLab Yamil Interpolacion Polinomios

Dado un conjunto de pares de datos (puntos en el plano ó pares coordenados), representados en MATLAB mediante dos vectores x y y que almacenan, respectivamente, las coordenadas x e y de dichos datos, puede realizarse un ajuste polinomial de grado n (n=1 para una recta, n=2 para una parábola,...) de los mismos sin más que invocar la función polyfit de la siguiente manera: coef=polyfit(x, y, n), que devuelve un vector (en este caso de nombre coef) en el que se almacenan los coeficientes (2 en el caso de una recta) en orden decreciente de grado. Así, si se desea ajustar por un polinomio de grado 2 (3 coeficientes, por tanto) un conjunto de datos puede operarse de la siguiente manera:

x=[0.25 0.5 0.7 0.8];y=[0.52 0.99 1.3 1.45];n=2;coef=polyfit(x, y, n);

Así, en el vector coef quedan almacenados los tres coeficientes, que corresponden al polinomio: 0199.03124.25985.0 2 −+− xx , Almacenados de modo que

-0.5985 -> coef(1) 2.3124 -> coef(2)-0.0199 -> coef(3)

POLYDER: Diferenciación de polinomios.

♦ polyder(P) retorna la derivada del polinomio en donde los coeficientes son los elementos del vector P.

♦ polyder(A,B) retorna la derivada del polinomio A*B.♦ [Q,D] = polyder(B,A) retorna la derivada de la división polinomial B/A,

representado como Q/D.

Si se tiene el polinomio x3+3x2-5x+6 la derivada corresponderá a: » x=[1 3 -5 6]; » polyder(x) ans = 3 6 -5 en donde 3,6,-5 corresponde a 3x2+6x-5 que es la derivada del polinomio ejemplo. Si se tienen dos polinomios ejemplo x-2 y x+2 y los coeficientes se almacenan en los vectores x y y la derivada de su multiplicación será: » x=[1 2];

Page 14: MatLab Yamil Interpolacion Polinomios

» y=[1 -2]; » polyder(x,y) ans = 2 0 el resultado corresponde a la derivada de )2)(2( −+ xx o 42 −x que será

02 +x .

CONV: Convolution (multiplicación polinomial).

♦ C = CONV(A, B) multiplica los vectores A y B. El resultado es un vector de longitud LENGTH(A)+LENGTH(B)-1. si A y B son vectores de coeficientes de polinomios, la convolución entonces es equivalente a la multiplicación de 2 polinomios.

Tomando como ejemplo los polinomios 432 2 ++= xxf y 422 +−= xxg ; la multiplicación de f y g se dará teniendo en f los coeficientes del primer polinomio y en g los coeficientes del segundo polinomio. » f=[2 3 4]; » g=[1 -2 4]; » conv(f,g) ans = 2 -1 6 4 16 El resultado corresponde a 164612 234 +++− xxxx equivalente a la multiplicación de )432( 2 ++ xx * )421( 2 +− xx Para comprobar que 54)1)(5( 2 −−=+− xxxx basta ejecutar

» conv([1 -5], [1 1]) ans =

1 -4 -5

El resultado corresponde a 541 2 −− xx

Ver también XCORR, DECONV, CONV2, FILTER, y CONVMTX en el toolbox de Procesamiento de señales.

DECONV Deconvolution (división polinomial).

Page 15: MatLab Yamil Interpolacion Polinomios

♦ [Q,R] = DECONV(B,A) divide el vector B sobre el vector A (B/A). el resultado es almacenado en el vector Q=B/A y el residuo almacenado en el vector R tal que B = conv(A ,Q) + R.

Si A y B son vectores de los coeficientes del polinomio, deconvolution es equivalente a la división de los polinomios. El resultado de la división B por A es Q como cociente y R como residuo.

Si se tiene el polinomio 56542 2345 ++−+−= xxxxxa , expresado como polinomio en matlab se tiene:» a=[1 -2 4 -5 6 5] a = 1 -2 -1 6 5

y el polinomio 2−= xb , expresado en términos de MatLab así:

» b=[1 -2] b = 1 -2

La división del polinomio a entre el b es decir a/b se dará de la siguiente manera:

» deconv(a,b) ans = 1 0 4 3 12

Interpretado el resultado se puede decir que ,1234 24 +++= xxxba

Y si se diera la instrucción de la siguiente manera:

» [p q]=deconv(a,b) p = 1 0 4 3 12q = 0 0 0 0 0 29

se interpretaría que ,1234 24 +++= xxxba con residuo 29

Ver también CONV.

EXPAND: Expansión simbólica

Syntax

Page 16: MatLab Yamil Interpolacion Polinomios

R = expand(S)DescriptionEXPAND(S) Escribe cada elemento de una expresión simbólica S como un producto de estos factores. EXPAND is most often used on polynomials, but also expands trigonometric, exponential and logarithmic functions.Ejemplos» expand((x-2)*(x-4)) ans = x^2-6*x+8

» expand(cos(x+y)) ans = cos(x)*cos(y)-sin(x)*sin(y)

» expand(exp((a+b)^2)) ans = exp(a^2)*exp(a*b)^2*exp(b^2)

» expand(log(a*b/sqrt(c))) ans = log(a)+log(b)-1/2*log(c)

» expand([sin(2*t), cos(2*t)]) ans = [2*sin(t)*cos(t), 2*cos(t)^2-1]

» v = [exp(x + y) log(x^2/y)];

» expand((x+1)^3) ans = x^3+3*x^2+3*x+1

» expand(sin(x+y)) ans = sin(x)*cos(y)+cos(x)*sin(y)

» expand(v) ans = [exp(x)*exp(y), 2*log(x)-log(y)] » syms x y » expand((x+3*y)*(-2*x+7*y)) ans = -2*x^2+x*y+21*y^2

» syms x » p1=(x^2-4)/(x^2-1) p1 = (x^2-4)/(x^2-1)

» p2=x-2; » p3=x-1; » expand(p2*p3)

Page 17: MatLab Yamil Interpolacion Polinomios

ans = x^2-3*x+2

» expand(p3^2) ans = x^2-2*x+1

» p5=expand(p2*p3^2) p5 = x^3-4*x^2+5*x-2

» pretty(p5) ans= 3 2 x - 4 x + 5 x - 2

» pretty(p1/p2) ans= 2 x - 4 ---------------- 2 (x - 1) (x - 2)»

See also SIMPLIFY, SIMPLE, FACTOR, COLLECT.

Objetos simbólicos.

» syms x % Se declara x como objeto simbólico.La x puede ser una constante, una variable o una expresión en la que intervengan constantes, variables, operadores aritméticos, funciones predefinidas.» syms a b c % declara a,b,c como variables simbólicas.

Un objeto numérico m se puede convertir en simbólico escribiendo:

» M=sym(m)

Otros comandos:

» syms x » expand ( (1+x)* (3-x)) % desarrolla la expresión en suma de monomios.ans=

3+2*x-x^2

Se puede expresar el resultado anterior con la notación habitual utilizando la orden pretty.

» pretty(expand( (1+x)*(3-x))) ans=

Page 18: MatLab Yamil Interpolacion Polinomios

223 xx −+

» solve ('-x^2-2*x+3=0','x') % resuelve la ecuación.ans=

[ -3 ][ 1 ]

» simplify ( f ) % simplifica la expresión simbólica f.» simple ( f ) % busca la forma más simple de la expresión simbólica f.» [r,a] = simple(f ) % guarda en r la expresión simplificada y en a describe el

método de simplificación utilizado.» subs(f,a) % aplica f en a.» subs(f,x,s) % substituye en f la variable x por la s.» factor( f ) % factoriza la expresión simbólica f. Si f es un número entero

lo descompone en factores primos.

PRETTYPRETTY Pretty print a symbolic expression. PRETTY(S) prints the symbolic expression S in a format that resembles type-set mathematics. PRETTY(S,n) uses screen width n instead of the default 79. See also SUBEXPR, LATEX, CCODE.

SIMPLIFYSimplificación simbólica.Syntax

R = simplify(S)

Descripcionsimplify(S) simplifies each element of the symbolic matrix S using Maple simplification rules.Examples» simplify(sin(x)^2 + cos(x)^2)

1» simplify(exp(c*log(sqrt(a+b))))

(a+b)^(1/2*c)

La instrucción

S = [(x^2+5*x+6)/(x+2),sqrt(16)]; R = simplify(S)

Page 19: MatLab Yamil Interpolacion Polinomios

R = [x+3,4]

» syms x » p1=(x^2-4)/(x^2-1); » p2=x-2; » p3=x-1; » p4=simplify(p1*p3/p2) p4 =

(x+2)/(x+1)

SOLVESOLVE Symbolic solution of algebraic equations.

SOLVE('eqn1','eqn2',...,'eqnN') SOLVE('eqn1','eqn2',...,'eqnN','var1,var2,...,varN') SOLVE('eqn1','eqn2',...,'eqnN','var1','var2',...'varN') The eqns are symbolic expressions or strings specifying equations. The vars are symbolic variables or strings specifying the unknown variables.

SOLVE seeks zeros of the expressions or solutions of the equations. If not specified, the unknowns in the system are determined by FINDSYM. If no analytical solution is found and the number of equations equals the number of dependent variables, a numeric solution is attempted. Three different types of output are possible. For one equation and one output, the resulting solution is returned, with multiple solutions to a nonlinear equation in a symbolic vector. For several equations and an equal number of outputs, the results are sorted in lexicographic order and assigned to the outputs. For several equations and a single output, a structure containing the solutions is returned. Ejemplos: » solve('p*sin(x) = r') chooses 'x' as the unknown and returnsans = asin(r/p) » [x,y] = solve('x^2 + x*y + y = 3','x^2 - 4*x + 3 = 0') x =

[ 1][ 3]

y =[ 1][ -3/2]

Page 20: MatLab Yamil Interpolacion Polinomios

» S = solve('x^2*y^2 -2*x-1=0' , 'x^2-y^2-1=0') La solución en una estructura. S =

x: [8x1 sym]y: [8x1 sym]

» S.x ans =

[ 1/2*5^(1/2)+1/2][ 1/2*5^(1/2)+1/2][ 1/2-1/2*5^(1/2)][ 1/2-1/2*5^(1/2)][ -1/2+1/2*i*3^(1/2)][ -1/2+1/2*i*3^(1/2)][ -1/2-1/2*i*3^(1/2)][ -1/2-1/2*i*3^(1/2)]

» eval(S.x) ans = 1.6180 1.6180 -0.6180 -0.6180 -0.5000 + 0.8660i -0.5000 + 0.8660i -0.5000 - 0.8660i -0.5000 - 0.8660i

» [u,v] = solve('a*u^2 + v^2 = 0','u - v = 1') recuerda 'a' como un parámetro y soluciona las dos ecuaciones para u y v.u =

[ 1/2/(a+1)*(-2*a+2*(-a)^(1/2))+1][ 1/2/(a+1)*(-2*a-2*(-a)^(1/2))+1]

v =

[ 1/2/(a+1)*(-2*a+2*(-a)^(1/2))][ 1/2/(a+1)*(-2*a-2*(-a)^(1/2))]

» S = solve('a*u^2 + v^2','u - v = 1','a,u') recuerda 'v' como un parámetro, soluciona las dos ecuaciones, y retorna S.a y S.u.

S = a: [1x1 sym] u: [1x1 sym]» S.a ans =

Page 21: MatLab Yamil Interpolacion Polinomios

-v^2/(v^2+2*v+1)» S.u ans =

v+1

» [a,u,v] = solve('a*u^2+v^2' , 'u-v=1' , 'a^2-5*a+6') Soluciona las tres ecuaciones para a, u y v.a =

[ 2][ 2][ 3][ 3]

u =

[ 1/3+1/3*i*2^(1/2)][ 1/3-1/3*i*2^(1/2)][ 1/4+1/4*i*3^(1/2)][ 1/4-1/4*i*3^(1/2)]

v =

[ -2/3+1/3*i*2^(1/2)][ -2/3-1/3*i*2^(1/2)][ -3/4+1/4*i*3^(1/2)][ -3/4-1/4*i*3^(1/2)]

» [x,y] = solve('sin(x+y)-exp(x)*y = 0','x^2-y = 2') cannot find an analytic solution, so returns a numeric solution.ans = x: [1x1 sym] y: [1x1 sym]» ans.x ans =

-6.0173272500593065641097297117905

Ejemplos

» solve('x^2+4=0','x') ans =

[ 2*i ][ -2*i ]

» solve('x^2+4=12','x') ans =

[ 2*2^(1/2) ][ -2*2^(1/2) ]

La respuesta es exacta en ambos ejemplos. Para obtener salida numérica se hace:

Page 22: MatLab Yamil Interpolacion Polinomios

» numeric(solve('x^2+4=12','x')) ans =

2.828427124746190e+000-2.828427124746190e+000

En lo que sigue la expresión exp(-x)-x es un objeto string.

» solve('exp(-x)-x=0') % x no es SYMans =

lambertw(1) % Funcion especial matlab

» numeric(solve('exp(-x)-x=0')) ans=

5.6714e-001

» syms x y

» solve('x*y=12','x+y=5','x','y') ans = x: [2x1 sym] y: [2x1 sym]» ans.x ans =

[ 5/2-1/2*i*23^(1/2) ][ 5/2+1/2*i*23^(1/2) ]

» eval(ans) ans = 2.5000 + 2.3979i 2.5000 - 2.3979i

See also DSOLVE.

FACTORFACTOR Prime factors. FACTOR(N) returns a vector containing the prime factors of N. See also PRIMES, ISPRIME.

FACTOR Symbolic factorization. FACTOR(S), where S is a SYM matrix, factors each element of S. If S contains all integer elements, the prime factorization is computed. To factor integers greater than 2^52, use FACTOR(SYM('N')).

Page 23: MatLab Yamil Interpolacion Polinomios

Ejemplos: » factor(x^9-1) ans =

(x-1)*(x^2+x+1)*(x^6+x^3+1) » factor(sym('12345678901234567890')) ans =

(2)*(3)^2*(5)*(101)*(3803)*(3607)*(27961)*(3541) See also FACTOR, SIMPLIFY, EXPAND, SIMPLE, COLLECT.

POLY2SYM

POLY2SYM: Vector de coeficientes polinomial a polinomio simbólico.POLY2SYM(C) es un polinomio simbólico en 'x' con coeficientes desde el vector C.POLY2SYM(C,'V') y POLY2SYM(C,SYM('V') ambos usan una variable simbólica especificada por el segundo argumento. Ejemplo:

» poly2sym([1 0 -2 -5]) ans =

x^3-2*x-5 » x = sym('x'); » poly2sym([1 0 -2 -5],x) ans =

x^3-2*x-5

» poly2sym([1 0 -2 -5],'t') ans = t^3-2*t-5

» t = sym('t') » poly2sym([1 0 -2 -5],t) ans = t^3-2*t-5 See also SYM2POLY, POLYVAL.

Overloaded methods

Page 24: MatLab Yamil Interpolacion Polinomios

help sym/poly2sym.m

SYM2POLYSYM2POLY Polinomio simbólico a vector de coeficientes polinomial.SYM2POLY(P) retorna un vector fila conteniendo los coeficientes del polinomio simbólico P. Ejemplo:

sym2poly(x^3 - 2*x - 5) ans =

[1 0 -2 -5]. See also POLY2SYM.

POLYPOLY Convierte raíces a polinomios.

POLY(A), cuando A es una matriz de N por N, es un vector fila con N+1 elementos which are the coefficients of the characteristic polynomial, DET(lambda*EYE(SIZE(A)) - A) . poly(V) devuelve un vector cuyas componentes son los coeficientes del polinomio (según potencias decrecientes) cuyas raíces son los elementos del vector V y tiene coeficiente director 1.

POLY(V), when V is a vector, is a vector whose elements are the coefficients of the polynomial whose roots are the elements of V . For vectors, ROOTS and POLY are inverse functions of each other, up to ordering, scaling, and roundoff error. roots(poly(1:20)) genera el famoso ejemplo Wilkinson's.ans = 19.9997 19.0032 17.9857 17.0360 15.9319 15.0842 13.9220 13.0565 11.9725

Page 25: MatLab Yamil Interpolacion Polinomios

11.0107 9.9972 9.0005 7.9999 7.0000 6.0000 5.0000 4.0000 3.0000 2.0000 1.0000

See also ROOTS, CONV, RESIDUE, POLYVAL.

POLY Symbolic characteristic polynomial.POLY(A) computes the characteristic polynomial of the SYM matrix A. The result is a symbolic polynomial in 'x' or 't' POLY(A,v) uses 'v' instead of 'x'. v is a SYM. Example:

poly([a b; c d]) returns x^2-x*d-a*x+a*d-b*c. See also POLY, POLY2SYM, SYM2POLY, JORDAN, EIG, SOLVE.

Overloaded methods help sym/poly.m