Vous êtes sur la page 1sur 25

Interpolacin y polinomios

Ing Yamil Armando Cerquera Rojas yacerque@gmail.com Especialista en Sistemas Universidad Nacional Docente Universidad Surcolombiana Neiva Huila - Enero 2007

El objetivo principal de la interpolacin 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 mtodos de integracin numrica se derivan integrando polinomios de interpolacin y las aproximaciones de diferencias finitas son derivadas igualmente de polinomios de interpolacin. En esto radica la importancia del estudio de las expresiones de los polinomios de interpolacin, su exactitud y los efectos de la seleccin de puntos de datos. Existen diversas formas para expresar los polinomios de interpolacin, una de ellas es la expresin en serie de potencia. Un polinomio de orden o potencia n, tiene n races, las cuales pueden ser simples, mltiples o complejas. En general, si todos los coeficientes del polinomio son reales, todas las races complejas se encontrarn en pares conjugados complejos. La expresin general de un polinomio en serie de potencia es la siguiente: y = c1 xn + c2 x n 1 + c3 x n 2 + ....cn x + cn + 1 Donde n es el orden del polinomio (potencia ms alta) y los ci son los coeficientes. Un polinomio puede tambin expresarse en forma factorizada segn la siguiente expresin: y = c1 (x - r1 )(x - r2 ) .(x - rn ) Donde ri son las races del polinomio. Definicin de Polinomios en MATLAB: Un polinomio, en MATLAB, se representa mediante la notacin 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: y = 5x 4 + 3x3 2 x 2 5x + 6 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 mxima es de valor cero, as para el siguiente polinomio:

Funciones aplicables en MatLab Interpolacin de datos interp1 interp1q interpft interp2 interp3 interpn griddata Interpolacin Spline spline ppval - Cubic spline interpolation. - Evaluate piecewise polynomial. - 1-D interpolation (table lookup). - Quick 1-D linear interpolation. - 1-D interpolacin usando el mtodo FFT. - 2-D interpolacin (table lookup). - 3-D interpolacin (table lookup). - N-D interpolacin (table lookup). - Data gridding and surface fitting.

Anlisis Geomtrico. delaunay dsearch tsearch convhull voronoi inpolygon rectint polyarea Polinomios. roots poly polyval polyvalm residue polyfit polyder pretty conv deconv expand simplify solve factor poly2sym sym2poly - Encuentra las races del polinomio. - Convierte races a polinomios. - Evaluacin polinomial. - Evaluacin polinomial con argumento matriz. - Partial-fraction expansin (residues). - Ajuste polinomial a datos. - Diferenciacin polinomial. - Presenta de manera tradicional un polinomio. - Multiplica polinomios - Divide polinomios. - Expande un polinomio - Simplifica un polinomio - Delaunay triangulation. - Search Delaunay triagulation for nearest point. - Closest triangle search. - Convex hull. - Voronoi diagram. - True for points inside polygonal region. - Rectangle intersection area. - Area of polygon.

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 funcin 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,mtodo) Obtiene los valores correspondientes a los puntos xi con el mtodo seleccionado a partir de los datos (x,y). Los mtodos posibles son: nearest: punto ms cercano (grado 0) ''linear': interpolacin lineal (por defecto) 'spline': interpolacin cbica con splines 'pchip': Interpolacin cbica con polinomios de Hermite 'cubic': Identica 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 tendra lo siguiente. x=1:10; y=2*x; La funcin 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

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 utilizacin 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 funcin peaks(i) es una funcin 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 funcin mostrada a continuacin. 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 evaluacin 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 funcin interp2 se encarga de encontrar os valores para zi y luego proceder a realizar la grfica en tres dimensiones con la funcin mesh. Ejercicio.- Considere la funcin 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);

