Lab 2 Comandos de Matlab en Ingeniería de Control.docx

12

Click here to load reader

Transcript of Lab 2 Comandos de Matlab en Ingeniería de Control.docx

Page 1: Lab 2 Comandos de Matlab en Ingeniería de Control.docx

UNIVERSIDAD NACIONAL DE INGENIERÍAFACULTAD DE INGENIERÍA MECÁNICA

INGENIERIA DE CONTROL MT-221 2015-1

Laboratorio 2 Introducción al Matlab (parte 2)

Objetivo. El alumno se familiariza en el entorno Matlab usando comandos comunes para Ingeniería de Control.

Versión utilizada. 2009a / 2010a

En este segundo laboratorio vamos a realizar ejercicios sobre comandos más básicos asociados con operaciones comunes en ingeniería de control.

No olvide que:

[ ] Utilizado para formar vectores y matrices( ) Precedencia de expresión matemática, Separa elementos y argumentos de función; Final de filas. También suprime el resultado de un comando u operación : Generación de vectores.

j : k significa [ j j+1 … k]A(: , j) significa j-ésima columna de AA(i , :) significa i-ésima fila de A

¡ Ejecución de orden del sistema operativo% Comentarios para explicar pasos de un algoritmo

Procedimiento

Ejecute el programa Matlab, la versión que disponga

Por ejemplo: Matlab 2009a

En el símbolo de comandos del Matlab realice los siguientes ejercicios:

Ejercicios asociados con la ecuación característica

1. Sea la matriz A = [0 1 0; 0 0 1; -6 -11 -6];

1

Page 2: Lab 2 Comandos de Matlab en Ingeniería de Control.docx

Se va a determinar las raíces de la ecuación característica que coinciden con los de los valores propios de A. para ello para poder determinar esta ecuación usaremos el comando poly:

p = poly(A);

Escriba la respuesta p = 1.0000 6.0000 11.0000 6.0000

2. Luego para determinar las raíces de la ecuación característica se ejecuta el comando

roots(p):

r = roots(p)

Escriba el resultado de r r = -3.0000 -2.0000 -1.0000

3. Si r representa a las raíces de un polinomio, luego, construya el polinomio q(s) a partir de las raíces r.

(s+3)(s+2)(s+1) = s 3 +6s 2 +11s+6

4. El polinomio que usted ha escrito en el paso anterior, compárelo usando nuevamente el comando poly(r), donde r representa las raíces de la ecuación característica

q = poly(r) = [1.0000 6.0000 11.0000 6.0000]

¿Existe algún cambio entre el resultado de poly(A) y poly(r)? Explique adecuadamente.

No. El comando poly() en una matriz, me genera la ecuación característica, asi mismo para las raíces, me vuelve a generar la misma ecuación característica.Operaciones con polinomios

Sea a(s) = s2 – 20.6 y b(s) = s2 + 19.6s + 151.2

5. Para multiplicar dos polinomios, se usa el comando conv(a,b). Cabe resaltar que el producto de polinomios es la convolución de los coeficientes que tienen cada polinomio.

Para obtener la convolución o multiplicación se hace de esta manera

a = [1 0 -20.6];b = [1 19.6 151.2];c = conv(a,b);

Escriba el polinomio resultante de esta manera:

( 1 )s4 + ( 19.6 )s3 + ( 130.6 )s2 + ( -403.8 )s + ( -3114.72)

2

Page 3: Lab 2 Comandos de Matlab en Ingeniería de Control.docx

6. Para dividir (deconvolución) entre polinomios use la función deconv():

[q,r]= deconv(c,a), donde: q es el cociente y r es el residuo

Explique el significado de los coeficientes de q como de r cuando haya ejecutado el comando deconv()

deconv(c,a)= 1.0000 19.6000 151.2000 ; Solo se obtuvo el cociente, pero no se obtuvo el residuo

[q,r]= deconv(c,a)q = 1.0000 19.6000 151.2000r = 0 0 0 0 0

¿Cuál es la diferencia de escribir el comando deconv(c,a) y [q,r]=deconv(c,a)?Al ejecutar deconv(c,a), se obtuvo solo el cociente, sin embargo al ejecutar [q,r]=deconv(c,a), se obtuvo tanto el cociente como el residuo.

