universidad nacional de ingenierÍa · matlab • en matlab, todas las operaciones se realizan con...

36
1 INTRODUCCIÓN A MATLAB UNIVERSIDAD NACIONAL DE INGENIERÍA Facultad de Ingeniería Química y Textil Curso: “Simulación y Control de ProcesosPI426 Profesor: Ing. Celso Montalvo

Upload: others

Post on 26-May-2020

21 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

1

INTRODUCCIÓN A MATLAB

UNIVERSIDAD NACIONAL DE INGENIERÍA

Facultad de Ingeniería Química y Textil

Curso: “Simulación y Control de Procesos”

PI426

Profesor: Ing. Celso Montalvo

Page 2: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 2

MATLAB

• Matlab es un programa de uso académico para el

cálculo matemático y la simulación de procesos.

• Con Matlab se pueden realizar

− Cálculos simples ó complejos,

− Programas que realicen dichos cálculos de manera

secuencial y automática.

− Presentación de resultados en forma tabular ó gráfica.

− Simulación de Procesos.

• Matlab trae una serie de módulos especializados

en cierto tipo de operaciones en todas las áreas

de la tecnología y el conocimiento, los Toolboxes

Page 3: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 3

MATLAB

Page 4: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 4

MATLAB

• En Matlab, todas las operaciones se realizan con

matrices

>> 5

ans =

5

• En el Workspace aparece la variable ans, a la que

se asigna el resultado si no se asignó otra.

• Cualquier letra ó conjunto de letras puede ser una

variable. >> A=3*4

A =

12

• El Workspace muestra el valor de A y clase double

(matriz de 1x1). (click-der sobre name class).

Page 5: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 5

MATLAB

• En Matlab las mayúsculas y minúsculas son

diferentes:

>> a = 4 ; A = A + a

A =

16

• El “;” suspende la visualización del resultado en la

pantalla, pero el comando se ejecuta (ver

Workspace). También permite que en la misma

línea se escriban más comandos.

Page 6: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 6

MATLAB

• Todas las operaciones en Matlab se realizan con las

prioridades usadas en matemáticas: >> B = (3 + 8/4 -1)^2

B =

16

• Matlab incluye una gran variedad de funciones:

trigonométricas, logarítmicas, estadísticas, etc. >> A = sin(2), B = log(15) + sqrt(36) - exp(-10) + A

A =

0.9093

B =

9.6173

• Constantes: >> pi, i

Page 7: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 7

MATLAB

• Matlab tiene una precisión de 16 dígitos, pero

puede presentar sólo 4 dígitos como en: >> 1/3

ans =

0.3333

• Puede pasarse a 14 dígitos con >> format long

>> 1/3

ans =

0.33333333333333

• Otras opciones de presentación: >> format short, 123456.789

>> format rat, 4.25

>> format compact

Page 8: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 8

Vectores y Matrices

• Un vector es una matriz especial de 1 fila y

varias columnas o viceversa: >> V = [2 4 5 8 -2], C = [1; 2; 8; 0]

• Un vector con elementos espaciados: >> V2 = 0:0.2:12

• Un vector con 11 elementos entre 0 y 20: >> V2 = linspace(0,20,11)

• Al ingresar una matriz se separan filas con : >> H = [1 2 3 0;4 5 6 -1;7 8 9 -2]

• La Matriz transpuesta se genera con ‘ : >> K = H’ H =

1 2 3 0

4 5 6 -1

7 8 9 -2

K =

1 4 7

2 5 8

3 6 9

0 -1 -2

Page 9: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 9

Matrices

• Acceso a los elementos de una matriz por su orden

ó por su ubicación fila,columna:

>> H(8)

>> H(2,3)

• Fila ó columna completa:

>> H(:,3)

>> H(2,:)

• Sub-matriz dentro de otra matriz:

>> H(2:3,4)

>> H(2,2:4)

>> H(2:3,1:3)

• Relación entre orden y ubicación en la matriz:

>> orden = (col – 1)*NFilas + fila

Page 10: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 10

