UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con...
Transcript of UNIVERSIDAD NACIONAL DE INGENIERÍA · MATLAB • En Matlab, todas las operaciones se realizan con...
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
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
CELSO MONTALVO 3
MATLAB
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).
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.
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
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
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
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
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
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
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
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
CELSO MONTALVO 14
Ploteo de Funciones
• Cuando las funciones son vectores:
>> t=0:0.1:7, f=sin(t), plot(t, f)
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)
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])
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.
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
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;
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
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
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.
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
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.
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)
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
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)
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?
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)
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
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
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
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.
CELSO MONTALVO 34
Simulink
CELSO MONTALVO 35
Simulink
36
¡FIN!
Ing. CELSO MONTALVO HURTADO