7. Si se quiere evaluar una función en un valor específico, se aplica el siguiente comando:

Si p(s) = 3s2 + 2s + 1. Y si s = 5, luego:

p = [3 2 1];polyval(p,5)ans = 86 (verificar)

Luego, si p = s5 + s4 + 2s3 + s2 +1, evalúe p en s = 2ans = 35Matrices de utilidadEn Matlab existe una lista de matrices muy útiles para la programación

ones(n) matriz de unos de orden n x nones (m,n) matriz de unos de orden m x nones(A) se escribe unos del mismo tamaño de la matriz Azeros(n)zeros (m,n)zeros(A)diag([ones(1,n)])

Utilice el help de Matlab y explique y ponga ejemplos del uso de los comandos en mención

ones(3) = 1 1 1 1 1 1 1 1 1

ones(2,3)= 1 1 1 1 1 1

3

Page 4: Lab 2 Comandos de Matlab en Ingeniería de Control.docx

A=[1 2 3;2 1 3]Ones(size(A))= 1 1 1 1 1 1

zeros(4)= 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

zeros(size(A))= 0 0 0 0 0 0

8. Escriba la matriz después de haber aplicado los siguientes comandos y dando una breve explicación del caso :

a) eye(5)b) ¿Cuál es la diferencia entre aplicar el comando x = [ones(1,5)] y diag([ones(1,5)])?

a) eye(5) = 1 0 0 0 0 Al ejectuar el comando se genera la matriz 0 1 0 0 0 identidad. 0 0 1 0 0

0 0 0 1 0 0 0 0 0 1b)

x = [ones(1,5)] = 1 1 1 1 1 Es una matriz fila.

y= diag(ones(1,5))= 1 0 0 0 0 Es una matriz identidad. 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1

9. Qué significa aplicar el comando diag(1:5), diag(0:4)?

diag(1:5)= 1 0 0 0 0 Son matrices, en donde la diagonal es una 0 2 0 0 0 sucesión aritmética ascendente de razón 0 0 3 0 0 por defecto 1. 0 0 0 4 0 0 0 0 0 5

diag(0:4)= 0 0 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 3 0 0 0 0 0 4

4

Page 5: Lab 2 Comandos de Matlab en Ingeniería de Control.docx

Representación gráfica de curvas

10. Se presentan tres códigos fuente en Matlab. Grafique los resultados de estos programas Explicando el resultado, usando comentarios simbolizados con % (comando comentario).

a) t = 0:0.05:10 %Es el domino de las funciones.y = sin(t);z = cos(t);plot(t,y,’o’,t,z,’x’) %Grafica las funcionesgrid %Son las líneas punteadas(horizontales y verticales)title(‘Gráficas del seno y coseno’) % Es el título de la graficaxlabel(‘Seg’) %Es el nombre que se le asigna eje horizontalylabel(‘y=sen(t); z=cos(t)’) %Es el nombre que se le asigna al eje verticaltext(3,0.45,’sen(t)’) %Sirve para personalizar las a las gráficastext(0.8,-0.3,’cos(t)’) %Sirve para personalizar las a las gráficas

b) t = 0:025:10; %dominio de las funcionesy = sin(t);z = cos(t);plot(t,y,t,z), text(t,y,’y’), text(t,z,’z’) %muestra las graficasgrid % muestra las líneas discontinuas(vertical y horizontal)title(‘Gráficas del seno y coseno’) %titulo de la graficaxlabel(‘Seg’) %nombre del eje horizontalylabel(‘y=sen(t); z=cos(t)’) %nombre del eje vertical

5

Page 6: Lab 2 Comandos de Matlab en Ingeniería de Control.docx

c) x = 0:0.1:3; %dominio de las funcionesy = x.^2; plot(x,y) %muestra la graficagrid %muestra las líneas discontinuas (H y V)title(‘Gráfica de y = x^2’) %titulo de la graficaxlabel(‘x’) %nombre del eje horizontalylabel(‘y’) %nombre del eje vertical.

6

Page 7: Lab 2 Comandos de Matlab en Ingeniería de Control.docx