Implementada en la funcin 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 ms fina [xi,yi]=meshgrid(-3:0.25:3); Interpole mediante el mtodo 'nearest' zi1=interp2(x,y,z,xi,yi,'nearest'); Interpole mediante el mtodo 'bilinear' zi2=interp2(x,y,z,xi,yi,'bilinear'); Interpole mediante el mtodo '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 mtodo 'bicubic' proporciona contornos ms suaves. No obstante, no siempre esto es lo deseado.

INTERP3

INTERPn

INTERPOLACION SPLINE SPLINE interpolacin de datos Cbica spline.

YY = SPLINE(X,Y,XX) usa interpolacin cbica 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 cbico interpolando en cambio, para el uso ms tarde con PPVAL, etc. Ordinariamente, las condiciones de extremo de no-un-nudo se usan. Sin embargo, si Y contiene dos ms ordenadas que las entradas de X, entonces el primero, y ltima ordenada en Y se usa como el endslopes para el spline cbico. 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 interpolacin del spline, es decir, encajando al extremo dado se inclina (en lugar de usar La condicin de extremo de no-un-nudo); usa SPLINE para generar un crculo: 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 Tambin vea INTERP1, PPVAL, SPLINES (El Spline Toolbox)

POLINOMIOS
ROOTS: Races de polinomios La funcin roots devuelve las races correspondientes al polinomio descrito en la variable que se de como parmetro. si se tiene una funcin y=x 4-3*x2-3*x se puede calcular las races de la siguiente manera;

En el vector x se almacenan los coeficientes de la funcin que para el caso del ejemplo sera 1 para x4 0 para x3 -3 para x2 -3 para x1 0 para el termino x o lineal.
0

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 races de las cuales 2 son reales y 2 imaginaras, correspondiendo las reales a los trminos [0 y 2.10380340273554] y las races imaginarias a los trminos [-1.05190170136777 + 0.56523585167717i] y [-1.05190170136777 -0.56523585167717i ] POLY help poly POLY convierte races de ecuaciones en ecuacin polinomial. POLY(A), donde A es una matriz de N por N, poly(A) es un vector con N+1 elementos donde cada trmino corresponde a los coeficientes del polinomio caracterstico, 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 races 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 tambin ROOTS, CONV, RESIDUE, POLYVAL. Si se conocen las races de un polinomio cualquiera se puede encontrar el polinomio entrando los valores de las races y aplicando la funcin poly para encontrar dicho polinomio as: x=[-2 2]; poly(x)

ans = 1 0

-4

Para el ejemplo anterior los valores de -2 y 2 son las races dadas, al aplicar la funcin poly entrega como respuesta los coeficientes del polinomio, el resultado entregado por el programa se interpreta como que las races declaradas en vector fila x son las del polinomio definido por la siguiente relacin: 1x2 + 0x - 4 es decir x 2 4 . Para el caso de aplicar la funcin poly en matemtica simblica se dar: help sym/poly.m POLY Polinomio caracterstico simblico POLY(A) computes the characteristic polynomial of the SYM matrix A. el resultado es el polinomio simblico en 'x' o 't' POLY(A,v) usa 'v' en lugar de 'x'. v es una variable simblica 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 tambin 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 funcin 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 aplicacin de la funcin poly. Si se define una matriz con los siguientes elementos

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 caracterstico de a viene dado por 3 4 2 + 5 . Si se trabaja con matemtica simblica 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 ecuacin caracterstica de la matriz f en funcin de x o v "variable simblica definida". POLYVAL: Evaluacin polinomial.
La notacin polyval(p,xi) permite evaluar el valor del polinomio p(x) para el valor de xi. Si xi es un vector que contiene mltiples 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 tambin POLYVALM para evaluacin 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.

Ejemplo Si se tiene el polinomio f ( x) = 3 x 3 2 x 2 + 5 x 6 y se quiere evaluar dicha funcin en x=2, para ello se dar las siguientes instrucciones y=[3 -2 5 -6]; z=polyval(y,2) z= 20 corresponde a los coeficientes del polinomio la instruccin para evaluar el polinomio en el valor de x= 2

