Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Teoria de Control - Apendice B C PDF
Teoria de Control - Apendice B C PDF
1997
APENDICE B
PROGRAMA MATLAB
B.1 Introducción
Programa que sirve para cálculo numérico y visualización de alto desarrollo. El ambi-
ente es tal que los problemas y soluciones se expresan como se escriben matemática-
mente, sin la tradicional programación. Es un sistema interactivo cuyo elemento
básico de datos es una matriz que no requiere dimensionamiento.
MATLAB también tiene cajas de herramientas, ”toolboxes”, que resuelven clases
particulares de problemas tales como procesamiento de señales, diseño de sistemas de
control, simulación de sistemas dinámicos, identificación de sistemas, redes neurales,
sistemas de control robustos, optimización y otros (Matemática simbólica).
La cualidad mas importante del MATLAB es que es fácilmente extendible. Esto
permite crear nuestras propias aplicaciones.
El contenido de este apéndice describe:
a) Como entrar matrices simples, los elementos para construirlas, declaraciones y
variables del MATLAB.
b) Como conseguir información del espacio de trabajo y como guardarla.
c) Números y expresiones aritméticas.
d) Formato de salida.
e) Ayuda.
f) Funciones del MATLAB.
297
298 PROGRAMA MATLAB
Ejemplo B.1 .
A = [1 2 3; 4 5 6; 7 8 9]
A=
1 2 3
4 5 6
7 8 9
La matriz A es guardada por el MATLAB para uso posterior.
El punto y coma (;) puede ser reemplazado por el ” RETURN” ó ”ENTER”.
Se pueden entrar matrices desde archivos de disco si su nombre tiene extensión ·m.
Si un archivo llamado gena · m tiene las siguientes lı́neas de texto:
A= [1 2 3
4 5 6
7 8 9]
entonces la declaración gena lee el archivo y genera A.
Ejemplo B.2 .
resulta en:
los elementos de la matriz pueden ser referenciados con ı́ndices dentro de paréntesis.
B.4 Declaraciones y variables del MATLAB 299
Ejemplo B.3 .
produce:
r = [10 11 12] ;
A = [A ; r]
A= 1 2 3
4 5 6
7 8 9
10 11 12
Se puede extraer matrices pequeñas de matrices grandes usando dos puntos (:).
Ejemplo B.4 .
A = A (1 : 3, :) ;
Ejemplo B.5 .
1900/81
produce:
ans = 23.4568
Ejemplo B.6 .
p = eig (A) ;
La próxima vez que se invoque el MATLAB se puede ejecutar el comando load para
recuperar el espacio de trabajo desde matlab.mat. save y load se pueden usar con
otros nombres de archivos, ó también guardar únicamente las variables que se deseen.
Ası́, save temp x y z guarda las variables x, y y z en el archivo llamado temp.mat.
load temp , recupera todas las variables del archivo temp.mat. load y save pueden
también importar y exportar archivos de datos ASCII.
3 − 99 0.001
2i − 3.14159i 3e5i
Ejemplo B.7 .
s = 1/0 = Inf
La variable NaN implica ”no un número”. Cálculos como Inf /Inf ó 0/0 la producen.
MATLAB maneja números complejos, indicados por las funciones especiales i y j, en
todas sus operaciones y funciones.
Ejemplo B.8 .
A = [1 + 5i 2 + 6i; 3 + 7i 4 + 8i]
Un nombre de una función interna puede ser un nombre de una variable, pero en este
caso no es disponible la función interna dentro del actual área de trabajo hasta que la
variable no sea borrada. Si se usa i y j como variables y se sobreescribe sus valores,
se puede generar una nueva unidad de complejos y usarse de la manera usual:
302 PROGRAMA MATLAB
ii = sqrt (−1)
z = 3 + 4ii
Ejemplo B.9 .
x = [4/3 1.2345e − 6]
format short
1.3333 0.0000
format short e
1.3333e + 00 1.2345e − 06
format long
| {z· · · 3} 0.00000123450000
1. 3333
14
format long e
1. 3333
| {z· · · 3} e + 00 1.23450 · · · 0 e − 06
15
B.11 División de matrices 303
format bank
1.33 0.00
f ormat hex
f ormat +
Con los formatos short y long si el elemento mas grande de una matriz es mayor que
1000 ó menor que 0.001, la matriz total se muestra con un factor de escala común.
B.9 Funciones
Gran parte de la potencia del MATLAB proviene de su extensivo conjunto de fun-
ciones. Algunas son intrı́nsecas, otras son disponibles en la librerı́a de archivos exter-
nos tipo m, distribuı́da con el MATLAB (las herramientas). El usuario puede crear
sus propias funciones para aplicaciones mas especializadas (posteriormente se hablará
de los archivos m).
Usar el help para ver las diferentes categorı́as de funciones analı́ticas disponibles
en el MATLAB (matemática elemental, funciones especiales, matrices elementales,
especiales,· · ·).
Las funciones pueden tener varios argumentos de entrada y varias salidas. Ejemplos:
theta = atan2 (y, x), usa 2 argumentos de entrada.
[V, D] = eig (A), retorna 2 matrices, V y D, con los vectores y valores propios de la
matriz A, respectivamente. Las salidas son delimitadas con corchetes [ ] y separadas
con comas.
[y, i] = max (x), regresa el máximo valor del vector x en y, y el ı́ndice respectivo en i.
MATLAB nunca modifica la entrada o argumentos de entrada a la función. Siempre
retorna las salidas de una función en los argumentos del miembro izquierdo.
Ejemplo B.10 .
y = [1 2 3] − 1 = [0 1 2]
304 PROGRAMA MATLAB
donde:
Para suma y resta, las operaciones sobre arreglos y sobre matrices son las mismas,
ası́ + y − se pueden considerar como operaciones sobre matrices o arreglos.
.∗ denota la multiplicación de arreglos.
Ejemplo B.11 .
Si:
x = [1 2 3] ; y = [4 5 6] ;
entonces:
z = x. ∗ y = [4 10 18]
A ./B y A .\B dan los cocientes de los elementos individuales.
Ejemplo B.12 .
Ejemplo B.13 .
Para el x y y anterior:
z = x.ˆy = [1 32 729]
Ejemplo B.14 .
2 + 2 ∼= 4 es simplemente cero
306 PROGRAMA MATLAB
Ejemplo B.15 .
A = [1 2 3; 4 5 6]
· ¸
−1 1 −1
B = cos (pi ∗ A) =
1 −1 1
MATLAB incluye todas las funciones trigonométricas y exponenciales:
sin, cos, tan, asin, acos, atan, atan2, sinh, cosh, tanh, asinh, acosh, atanh.
Incluye estas funciones elementales:
abs, angle, sqrt, real, imag, conj, round, fix, floor, ceil, sign, rem, gcd, lcm, exp, log,
log10.
Algunas funciones especiales suministran capacidades más avanzadas:
bessel, beta, gamma, rat, erf , erf inv, ellipk, ellipj.
Ası́ como las funciones elementales, las especiales también operan sobre arreglos
cuando los argumentos son matrices.
B.18 Referencia a los elementos de una matriz 307
x=12345
Se pueden usar incrementos diferentes a la unidad:
y = 0 : pi/4 : pi
resulta en:
z = 6 : −1 : 1
da:
z=654321
La notación (:) permite la generación fácil de tablas. Para obtener una tabla en forma
vertical se traspone el vector fila obtenido de la notación (:), se calcula una columna
de los valores de una función y luego se forma la matriz de las 2 columnas.
Ejemplo B.16 .
0
x = (0.0 : 0.2 : 3.0) ;
y = exp (−x) . ∗ sin (x) ;
[x y]
produce:
Ejemplo B.17 .
Ejemplo B.18 .
v = 2 : 2 : n;
w = [3 1 4 1 6] ;
A (v, w)
A (:) en el lado derecho de una declaración de asignación denota todos los elementos
de A pero organizados en un vector columna.
Ejemplo B.19 .
A = [1 2 ; 3 4 ; 5 6]
B.21 Matrices especiales 309
b = A (:)
resulta en:
1
3
5
b=
2
4
6
A (:) en el lado izquierdo de una declaración de asignación denota una matriz con
las mismas dimensiones de A pero con el nuevo contenido de lado derecho de la
asignación. Por ejemplo, la matriz A anterior es de 3 × 2, A (:) = 11 : 16 es ahora:
11 14
A = 12 15
13 16
Ejemplo B.20 .
310 PROGRAMA MATLAB
A (:, [2 4]) = []
borra las columnas 2 y 4 de A.
Ejemplo B.21 .
Para generar la matriz ”companion” asociada con el polinomio:
s3 − 7s + 6
p = [1 0 − 7 6]
A = compan (p)
genera:
0 7 −6
A= 1 0 0
0 1 0
Los valores propios de A son las raı́ces del polinomio:
t
eig (A) = [−3 2 1]
Otras funciones que generan matrices son:
zeros, ones, rand, randn, eye, linspace, logspace, meshgrid (usar help para más
detalles).
[L, u] = lu (A)
[Q, R] = qr (A)
p = poly (A)
p = [1 − 6 − 72 − 27]
r = roots (p)
12.1229
r = −5.7345
−0.3884
312 PROGRAMA MATLAB
Estas raı́ces son, por supuesto, los mismos valores propios de la matriz A. También
se pueden obtener el polinomio original con poly :
p2 = poly (r)
p2 = [1 − 6 − 72 − 27]
a = [1 2 3] ; b = [4 5 6]
c = conv (a, b)
c = [4 13 28 27 18]
q = [4 5 6]
r = [0 0 0 0 0]
−a (2) y (n − 1) − · · · − a (na ) y (n − na + 1)
ó la función de transferencia z :
Y (z) b (1) + b (2) z −1 + · · · + b (nb ) z −(nb −1)
H (z) = =
x (z) 1 + a (2) z −1 + · · · + a (na ) z −(na −1)
Por ejemplo, para encontrar y graficar la respuesta al impulso (con n puntos) de un
filtro digital:
x = [1 zeros (1, n − 1)] ;
y = filter (b, a, x) ;
plot (y,0 o0 )
la función freqz retorna la respuesta frecuencial de filtros digitales.
La respuesta frecuencial es H (z) evaluada alrededor del cı́rculo unitario en el plano
complejo, z = ejω . Se puede usar freqz para encontrar y graficar la respuesta fre-
cuencial con n puntos.
[h, w] = f reqz (b, a, n) ;
se puede generar en MATLAB creando un archivo tipo m llamado humps.m con las
siguientes declaraciones:
y = 1./ ((x − .3) .ˆ2 + .01) + 1./ ((x − .9) .ˆ2 + .04) − 6;
x = −1 : .01 : 2;
100
80
60
40
20
-20
-1 -0.5 0 0.5 1 1.5 2
q = 29.8583
Nótese que el primer argumento de la función quad es el nombre del archivo, que
contiene la función matemática, entre comillas simples.
xm = 0.6370
es el mı́nimo de la función definida en humps.m en la región 0.5 a 1.
El valor de la función en el mı́nimo es:
y = humps (xm)
y = 11.2528
ẋ2 = x1
El primer paso es crear una función en un archivo tipo m con estas ecuaciones difer-
enciales. Si el archivo es llamado vdpol.m, entonces debe contener:
to = 0 ; tf = 20;
0
xo = [0 0.25] ; % condiciones iniciales
-1
-2
-3
0 5 10 15 20
B.31 Gráficos
El sistema de gráficos del MATLAB suministra una variedad de técnicas sofisticadas
para presentar y visualizar datos. Este sistema utiliza objetos gráficos, tales como
lı́neas y superficies, los cuales se pueden controlar con los valores de las propiedades
de los objetos. Sin embargo, ya que el MATLAB implementa un rico conjunto de
funciones gráficas de alto nivel (en 2 y 3 dimensiones), la mayorı́a de las veces no es
necesario accesar estos objetos gráficos a bajo nivel.
Se describirá como usar las capacidades gráficas de alto nivel del MATLAB para
presentar los datos.
Ejemplo B.23 .
t = 0 : pi/100 : 2 ∗ pi;
x = sin (t) ;
y1 = sin (t + .25) ;
y2 = sin (t + .5) ;
el cual permite ver las gráficas en la pantalla con fondo negro y las curvas blancas.
Sin embargo al importarlas a este texto los dos colores anteriores se intercambian.
Las siguientes declaraciones le adicionan un tı́tulo al gráfico y etiquetas a los ejes:
title (0 f ase0 )
¡ ¢
xlabel 0 x = sen (t)0
B.34 Estilos de lı́neas, marcadores y colores. 319
¡ 0¢
ylabel 0 y = sen (t+)
fase
1
0.5
y=sen(t+)
-0.5
-1
-1 -0.5 0 0.5 1
x=sen(t)
0.5
-0.5
-1
0 50 100 150 200 250
Ejemplo B.24 .
-1
-2
-3
-4
-5 0 5
Ella dibuja una curva por cada columna de Y . El eje x corresponde al ı́ndice de las
filas, 1 : m, en donde m es el número de filas en Y . Por ejemplo, plot (peaks,0 w−0 )
produce un gráfico con 49 curvas. Véase Fig. B.6.
10
-5
-10
0 10 20 30 40 50
10
-5
-10
-10 -5 0 5 10
En general, si plot es usada con dos argumentos y si X ó Y tienen más de una fila ó
columna, entonces:
a) Si Y es una matriz y x es un vector, plot (x, Y ) grafica sucesivamente las filas ó
columnas de Y contra el vector x, usando diferentes colores ó tipos de lı́neas para
cada una. La orientación por filas ó columnas se selecciona dependiendo del número
de elementos en x. Es decir, si x tiene m elementos y Y es m × n entonces se grafican
las columnas de Y contra x; y si x tiene n elementos y Y es m × n se grafican las filas
de Y contra x. Si Y es cuadrada, se grafican las columnas.
b) Si X es una matriz y y es un vector, plot (X, y) grafica cada fila o columna de X
contra el vector y.
Ejemplo B.25 .
50
40
30
20
10
0
-10 -5 0 5 10
plot (X1 , Y1 , X2 , Y2 , · · ·)
Cada par X −Y es graficado generando múltiples curvas. Los diferentes pares pueden
ser de dimensiones diferentes.
Ejemplo B.26 .
Almacenar en un archivo tipo m la siguiente matriz:
324 PROGRAMA MATLAB
80
60
40
20
0 2 4 6 8 10 12
2
0 2 4 6 8 10 12
xlabel (0 temp0 )
ylabel (0 precip0 )
title (0 Boston0 )
Boston
5
Dic
4.5
Nov
Mar
precip
4 Ene
Feb Abr Ago
3.5 May
Oct Sep
3
Jun
Jul
2.5
30 40 50 60 70 80
temp
Ejemplo B.27 .
Crear la función:
x = (0 : 1/2000 : 1)0 ;
Los dos gráficos se pueden ver, como se muestra en la Fig. B.11, en la misma ventana
ası́:
subplot(2, 1, 1);
x = (0 : 1/2000 : 1)0 ;
subplot (2, 1, 2) ;
f plot (0 f of x0 , [0 1])
-1
0 0.2 0.4 0.6 0.8 1
-1
0 0.2 0.4 0.6 0.8 1
Ejemplo B.28 .
t = 0 : pi/50 : 10 ∗ pi;
40
30
20
10
0
1
1
0
0
-1 -1
en donde todas las xi, yi y zi son vectores ó matrices y las si cadenas como en la
función plot.
B.41 ”Meshgrid”
MATLAB define una superficie en forma de malla mediante las coordenadas z de
puntos por encima de una cuadrı́cula rectangular en el plano x − y. La gráfica se
forma uniendo puntos adyacentes con lı́neas rectas.
Estas superficies son útiles para visualizar matrices que son demasiado grandes para
mostrar en forma numérica, ó para graficar funciones de dos variables.
El primer paso para mostrar (en pantalla) una función de dos variables, z = f (x, y) ,
es generar dos matrices X y Y que consisten de filas repetidas y columnas repetidas,
respectivamente, sobre el dominio de la función. Después se usan estas matrices para
evaluar y graficar la función.
La función meshgrid transforma el dominio especificado por dos vectores, x y y, en
matrices X y Y . Luego se usan estas matrices para evaluar funciones de dos variables.
Las filas de X son copias del vector x, y las columnas de Y con copias del vector y.
Es importante notar que si x tiene m elementos, y tiene n elementos, entonces X es
B.41 ”Meshgrid”. 329
de dimensión n × m y Y también.
Ejemplo B.29 .
Considere la función sinc (r) = sin(r)
r que produce la superficie popularmente conocida
como el ”sombrero” como se muestra en la Fig. B.13. Se evaluará esta función para
el rango de x entre −8 y 8, y y entre −10 y 10. :
x = −8 : 0.5 : 8;
mesh (x, y, Z)
0.5
-0.5
10
10
0
0
-10 -10
Ejemplo B.30 .
Ejemplo B.31 .
z = peaks ;
colormap (bone)
pcolor (z)
Ejemplo B.32 .
colormap (hot)
pcolor(peaks)
shading f lat
hold on
contour(peaks, 20,0 k0 )
hold of f
El MATLAB también maneja la función image que es similar a pcolor. Ambas pro-
ducen figuras bidimensionales con valores de brillo ó color proporcionales a los elemen-
tos de una matriz dada. Sin embargo, image está diseñada para mostrar fotografı́as,
pinturas, etc., mientras pcolor es diseñada para visualizar objetos matemáticos más
abstractos. Usar help para más información.
Ejemplo B.33 .
mesh (peaks)
surf (peaks)
Con dos matrices como argumentos, las declaraciones mesh (Z, C) y surf (Z, C)
especifican independientemente el color usando el segundo argumento. Ası́ como con
pcolor (C), los valores de C se escalan y se utilizan como ı́ndices en el mapa actual
de color.
332 PROGRAMA MATLAB
Ejemplo B.34 .
Ejemplo B.35 .
p = peaks ;
mesh (peaks, p)
La Fig. B.14 muestra la superficie del ejemplo B.35.
10
-5
-10
60
40 60
40
20 20
0 0
B.46 Lazos f or
La forma general para el lazo f or es:
f or v = expresión
declaraciones
end
La expresión es actualmente una matriz. Las columnas de la matriz se asignan una a
una a la variable v y luego son ejecutadas las declaraciones. Una manera más clara
de lograr lo mismo es ası́:
E = expresión ;
[m, n] = size (E) ;
for J = 1 : n
v = E (: , J) ;
declaraciones
end
Usualmente, expresión es algo como m : i : n, que es una matriz con una sola fila,
B.47 Lazos while. 335
y por lo tanto sus columnas son escalares. En este caso especial, el lazo f or de
MATLAB es como los lazos F OR o DO de otros lenguajes.
Ejemplo B.36 .
Graficar la respuesta al escalón unitario de un sistema de segundo orden con frecuencia
natural 1 rad
seg y relación de amortiguamiento variando desde 0 hasta 1.
t = 0 : 0.5 : 19.5;
r = 0.05 : 0.05 : 1.0;
n = 1; % numerador de la FT
f or j = 1 : 1 : 20
d = [1 2 ∗ r (j) 1] ; % denominador de la FT
Y (:, j) = step (n, d, t) ; % respuesta al escalón
% unitario
end
mesh (r, t, Y )
hold on
ylabel (0 tiempo0 )
xlabel (0 amortiguamiento0 )
zlabel (0 respuesta0 )
view (60, 30)
La Fig. B.16 muestra los resultados del ejemplo B.36.
1.5
Respuesta
0.5
0
0
0.5 20
15
10
5
1 0
Amortiguamiento Tiempo
Ejemplo B.37 .
Este ejemplo encuentra el primer entero n para el cual n! es un número de 100 dı́gitos.
n = 1;
while prod (1 : n) < 1.0 e 100 ;
n = n + 1;
end
n
Ejemplo B.38 .
Se muestra como un cálculo se puede dividir en tres casos, dependiendo del signo y
la paridad de n :
n = input(0 Entre un número positivo = 0 );
% Datos por teclado
If n < 0
disp (0 Es negativo 0 )
parid
elseif rem (n, 2) == 0
disp (0 Es par 0 )
else
disp (0 Es impar 0 )
end
Debe archivarse como archivo tipo m con el nombre parid.m.
Ejemplo B.39 .
Se lee un número positivo por teclado. Si es par se divide por 2, si es impar se
multiplica por 3 y se le suma 1. Se repite el proceso hasta que el entero llega a 1.
¿Existe algún entero para el cual el proceso no termina?.
B.50 Archivos ”script”. 337
while 1
n = input(0 Entre n > 0.0 );
if n <= 0
break;
% Salida de los lazos
end;
while n > 1
if rem(n, 2) == 0
n = n/2;
else
n = 3 ∗ n + 1;
end;
end;
end;
Ejemplo B.40 .
338 PROGRAMA MATLAB
Ejemplo B.41 .
El archivo ”media.m” con las siguientes declaraciones es una función:
z = 1 : 99;
B.53 Comandos ”echo”, ”input”, ”keyboard”, y ”pause”. 339
me =
50
de =
28.5774
Nótese que:
1) La primera lı́nea declara el nombre ”function”, los argumentos de entrada x (si
es más de uno, se separan por comas) y los argumentos de salida, med y desv.
2) El sı́mbolo ” % ” indica que el resto de la lı́nea es un comentario y debe ser ignorada.
3) Las primeras pocas lı́neas documentan el archivo M y la muestra cuando se escribe
”help media ”.
4) Las variables m, n, med y desv son locales a la función media y no existen en
el espacio de trabajo después de que media ha terminado (o si existı́an previamente,
permanecen sin cambiar).
5) El vector z que contenı́a los enteros de 1 a 99 fué pasado o copiado en media en
donde llega a ser una variable local llamada x.
s = 0 Hola0
resulta en:
s =
Hola
El texto se almacena en un vector, un caracter por elemento. En este ejemplo:
size (s)
ans =
14
indica que s tiene cuatro elementos. Los caracteres son almacenados como sus valores
ASCII y abs muestra estos valores:
B.56 La función ”eval”. 341
abs (s)
ans =
72 111 108 97
la función setstr permite mostrar el vector como texto en lugar de mostrar los valores
ASCII. disp muestra el texto en la variable.
Otras funciones útiles son: isstr la cual detecta caracteres, y strcmp, la cual compara
cadenas de caracteres.
El uso de corchetes concatena variables de texto en cadenas mas largas:
s = [s,0 amigos0 ]
s =
Hola amigos
Valores numéricos son convertidos a caracteres con sprintf , num2str, int2str. Los
valores numéricos son a veces concatenados para poner tı́tulos en gráficos que incluyen
valores numéricos:
t = 0 CADENA0 ;
codifica el texto en t. Escribir t imprime el texto (en pantalla) y eval (t) hace que
el texto sea interpretado, como una declaración o como un factor en una expresión.
Ejemplo B.42 .
342 PROGRAMA MATLAB
t = 0 1/ (i + j − 1)0 ;
f or i = 1 : n
f or j=1:n
a (i, j) = eval (t) ;
end
end
Ejemplo B.43 .
En este ejemplo los archivos m tienen los nombres : resist.m, induct.m y conden.m.
Nótese que el número de columnas en elementos implica que cada fila debe tener el
mismo número de caracteres.
Ejemplo B.44 .
En este ejemplo se muestra como eval puede usar el comando load para cargar 10
archivos de datos numerados secuencialmente:
nombre ar = 0 misdatos0 ;
f or i = 1 : 10
eval ([ 0 load 0 , nombre ar, int2str (i)])
end
Ejemplo B.45 .
i = 0;
for t = 0 : .01 : 10
i = i + 1;
y (i) = sin (t) ;
end
t = 0 : .01 : 10 ;
y = sin (t) ;
C.1 Introducción
El SIMULINK es una herramienta del MATLAB que permite simular sistemas tanto
lineales como no lineales interactuando con el usuario de una manera gráfica.
Para entrar al programa se escribe simulink una vez se esté dentro del MATLAB.
Se presenta un pantallazo con varias ventanas (cajas) que contienen los diferentes
bloques de simulación. Estas ventanas son:
”sources” (fuentes), ”sinks” (sumideros), ”discrete” (discretos), ”linear” (lineales),
”nonlinear” (no lineales), ”connections” (conexiones) y ”extra” (extras).
345
346 INTRODUCCION AL SIMULINK
12:34
Clock Digital Clock
Repeating
1 Sequence
Constant
Signal
Generator
Pulse
Generator
Sine Wave Step Input
untitled.mat [T,U]
Random Band-Limited
Number White Noise
yout
To Workspace
Scope
untitled.mat
To File
Graph
STOP
Nonlinear Library
Linear Library
a) ”Linear” b) ”Nonlinear”
Connections
Library
1
Inport
1
Outport
Mux
Mux
Demux
Demux
Discrete-Time Library
(z-1)
1/z
z(z-0.5)
Unit Delay
Discrete
Zero-Pole
1 1
1+2z -1 z+0.5
Filter Discrete
Transfer Fcn
x(n+1)=Ax(n)+Bu(n)
y(n)=Cx(n)+Du(n)
Discrete State-Space
Zero-Order First-Order
Hold Hold
1
z-1
Discrete-Time Discrete-Time
Integrator Limited Integrator
en donde ”modelo” es el nombre del diagrama del sistema y linsim es una de las
técnicas de integración.
Las condiciones iniciales, que no se pueden ajustar desde el menú de ”simulation”,
se definen en el vector xo. Estas condiciones iniciales prevalecen sobre las condiciones
iniciales ajustadas en los bloques, a menos que xo sea una matriz vacı́a.
La simulación desde la lı́nea de comandos tiene las siguientes ventajas:
a) Se puede definir las condiciones iniciales, las cuales prevalecen sobre las definidas
en los bloques.
b) Si no se especifican los argumentos del lado izquierdo del comando de simulación,
automáticamente se grafican las salidas o, cuando no hay salidas, las trayectorias del
estado.
c) Entradas externas se pueden especificar usando una variable extra ut, la cual va
al final de los parámetros del comando de simulación. ut puede ser una cadena de
caracteres o una tabla de valores. Por ejemplo ut = 0 sin0 o ut = 0 ones (2, 1) ∗
sin (3 ∗ t + 2)0 . Si es una tabla, la primer columna debe ser un vector con los tiempos
en orden ascendente.
d) Una simulación se puede correr desde un archivo M permitiendo que parámetros
en los bloques sean cambiados interactivamente.
e) Para pequeños modelos, la simulación se ejecuta más rápido.
Todos los algoritmos de integración tienen idéntica sintaxis de modo que los diferentes
métodos se pueden seleccionar simplemente cambiando el nombre de la función: euler,
rk23, rk45, linsim, adams y gear.
La velocidad y precisión con las cuales se pueden resolver las ecuaciones diferenciales
no sólo dependen de los parámetros del intervalo de integración y el error relativo
si no también del algoritmo que se escoja. Estas rutinas se pueden usar para una
variedad de problemas:
linsim usa un método que extrae la dinámica lineal de un sistema dejando únicamente
la dinámica no lineal del sistema para ser simulado. Este método trabaja muy bien
cuando el sistema a ser simulado es relativamente lineal, y se pueden tomar inter-
valos grandes de integración. Por esto es necesario limitar el máximo intervalo de
integración si se quieren puntos de salida razonablemente espaciados.
El método de euler es un método de intervalo único el cual simplemente multiplica
las derivadas por el tamaño del intervalo para producir la actualización del estado. Se
incluye por razones históricas. Se deben tomar intervalos de integración mucho más
pequeños que los de los otros métodos para lograr la misma precisión y, por ésto, no
se recomienda para la mayorı́a de problemas.
Los métodos de Runge-Kutta, rk23 y rk45, son métodos buenos de propósito general
que trabajan bien para un buen rango de problemas. Aunque rk45 es generalmente
más rápido y preciso que rk23, produce menos puntos de salida; por eso rk23 podrı́a
ser preferido para gráficas ”suaves”. Son los mejores métodos cuando el sistema a ser
simulado tiene discontinuidades.
adams y gear son métodos predictores-correctores que trabajan bien con problemas
en donde las trayectorias de estado son suaves.
El método de gear es fundamentalmente para sistemas con mezcla de dinámicas rápida
352 INTRODUCCION AL SIMULINK
Ejemplo C.1 .
Este ejemplo sirve para simular el control por realimentación de variables de estado
de la planta constituida por el péndulo invertido considerado en el Capı́tulo 1, cuya
descripción matemática es dada por las ecuaciones (1.16) y (1.17). Referirse también
al artı́culo de los autores ”Frecuencias escondidas en sistemas lineales”, en la revista
Scientia et Technica, No. 5 de Abril de 1997.
Si se definen las variables de estado como:
x1 = φ, x2 = φ̇, x3 = y, x4 = ẏ
en donde:
(m + M )mgL (mL)2 g
a21 = , a41 = ,
d d
mL I + mL2
b2 = − , b4 = , d = (m + M)I + mML2
d d
La Fig. C.8 muestra el diagrama del Simulink para el control del péndulo invertido,
el cual es archivado con el nombre ”sipend”.
C.3 Inicio de una simulación 353
ti
Reloj Tiempo
u
Señal de Control
x' = Ax+Bu x
y = Cx+Du Vector de Estado
Péndulo
Invertido
K
Ganancias de
Realimentación
Figura C.8 Diagrama del Simulink para el control del péndulo invertido
Nótese de la Fig. C.8 que:
1) La planta se simula con el bloque ”state − space”, ya que su modelo matemático
es dado mediante ecuaciones de estado y de salida.
2) La realimentación de las variables de estado se hace a través del bloque ”matrix gain”
de la librerı́a ”linear”.
3) Las variables que se quieren observar (control y estado) se envı́an al espacio de
trabajo en un bloque ”to workspace” ( Vector de Estado) para ser graficados con un
archivo tipo m o un programa que usa comandos del MATLAB que se muestra más
adelante. Los instantes de simulación, contenidos en el bloque ”clock”, también son
enviados al espacio de trabajo para ser usados en las gráficas de los resultados.
El programa que maneja la simulación, pide las ganancias por las cuales se deben
multiplicar las variables de estado, calcula las matrices A y B y grafica los resultados
es el siguiente:
% PÉNDULO INVERTIDO
% Se piden las ganancias de realimentación
k1=input(’Ganancia de realimentación para x1, k1 = ’)
k2=input(’Ganancia de realimentación para x2, k2 = ’)
k3=input(’Ganancia de realimentación para x3, k3 = ’)
k4=input(’Ganancia de realimentación para x4, k4 = ’)
% Parámetros del péndulo invertido
m=0.05;M=0.5;g=9.8;L=1;
I=m*Lˆ2/3;delta=(m+M)*I+m*M*Lˆ2;
% Se calculan las matrices A y B
354 INTRODUCCION AL SIMULINK
10
pos. angular del péndulo, grados
0
0 2 4 6 8 10
segs.
0
0 2 4 6 8 10
segs.
10
pos. angular del péndulo, grados
-2
-4
-6
0 2 4 6 8 10
segs.
0.5
0.3
0.2
0.1
0
0 2 4 6 8 10
segs.
Ejemplo C.2 .
Este ejemplo sirve para simular el control óptimo usando realimentación de las va-
riables de estado estimadas de una planta (motor DC y su ”drive”) por medio de un
observador asintótico (Véase Capı́tulo 9). Referirse al artı́culo de los autores ”Diseño
de un controlador óptimo que utiliza un observador asintótico para realimentar las
variables de estado estimadas”, en la revista Scientia et Technica, No. 4 de Octubre
de 1996.
El criterio de optimización consiste en minimizar el ı́ndice cuadrático:
Z ∞
J= [xt Qx + ut Ru]dt
0
0 0 .01 100
R = .01
Puesto que se introduce un integrador con el fin de eliminar el error de estado esta-
cionario, la planta es de cuarto orden y su modelo matemático mediante ecuaciones
de estado es descrito por las matrices:
C.3 Inicio de una simulación 357
−.1653 .2879 0 0
−11.55 −3.414 .9177 0
A2 =
0 0 −12.3 0
−1 0 0 0
0
0 £ ¤
B2 =
147.5 , C2 = 1 0 0 0
0
Señal de control u
x' = Ax+Bu Demux estadore
y = Cx+Du Al espacio de
SaturaciónModelo del Demux2 trabajo3
motor Salida y
Error de
x' = Ax+Bu Mux x4 control -
y = Cx+Du 1/s +
Ganancias deMux1 I1 S2 Referencia
realimentación
ti
Vector de estado Reloj Al espacio de
estimado trabajo2
+
-
Mux x' = Ax+Bu
y = Cx+Du Demux S1 Error del
Mux2 Observador Demux1 observador
asintótico Mux estado
Mux Altrabajo1
espacio de
10
0
0 1 2 3 4
segs.
80
60
40
20
-20
0 1 2 3 4
segs.
150
100
50
-50
-100
0 1 2 3 4
segs.
10
0
0 1 2 3 4
segs.
-1
0 1 2 3 4
segs.