11. Qué modificaciones haría a la codificación del programa 10.c para lograr la curva de la figura siguiente, sabiendo que la función y ha cambiado a y = x3 -20x.

x = -6:0.1:6; %cambiamos el dominioy = x.^3-20.*x; %cambiamos la funcionplot(x,y) gridtitle('Gráfica de y = x^3-20x') %cambiamos el nombre del tituloxlabel('x')ylabel('y')

Observe que hay una serie de errores entre la codificación y la información que muestra la gráfica.

-6 -4 -2 0 2 4 6-100

-80

-60

-40

-20

0

20

40

60

80

100‘Gráfica de y = x2

x

y

Modelos matemáticos de sistemas lineales

Matlab tiene varios comandos muy útiles para transformar un modelo matemático de un sistema lineal en otro modelo:

a) Función de transferencia a espacio de estado

[A,B,C,D] = tf2ss(num,den)espacio función de estado transferencia

Y (s)U (s)

=numden

=C ( sI−A )−1B+D

7

Page 8: Lab 2 Comandos de Matlab en Ingeniería de Control.docx

Según la información de A, B, C y D, la representación de espacios de estado es:

x=Ax+Buy=Cx+Du

b) Espacio de estado a función de transferencia

[num,den] = ss2tf(A,B,C,D) cuando el sistema tiene una entrada y una salida

[num,den] = ss2tf(A,B,C,D, iu) cuando el sistema tiene más de una entrada (iu=1,2,3…) y una salida

c) Descomposición en fracciones parciales de la función de transferencia

Sea la función de transferencia:

B(s)A (s)

=numden

=b (1 ) sn+b (2 ) sn−1+…+b(n)a (1 ) sn+a (2 ) sn−1+…+a (n)

num = [b(1) b(2) … b(n)]den = [a(1) a(2) … a(n)]

Donde a(1) es diferente de cero. Pero los otros coeficientes pueden ser ceros.

Luego la descomposición de fracciones parciales se hace usando el comando:

[r,p,k] = residue(num,den). Según esto:

B(s)A (s)

=r (1)s−p(1)

+r (2)s−p(2)

+ … r (n )s−p (n )

+k (s)

12. Sea el siguiente sistema con entradas u1 y u2

[ x1˙x2]=[ 0 1−2 −3][ x1x2]+[1 0

0 1] [u1u2] y= [1 0 ] [ x1x2]+ [0 0 ][u1u2]

8

Page 9: Lab 2 Comandos de Matlab en Ingeniería de Control.docx

Se quiere determinar la descomposición en fracciones parciales, según las entradas u1 y u2. Para ello use esta información:

A = [0 1; -2 -3];B = [1 0; 0 1];C = [1 0];D = [0 0];

Se aplicará el comando [num,den] = ss2tf(A,B,C,D,1) y [num,den] = ss2tf(A,B,C,D,2)Recordando que el parámetro 1 corresponde la función de transferencia respecto a la entrada u1 y el parámetro 2 corresponde la función de transferencia respecto a la entrada u2.

Según el resultado de aplicar este comando, luego exprese:

Y (s)U 1(s )

= s+3s2+3 s+2

Y (s)U 2(s )

= 1s2+3 s+2

13. Considere la siguiente función de transferencia

B(s)A (s)

=numden

=2 s3+5 s2+3 s+6

s3+6 s2+11 s+6

Donde num = [2 5 3 6] y den = [1 6 11 6]Luego [r,p,k] = residue(num,den)

Demuestre que el resultado de la descomposición de fracciones parciales resulta

B(s)A (s)

=2 s3+5 s2+3 s+6

s3+6 s2+11s+6= −6s+3

+ −4s+2

+ 3s+1

+2

14. Si aplica el comando [num,den] = residue(r,p,k), ¿qué resulta?

Justifique su respuesta

9

Page 10: Lab 2 Comandos de Matlab en Ingeniería de Control.docx

Referencias: Ingeniería de Control, K. Ogata

Preparado por Ing. Gustavo Mesones Málaga, MSc.Este laboratorio se entregará hasta el sábado 11 de abril de 2015 en horas de clase

10