El resultado corresponde a f ( 2) = 3 * 2 3 2 * 2 2 + 5 * 2 6 = 20 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 evaluacin del polinomio con cada uno de los valores de x, es decir. f(1)=3*13-2*12+5*1-6 = 0 f(2)=3*23-2*22+5*2-6 = 20 f(3)=3*33-2*32+5*3-6 = 72 f(4)=3*43-2*42+5*4-6 = 174 f(5)=3*53-2*52+5*5-6 = 344 RESIDUE: Diferenciacin de polinomios. Descomposicin en fracciones parciales de una funcin racional: la notacin [r,p,k]=residue(numf(x),denomf(x)) permite la descomposicin en fracciones parciales de la funcin f(x), donde los componente r son los residuos de las fracciones parciales, los componentes p son los polos o races de la fraccin y k es el orden o factor de ganancia. % Descomposicin en Fracciones Parciales de una funcin 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

0.1261 p= -0.5369 + 1.0477i -0.5369 - 1.0477i -0.9148 0.7887 k= [] La interpretacin de estos resultados es la siguiente: la funcin f(x) definida en la forma polinmica: f ( x) = 4x 2 + 2x 1 5 x 4 + 6 x 3 + 4 x 2 3x 5

Al descomponerla en fracciones parciales ser igual a: 0.0385 0.2932i 0.0385 + 0.2932i 0.049 0.1261 + + + + 0 x ( 0.5369 + 1.0477 j ) x ( 0.5369 1.0477 j ) x ( 0.9148) x 0.7887 En el caso de que en la descomposicin de la funcin en fracciones parciales aparezcan polos mltiples, el desarrollo de la funcin se presentar en el orden siguiente: f ( x) =

( x p1 ), ( x p1 ) 2 , ( x p1 )3 ,..., ( x p1 ) n
Reconstruccin de una funcin racional a partir de sus fracciones parciales: es posible el reconstruir el numerador y denominador de una funcin racional utilizado la notacin 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 funcin 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.3326i 0.1111 p= -1.4656 0.2328 + 0.7926i 0.2328 - 0.7926i -0.5000

k= [] numFs,denFs]=residue(r,p,k) numFs = 0 0.5000 1.0000 0.5000 denFs = 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 funcin 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 descomposicin sera: s2 + s + 1 2 7 3 = + + 3 2 2 s 1 s 5s + 8s 4 s 2 ( s 2)

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.

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 parbola,...) de los mismos sin ms que invocar la funcin 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: 0.5985 x 2 + 2.3124 x 0.0199 , Almacenados de modo que -0.5985 -> coef(1) 2.3124 -> coef(2) -0.0199 -> coef(3) POLYDER: Diferenciacin 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 divisin 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 multiplicacin ser: x=[1 2];