Matrices

• Diagonal:

>> diag(H)

• Submatriz triangular:

>> tril(H)

>> triu(H)

• Matrices singulares:

>> eye(3,4)

>> zeros(4,6)

>> ones(5)

ans =

1

5

9

ans =

1 0 0 0

4 5 0 0

7 8 9 0

ans =

1 2 3 0

0 5 6 -1

0 0 9 -2

ans =

1 0 0 0

0 1 0 0

0 0 1 0

Page 11: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 11

Operaciones con Matrices

• Operaciones estándar entre matrices:

>> H*[2 3; 3 0; -1 -2; 0 5], H(1:3,1:3)^2

>> sin(H), sqrt(H)

• Operación Punto: realiza la operación de

elemento a elemento entre dos matrices:

>>Z=H.*H, R=sin(H).*cos(H)

Z =

1 4 9 0

16 25 36 1

49 64 81 4

R =

0.3096 0.1231 0.0070 0

-0.0139 -0.0065 -0.0007 -2.2874

0.0006 0.0003 0.0001 -6.7188

Page 12: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 12

Solución de Ecuaciones

Diferenciales

• Solución sin valores de frontera:

>> dsolve('D2y=6*y-Dy',‘t')

• Con valores de frontera:

>> dsolve('D2m+m=0','m(0)=2','Dm(0)=3',’t')

2

26

d y dyy

dtdt

2

20

d mm

dt

Page 13: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 13

Polinomios

• Se expresan como matrices usando sus

coeficientes:

s4 + 2s3 + 3s +1

>> P=[1 2 0 3 1]

• Operaciones con polinomios:

>> polyval(P,2)

>> roots(P)

>> poly([1 -1 2]) % Polinomio de raíces 1, -1 y 2.

• Solución de Ecuaciones simultáneas con \:

Ej: 2x + 3y –z = 0

x – 2y +z = 2

-2x + y +z = 1

>> A=[2 3 -1;1 -2 1;-2 1 1], B=[0; 2; 1], X=A\B

Page 14: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 14

Ploteo de Funciones

• Cuando las funciones son vectores:

>> t=0:0.1:7, f=sin(t), plot(t, f)

Page 15: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 15

Ploteo de Funciones

• Para plotear otras curvas en la misma gráfica anterior:

>>hold on, g=sin(t).*exp(-2*t), plot(t, g)

Page 16: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 16

Ploteo de Funciones

• Cuando las funciones son simbólicas:

>> figure %Crea una nueva figura sin borrar la anterior.

>> fplot('sin(x)*exp(-0.5*x)',[0 4*pi])

Page 17: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 17

Archivos m • Los programas en Matlab se guardan en

archivos con extensión .m

• Dos tipos: scripts y funciones.

• Se puede usar cualquier editor de textos pero

el editor de Matlab es mejor.

• Si se guarda el archivo m en la ruta por

defecto, se puede ejecutar usando su nombre

como comando.

• Las funciones permiten pasar datos y usar el

programa en cualquier otra aplicación,

inclusive dentro de otro programa.

Page 18: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 18

Funciones m

• Las funciones permiten pasar datos y usar el

programa en cualquier otra aplicación,

inclusive dentro de otro programa.

• Deben definirse con la palabra

‘function’ y guardarse con el

nombre de la función: function f = factorial(n) %Definición de Función

% FACT(N) calcula el factorial de N

% Simplemente, factorial(N) es PROD(1:N).

f = prod(1:n); %Cuerpo de la función.

• Se ejecuta en la ventana de comandos:

>> z= 5*3^2+factorial(5)

ans = 165

Page 19: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 19

Control de Flujo

• Matlab tiene varias formas de controlar el flujo

de un programa:

• Condicionales: if

• Ejecuta los comandos que cumplen la condición.

if expression1

statements1

elseif expression2

statements2

else

statements3

end

if ((asist >= 0.90) & (prom >= 10))

pasa = 1;

else

'No Pasa'

end;

Page 20: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 20

Control de Flujo

• Condicionales: switch

• Ejecuta los comandos dependiento de la

condición en diferentes casos.

switch switch_expr

case case_expr

statement,...,statement

case {case_expr1,case_expr2,case_expr3,...}

statement,...,statement

...

otherwise

statement,...,statement

end

Page 21: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 21

Control de Flujo

• Lazos repetitivos: for

• Repite la ejecución las veces indicadas por la

expresión.

for variable = expression

statements

end

Page 22: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 22

Control System Toolbox

• Matlab es una herramienta poderosa para el Análisis

Dinámico de Sistemas de Control.

• Control System Toolbox es un conjunto de algoritmos

y funciones escritas especialmente para el

tratamiento de los problemas de control.

• Para aprender el uso de Matlab en la solución de

problemas de control de procesos, el primer paso

consiste en estudiar el archivo de ayuda (help) de

Matlab y ejecutar su demostraciones.

Page 23: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 23

Expresión de Modelos • La primera tarea al usar Matlab para resolver problemas de control

de procesos consiste en describir el modelo del proceso ó sistema

• Los modelos se pueden expresar en Matlab de tres maneras:

− Como una Función de Transferencia:

)1)(15)(15.0(

1

3

119)(

sssssG

− En el formato del Espacio de Estados: QA

h

h

ARAR

AR

dt

dhdt

dh

*

0

1

*11

01

12

1

2221

11

2

1

Qh

h

h

h*

0

0*

10

01

2

1

2

1

− En la forma de polos y ceros: )2.0)(1.0(

)1)(1(3

ss

jsjs

− También es posible expresar el modelo en la forma de datos

experimentales que representen la Respuesta a la Frecuencia

del sistema.

zeros

polos ganancia k

Page 24: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 24

Conversión de Formatos

• Se puede convertir un formato en otro con las

funciones:

− sys = tf(sys) % Conversión a TF

− sys = zpk(sys) % Conversión a ZPK

− sys = ss(sys) % Conversión a SS

• De ser posible, es mejor no convertir repetidamente

los modelos para no perder precisión por redondeos.

Page 25: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 25

Funciones de Transferencia • Una Función de Transferencia en Matlab se expresa como una

división de polinomios: 01

1

1

01

1

1

...

...)(

asasasa

bsbsbsbsG

n

n

n

n

m

m

m

m

• Los coeficientes forman matrices que sirven para expresar los

polinomios:

01

01

...

...

aaaden

bbbnum

nn

mm

• El siguiente comando crea la Función de Transferencia G(s):

− G = tf(num,den)

• Si la FT incluye Tiempo Muerto, éste se puede agregar así:

− G .iodelay = 0.5

• O se puede incluir al crear la FT con:

− G = tf(num,den,'ioDelay',0.5)

• La forma más fácil de crear las FTs es usando la variable s:

− G = (9*s+1)/s/(0.5*s+1)/(5*s+1)/(s+1)

• Para crear una FTs usando Espacio de Estados:

>> A=[-2 -5 -2; 1 0 0; 0 -1 -2]; B=[1; 0 ;1]; C=eye(3), D=zeros(3,1)

>> X = ss(A, B, C, D)

Page 26: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 26

Inversión de Transformadas

• La Expansión en Fracciones Parciales usa la función residue:

• Problema 1. Invertir la función: 6116

6352)(

23

23

sss

ssssG

• [r,p,k]=residue([2 5 3 6], [1 6 11 6 ])

r =

-6.0000

-4.0000

3.0000

p =

-3.0000

-2.0000

-1.0000

k =

2

21

3

2

4

3

6)(

ssssG

)(2346)( 23teeetG

ttt

Page 27: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO

0 5 10 15 20 25 30 35 40 450

0.5

1

1.5

2

2.5Step Response

Time (sec)

Am

plitu

de

27

Respuesta Transitoria

• La función step grafica la Respuesta Transitoria de una función

ante el efecto de una perturbación escalón unitario.

• Problema 2. Mostrar la Respuesta Transitoria del sistema

siguiente: 2

1.5( )

(0.5 1)(2 0.5 1)G s

s s s

• % Programa en Matlab:

• s=tf('s');

• G=1.5/(0.5*s+1)/(2*s^2+0.5*s+1);

• step(G)

Page 28: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 0 5 10 15 20 25 30 35 40 45

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8Impulse Response

Time (sec)

Am

plitu

de

28

Respuesta Transitoria

• La función impulse grafica la Respuesta Transitoria de una función

ante el efecto de una perturbación impulso unitario

(momentáneo).

• Problema 2a. Mostrar la respuesta del mismo proceso ante una

perturbación impulso unitaria: 2

1.5( )

(0.5 1)(2 0.5 1)G s

s s s

• % Programa en Matlab:

• s=tf('s'); %Sólo una vez.

• G=1.5/(0.5*s+1)/(2*s^2+0.5*s+1);

• impulse(G)

• Problema 2b. Si la Función

forzante es F(t) = sin(2t), ¿Cuál

será su respuesta transitoria?

Page 29: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 29

Respuesta Transitoria

2 2 2

1.5 2( ) ( ) ( )

(0.5 1)(2 0.5 1) 2s s s

s s s s

Y G X

0 5 10 15 20 25-0.4

-0.3

-0.2

-0.1

0

0.1

0.2

0.3

0.4

0.5

0.6Impulse Response

Time (sec)

Am

plitu

de

• Y=1.5/(0.5*s+1)/(2*s^2+0.5*s+1)*2/(s^2+4); impulse(Y)

Page 30: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 30

Respuesta Transitoria

Problema 3. Hallar la función del tiempo Y(t) y su valor para t=2

sec. si la función de transferencia es:

4 3 2

4( )

3 6 12 8

ss

s s s s

Y

Solución

Aplicando el método de solución por fracciones parciales:

4 3 2 2

2

2

4( )

3 6 12 8 1 2 4

3 1 7 1

5 4 20 10

3 7 11

5 20 104( )1 2 4

3 1 7 1( ) cos(2 ) sin(2 )

5 4 20 20

(5) 0.2705

t t

s A B Cs Ds

s s s s s s s

Operando: A B C D

s

ss s s

t e e t t

Y

Y

Y

Y

Page 31: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 31

Respuesta Transitoria

Solución usando Matlab

>> Y=(s+4)/(s^4 + 3*s^3 + 6*s^2 + 12*s + 8);

>> impulse(Y)

Impulse Response

Time (sec)

Am

plitu

de

0 5 10 15 20 25-0.4

-0.3

-0.2

-0.1

0

0.1

0.2

0.3

0.4

0.5

System: Y

Time (sec): 5

Amplitude: 0.27

Page 32: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 32

Respuesta Transitoria

Comparación entre la solución manual y la solución con Matlab:

• % Programa en Matlab:

• >> Y1=(s+4)/(s^4 + 3*s^3 + 6*s^2 + 12*s + 8);

• >> subplot(2,1,1),impulse(Y1)

• >> t=0:0.01:25; Y2=3/5*exp(-5)-1/4*exp(-2*5)-

7/20*cos(2*5)+1/20*sin(2*5);

• >> subplot(2,1,2),plot(t,Y2)

0 5 10 15 20 25-0.5

0

0.5Impulse Response

Time (sec)

Am

plitu

de

0 5 10 15 20 25-0.4

-0.2

0

0.2

0.4

0.6Solución Manual

Tiempop

Am

pli

tud

Page 33: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 33

Simulink

• Simulink permite representar y

simular la operación de un

proceso ó sistema.

• En simulink cada representación

es un modelo: hay bloques para

entradas, salidas y funciones de

transferencia, bloques para

operaciones matemáticas.

Page 34: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 34

Simulink

Page 35: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

CELSO MONTALVO 35

Simulink

Page 36: UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con matrices >> 5 ans = 5 • En el Workspace aparece la variable ans, a la que se asigna

36

¡FIN!

Ing. CELSO MONTALVO HURTADO