GUIA PARA EL USO DE MATLAB PARTE 3 Symbolic Math Toolbox Las rutinas de matemática simbólica de MatLab son utilizadas para poder escribir ecuaciones con variables genéricas sin necesidad de crear vectores. Algunas ventajas del Symbolic Math Toolbox para el diseño y análisis de sistemas: Las funciones y ecuaciones se pueden ingresar de manera simbólica, pudiéndose utilizar tanto caracteres alfabéticos como numéricos. Por ejemplo puede ingresar B = x^2+3*x+7, en lugar de B= [1 3 7]. También puede ingresar B=a*x^2+b*x+c. Se pueden manipular algebraicamente y simplificar expresiones simbólicas. Las transformadas de Laplace y Z se pueden ingresar y determinar sus inversas en forma simbólica. Las funciones se puede “imprimir con una mejor presentación” para mejor claridad en la Command Window y entonces imprimirse en papel. 1. Definición de objetos simbólicos: El inicio de cualquier cálculo simbólico requiere definir los objetos simbólicos, por ejemplo, la variable de la transformada de Laplace (s) o la variable de tiempo (t). Se utiliza el comando: syms s t, siendo s y t la variables simbólicas. Solamente en necesario definir los objetos que entran al programa, las variables producidas por el programa no necesitan definirse. De este modo, si se está determinando transformadas inversas de Laplace, solamente se necesita definir s puesto que t resulta del cálculo. 2. Imprimir con mejor presentación: Se utiliza el comando pretty(F), siendo F la función que se quiere imprimir en bonito. Ejemplo 1: syms s; %declaro variable simbólica F=2/[(s+1)*(s+2)^2] %función de transferencia pretty(F) %imprimo en bonito f=ilaplace(F) %transformada inversa pretty(f) Vista en Command Window: Sin pretty: F= 2/((s + 1)*(s + 2)^2) Con pretty: 2 ---------------2 (s + 1) (s + 2) 3. Cambios en la apariencia de los resultados desplegados: collect(F,s): Reúne los términos con coeficientes comunes de F, si coloco s le aclaro que variable quiero que reúna. expand(F): Expande los productos de factores. factor(F): Factores de F. simple(F): Determina la forma más sencilla de F con el menor número de términos. simplify(F): Simplifica F. vpa(expression, places): Quiere decir precisión aritmética variable, este comando convierte términos simbólicos fraccionarios en términos decimales con un número específico de lugares después de la coma. Ejemplo 2: syms t; f=2*exp(-t)-2*t*exp(-2*t)-2*exp(-2*t);%defino la función en el tiempo 'Función en el tiempo' %desplego etiqueta pretty(f) F=laplace(f);%calculo su transformada, tener en cuenta que Matlab da F(s) %fracciones parciales 'Transformada' pretty(F) %imprimir en bonito las fracciones paciales F=simplify(F); %Combino las fracciones parciales 'Con simplify' pretty(F) Vista en Command Window: Función en el tiempo 2 2 2t ------ - -------- -------exp(t) exp(2 t) exp(2 t) Transformada 2 2 2 ----- - ----- - -------s+1 s+2 2 (s + 2) Con simplify 2 ---------------2 (s + 1) (s + 2) Ejemplo 3: syms t; f=3/16-3/16*exp(-t)*[cos(2*t)+(1/2)*sin(2*t)]; F=laplace(f); 'Transformada' pretty(F) F=vpa(F,3); 'Precisión aritmética variable con pretty' pretty(F); Vista en Command Window: Transformada 3 3 (s + 1) ---- - ----------------- 16 s 2 16 ((s + 1) + 4) 3 ----------------2 16 ((s + 1) + 4) Precisión aritmética variable con pretty 0.188 ----- s 0.188 ---------------- 2 (s + 1.0) + 4.0 0.188 (s + 1.0) ---------------2 (s + 1.0) + 4.0 Ejemplo 4: syms x y z; a=collect(((log(x)+2*x)*(x+2))) b=collect((2*x+y)*(x^3+5*y+3),y) d=expand((z+3)*(z+6)*(z-4)) e=x^3+x^2+3*x+x*y+x*z; f=factor(e) g=sin(x)^2+cos(x)^2; h=simple(g) Vista de Command Window a= 2*x^2 + (log(x) + 4)*x + 2*log(x) b= 5*y^2 + (x^3 + 10*x + 3)*y + 2*x*(x^3 + 3) d= z^3 + 5*z^2 - 18*z - 72 f= x*(x^2 + x + y + z + 3) h= 1 4. Funciones transferencia con la regla de Cramer: La regla de Cramer da la solución de un sistema de ecuaciones lineales con el mismo número de incógnitas que de ecuaciones, el determinante de la matriz de los coeficientes debe ser distinto de cero. Un sistema de ecuaciones lineales tiene la forma Ax=B, siendo A la matriz formada por los coeficientes de las incógnitas, x es el vector de las incógnitas y B es un vector que contiene las entradas. Xk= det(Ak)/det(A), siendo Ak la matriz formada al reemplazar la k-ésima columna de la matriz A con elvector de entrada B Ejemplo 5: Dado el siguiente circuito obtener la función de transferencia (I2/V) aplicando regla de Cramer. Solución: Obtenemos el sistema de ecuaciones: (R1+Ls) I1 - Ls I2 = Vi -Ls I1 + (Ls+R2+1/Cs) I2 = 0 G( s) LC.s 2 ( R 2 R1)CL.s 2 ( R1R2C L).s R1 En MatLab: syms Vi R1 L R2 C s; A2=[(R1+L*s) Vi;-L*s 0]; A=[(R1+L*s) -L*s; -L*s (L*s+R2+(1/(C*s)))]; I2=det(A2)/det(A) G=I2/Vi; G=collect(G,s) pretty(G) Vista en Command Window I2 = (C*L*Vi*s^2)/(R1 + L*s + C*L*R1*s^2 + C*L*R2*s^2 + C*R1*R2*s) G= ((C*L)*s^2)/((C*L*R1 + C*L*R2)*s^2 + (L + C*R1*R2)*s + R1) 2 (C L) s ------------------------------------------2 (C L R1 + C L R2) s + (L + C R1 R2) s + R1 5. Ingreso de funciones de transferencia complicadas: Cuando se tiene funciones de transferencia complicadas, se puede hacer distributiva en tres pasos. Ejemplo 6: En MatLab: syms s; G=(54*(s+27)*(s^3+52*s^2+37*s+73))... /(s*(s^4+872*s^3+437*s^2+89*s+65)*(s^2+79*s+36)); [numg,deng]=numden(G); numg=sym2poly(numg); deng=sym2poly(deng); 'Función transferencia reordenada' Gtf=tf(numg,deng) 'Función de transferencia en forma de ceros y polos' Gzpk=zpk(Gtf) Vista en Command Window Función transferencia reordenada Transfer function: 54 s^4 + 4266 s^3 + 77814 s^2 + 57888 s + 106434 --------------------------------------------------------------------s^7 + 951 s^6 + 69361 s^5 + 66004 s^4 + 22828 s^3 + 8339 s^2 + 2340 s Función de transferencia en forma de ceros y polos Zero/pole/gain: 54 (s+51.31) (s+27) (s^2 + 0.6934s + 1.423) -------------------------------------------------------------------s (s+871.5) (s+78.54) (s+0.558) (s+0.4584) (s^2 - 0.05668s + 0.1337) 6. Graficación: Se pueden hacer gráficas bidimensionales con objetos simbólicos, se utiliza la instrucción ezplot(f, [xmin xmax]), si no se colocan los valores [xmin xmax], MatLab grafica automáticamente entre -2*pi y 2*pi. Ejemplo7: En MatLab: syms x;hold on; ezplot(abs(x), [-3 3]); ezplot(x^2, [-3 3]) figure subplot(2,1,1) ezplot(cos(x)) subplot(2,1,2) ezplot(x^3)