y=[1 -2]; polyder(x,y) ans = 2 0 el resultado corresponde a la derivada de ( x + 2)( x 2) o x 2 4 que ser 2x + 0 . CONV: Convolution (multiplicacin 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 convolucin entonces es equivalente a la multiplicacin de 2 polinomios. Tomando como ejemplo los polinomios f = 2 x 2 + 3 x + 4 y g = x 2 2 x + 4 ; la multiplicacin 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

16

El resultado corresponde a 2 x 4 1x 3 + 6 x 2 + 4 x + 16 equivalente a la multiplicacin de (2 x 2 + 3 x + 4) * (1x 2 2 x + 4) Para comprobar que ( x 5)( x + 1) = x 2 4 x 5 basta ejecutar
conv([1

-5], [1 1]) -4 -5

ans = 1 El resultado corresponde a 1x 2 4 x 5 Ver tambin XCORR, DECONV, CONV2, FILTER, y CONVMTX en el toolbox de Procesamiento de seales.

DECONV Deconvolution (divisin polinomial).

[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 divisin de los polinomios. El resultado de la divisin B por A es Q como cociente y R como residuo. Si se tiene el polinomio a = x 5 2 x 4 + 4 x 3 5 x 2 + 6 x + 5 , expresado como polinomio en matlab se tiene: a=[1 -2 4 -5 6 5] a= 1 -2 -1 6 5 y el polinomio b = x 2 , expresado en trminos de MatLab as: b=[1 -2] b= 1 -2 La divisin del polinomio a entre el b es decir a/b se dar de la siguiente manera: deconv(a,b) ans = 1 0 4

12

Interpretado el resultado se puede decir que a

= x 4 + 4 x 2 + 3x + 12,

Y si se diera la instruccin de la siguiente manera: [p q]=deconv(a,b) p= 1 0 4 3 12 q= 0 0 0 0 0 29 se interpretara que a Ver tambin CONV.

= x 4 + 4 x 2 + 3x + 12, con residuo 29

EXPAND: Expansin simblica Syntax

R = expand(S)

Description
EXPAND(S) Escribe cada elemento de una expresin simblica 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)

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 -4x +5x-2 pretty(p1/p2) ans= 2 x -4 ---------------2 (x - 1) (x - 2)

See also SIMPLIFY, SIMPLE, FACTOR, COLLECT. Objetos simblicos. syms x % Se declara x como objeto simblico. La x puede ser una constante, una variable o una expresin en la que intervengan constantes, variables, operadores aritmticos, funciones predefinidas . syms a b c % declara a,b,c como variables simblicas. Un objeto numrico m se puede convertir en simblico escribiendo: M=sym(m) Otros comandos: syms x expand ( (1+x)* (3-x)) ans= 3+2*x-x^2 % desarrolla la expresin en suma de monomios.

Se puede expresar el resultado anterior con la notacin habitual utilizando la orden pretty. pretty(expand( (1+x)*(3-x))) ans=

3 + 2x x2 solve ('-x^2-2*x+3=0','x') ans= [ -3 ] [ 1] simplify ( f ) simple ( f ) [r,a] = simple(f ) subs(f,a) subs(f,x,s) factor( f ) % resuelve la ecuacin.

% simplifica la expresin simblica f. % busca la forma ms simple de la expresin simblica f. % guarda en r la expresin simplificada y en a describe el mtodo de simplificacin utilizado. % aplica f en a. % substituye en f la variable x por la s. % factoriza la expresin simblica f. Si f es un nmero entero lo descompone en factores primos.

PRETTY PRETTY 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.

SIMPLIFY
Simplificacin simblica.

Syntax
R = simplify(S)

Descripcion
simplify(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 instruccin
S = [(x^2+5*x+6)/(x+2),sqrt(16)]; R = simplify(S)

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)

SOLVE
SOLVE 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 returns ans = 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]

S = solve('x^2*y^2 -2*x-1=0' , 'x^2-y^2-1=0') 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

La solucin en una estructura.

[u,v] = solve('a*u^2 + v^2 = 0','u - v = 1') recuerda 'a' como un parmetro 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 parmetro, soluciona las dos ecuaciones, y retorna S.a y S.u. S= a: [1x1 sym] u: [1x1 sym] S.a ans =

-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 numrica se hace:

numeric(solve('x^2+4=12','x')) ans = 2.828427124746190e+000 -2.828427124746190e+000 En lo que sigue la expresin exp(-x)-x es un objeto string. solve('exp(-x)-x=0') ans = lambertw(1) % x no es SYM % 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.

FACTOR
FACTOR 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')).

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 simblico. POLY2SYM(C) es un polinomio simblico en 'x' con coeficientes desde el vector C. POLY2SYM(C,'V') y POLY2SYM(C,SYM('V') ambos usan una variable simblica 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

help sym/poly2sym.m

SYM2POLY
SYM2POLY Polinomio simblico a vector de coeficientes polinomial. SYM2POLY(P) retorna un vector fila conteniendo los coeficientes del polinomio simblico P. Ejemplo: sym2poly(x^3 - 2*x - 5) ans = [1 0 -2 -5]. See also POLY2SYM.

POLY
POLY Convierte races 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 (segn potencias decrecientes) cuyas races 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

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

Vous aimerez peut-être aussi