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 Introduccion
Programa que sirve para calculo numerico y visualizacion de alto desarrollo. El ambi-
ente es tal que los problemas y soluciones se expresan como se escriben matematica-
mente, sin la tradicional programacion. Es un sistema interactivo cuyo elemento
basico de datos es una matriz que no requiere dimensionamiento.
MATLAB tambien tiene cajas de herramientas, toolboxes, que resuelven clases
particulares de problemas tales como procesamiento de senales, diseno de sistemas de
control, simulacion de sistemas dinamicos, identificacion de sistemas, redes neurales,
sistemas de control robustos, optimizacion y otros (Matematica simbolica).
La cualidad mas importante del MATLAB es que es facilmente extendible. Esto
permite crear nuestras propias aplicaciones.
El contenido de este apendice describe:
a) Como entrar matrices simples, los elementos para construirlas, declaraciones y
variables del MATLAB.
b) Como conseguir informacion del espacio de trabajo y como guardarla.
c) Numeros y expresiones aritmeticas.
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 o ENTER.
Se pueden entrar matrices desde archivos de disco si su nombre tiene extension m.
Si un archivo llamado gena m tiene las siguientes lneas de texto:
A= [1 2 3
4 5 6
7 8 9]
entonces la declaracion gena lee el archivo y genera A.
Ejemplo B.2 .
resulta en:
los elementos de la matriz pueden ser referenciados con ndices dentro de parentesis.
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 pequenas 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 proxima 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, o tambien guardar unicamente 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
tambien 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 numero. Calculos como Inf /Inf o 0/0 la producen.
MATLAB maneja numeros 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 funcion interna puede ser un nombre de una variable, pero en este
caso no es disponible la funcion interna dentro del actual area 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 Division 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 o menor que 0.001, la matriz total se muestra con un factor de escala comun.
B.9 Funciones
Gran parte de la potencia del MATLAB proviene de su extensivo conjunto de fun-
ciones. Algunas son intrnsecas, otras son disponibles en la librera de archivos exter-
nos tipo m, distribuda con el MATLAB (las herramientas). El usuario puede crear
sus propias funciones para aplicaciones mas especializadas (posteriormente se hablara
de los archivos m).
Usar el help para ver las diferentes categoras de funciones analticas disponibles
en el MATLAB (matematica 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 maximo valor del vector x en y, y el ndice respectivo en i.
MATLAB nunca modifica la entrada o argumentos de entrada a la funcion. Siempre
retorna las salidas de una funcion en los argumentos del miembro izquierdo.
Ejemplo B.10 .
y = [1 2 3] 1 = [0 1 2]
304 PROGRAMA MATLAB
Ap = A A} , si p es un entero > 1
| A {z
p
Ap = V D. p/V , para otros valores de p
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 multiplicacion 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 trigonometricas 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 mas avanzadas:
bessel, beta, gamma, rat, erf , erf inv, ellipk, ellipj.
As como las funciones elementales, las especiales tambien 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 notacion (:) permite la generacion facil de tablas. Para obtener una tabla en forma
vertical se traspone el vector fila obtenido de la notacion (:), se calcula una columna
de los valores de una funcion 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 declaracion de asignacion 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 declaracion de asignacion denota una matriz con
las mismas dimensiones de A pero con el nuevo contenido de lado derecho de la
asignacion. 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 races 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 mas
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 races son, por supuesto, los mismos valores propios de la matriz A. Tambien
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)
o la funcion 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 funcion freqz retorna la respuesta frecuencial de filtros digitales.
La respuesta frecuencial es H (z) evaluada alrededor del crculo 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:
x = 1 : .01 : 2;
100
80
60
40
20
-20
-1 -0.5 0 0.5 1 1.5 2
q = 29.8583
Notese que el primer argumento de la funcion quad es el nombre del archivo, que
contiene la funcion matematica, entre comillas simples.
xm = 0.6370
es el mnimo de la funcion definida en humps.m en la region 0.5 a 1.
El valor de la funcion en el mnimo es:
y = humps (xm)
y = 11.2528
x2 = x1
El primer paso es crear una funcion 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 Graficos
El sistema de graficos del MATLAB suministra una variedad de tecnicas sofisticadas
para presentar y visualizar datos. Este sistema utiliza objetos graficos, tales como
lneas 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 graficas de alto nivel (en 2 y 3 dimensiones), la mayora de las veces no es
necesario accesar estos objetos graficos a bajo nivel.
Se describira como usar las capacidades graficas 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 graficas 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 ttulo al grafico y etiquetas a los ejes:
title (0 f ase0 )
xlabel 0 x = sen (t)0
B.34 Estilos de lneas, 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 numero de filas en Y . Por ejemplo, plot (peaks,0 w0 )
produce un grafico con 49 curvas. Vease 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 o Y tienen mas de una fila o
columna, entonces:
a) Si Y es una matriz y x es un vector, plot (x, Y ) grafica sucesivamente las filas o
columnas de Y contra el vector x, usando diferentes colores o tipos de lneas para
cada una. La orientacion por filas o columnas se selecciona dependiendo del numero
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 multiples 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 funcion:
x = (0 : 1/2000 : 1)0 ;
Los dos graficos 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 o matrices y las si cadenas como en la
funcion plot.
B.41 Meshgrid
MATLAB define una superficie en forma de malla mediante las coordenadas z de
puntos por encima de una cuadrcula rectangular en el plano x y. La grafica se
forma uniendo puntos adyacentes con lneas rectas.
Estas superficies son utiles para visualizar matrices que son demasiado grandes para
mostrar en forma numerica, o para graficar funciones de dos variables.
El primer paso para mostrar (en pantalla) una funcion 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 funcion. Despues se usan estas matrices para
evaluar y graficar la funcion.
La funcion 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 dimension n m y Y tambien.
Ejemplo B.29 .
Considere la funcion sinc (r) = sin(r)
r que produce la superficie popularmente conocida
como el sombrero como se muestra en la Fig. B.13. Se evaluara esta funcion para
el rango de x entre 8 y 8, y y entre 10 y 10. :
x = 8 : 0.5 : 8;
y = 10 : 0.5 : 10;
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 tambien maneja la funcion image que es similar a pcolor. Ambas pro-
ducen figuras bidimensionales con valores de brillo o color proporcionales a los elemen-
tos de una matriz dada. Sin embargo, image esta disenada para mostrar fotografas,
pinturas, etc., mientras pcolor es disenada para visualizar objetos matematicos mas
abstractos. Usar help para mas informacion.
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 = expresion
declaraciones
end
La expresion 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 mas clara
de lograr lo mismo es as:
E = expresion ;
[m, n] = size (E) ;
for J = 1 : n
v = E (: , J) ;
declaraciones
end
Usualmente, expresion 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 escalon unitario de un sistema de segundo orden con frecuencia
natural 1 rad
seg y relacion 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 escalon
% 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 numero de 100 dgitos.
n = 1;
while prod (1 : n) < 1.0 e 100 ;
n = n + 1;
end
n
Ejemplo B.38 .
Se muestra como un calculo se puede dividir en tres casos, dependiendo del signo y
la paridad de n :
n = input(0 Entre un numero 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 numero 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 algun 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 funcion:
z = 1 : 99;
B.53 Comandos echo, input, keyboard, y pause. 339
me =
50
de =
28.5774
Notese que:
1) La primera lnea declara el nombre function, los argumentos de entrada x (si
es mas de uno, se separan por comas) y los argumentos de salida, med y desv.
2) El smbolo % indica que el resto de la lnea es un comentario y debe ser ignorada.
3) Las primeras pocas lneas documentan el archivo M y la muestra cuando se escribe
help media .
4) Las variables m, n, med y desv son locales a la funcion media y no existen en
el espacio de trabajo despues de que media ha terminado (o si existan previamente,
permanecen sin cambiar).
5) El vector z que contena los enteros de 1 a 99 fue 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 funcion eval. 341
abs (s)
ans =
72 111 108 97
la funcion setstr permite mostrar el vector como texto en lugar de mostrar los valores
ASCII. disp muestra el texto en la variable.
Otras funciones utiles 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 numericos son convertidos a caracteres con sprintf , num2str, int2str. Los
valores numericos son a veces concatenados para poner ttulos en graficos que incluyen
valores numericos:
B.56 La funcion ev al
La funcion eval trabaja con variables de texto para implementar una poderosa fa-
cilidad al estilo macro. eval (t) hace que el texto contenido en t sea evaluado. Si
CADENA es el texto fuente para cualquier expresion o declaracion del MATLAB,
entonces:
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 declaracion o como un factor en una expresion.
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.
Notese que el numero de columnas en elementos implica que cada fila debe tener el
mismo numero 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 Introduccion
El SIMULINK es una herramienta del MATLAB que permite simular sistemas tanto
lineales como no lineales interactuando con el usuario de una manera grafica.
Para entrar al programa se escribe simulink una vez se este dentro del MATLAB.
Se presenta un pantallazo con varias ventanas (cajas) que contienen los diferentes
bloques de simulacion. 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
tecnicas de integracion.
Las condiciones iniciales, que no se pueden ajustar desde el menu 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 vaca.
La simulacion desde la lnea 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 simulacion,
automaticamente 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 parametros del comando de simulacion. 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 simulacion se puede correr desde un archivo M permitiendo que parametros
en los bloques sean cambiados interactivamente.
e) Para pequenos modelos, la simulacion se ejecuta mas rapido.
Todos los algoritmos de integracion tienen identica sintaxis de modo que los diferentes
metodos se pueden seleccionar simplemente cambiando el nombre de la funcion: euler,
rk23, rk45, linsim, adams y gear.
La velocidad y precision con las cuales se pueden resolver las ecuaciones diferenciales
no solo dependen de los parametros del intervalo de integracion y el error relativo
si no tambien del algoritmo que se escoja. Estas rutinas se pueden usar para una
variedad de problemas:
linsim usa un metodo que extrae la dinamica lineal de un sistema dejando unicamente
la dinamica no lineal del sistema para ser simulado. Este metodo trabaja muy bien
cuando el sistema a ser simulado es relativamente lineal, y se pueden tomar inter-
valos grandes de integracion. Por esto es necesario limitar el maximo intervalo de
integracion si se quieren puntos de salida razonablemente espaciados.
El metodo de euler es un metodo de intervalo unico el cual simplemente multiplica
las derivadas por el tamano del intervalo para producir la actualizacion del estado. Se
incluye por razones historicas. Se deben tomar intervalos de integracion mucho mas
pequenos que los de los otros metodos para lograr la misma precision y, por esto, no
se recomienda para la mayora de problemas.
Los metodos de Runge-Kutta, rk23 y rk45, son metodos buenos de proposito general
que trabajan bien para un buen rango de problemas. Aunque rk45 es generalmente
mas rapido y preciso que rk23, produce menos puntos de salida; por eso rk23 podra
ser preferido para graficas suaves. Son los mejores metodos cuando el sistema a ser
simulado tiene discontinuidades.
adams y gear son metodos predictores-correctores que trabajan bien con problemas
en donde las trayectorias de estado son suaves.
El metodo de gear es fundamentalmente para sistemas con mezcla de dinamicas rapida
352 INTRODUCCION AL SIMULINK
Ejemplo C.1 .
Este ejemplo sirve para simular el control por realimentacion de variables de estado
de la planta constituida por el pendulo invertido considerado en el Captulo 1, cuya
descripcion matematica es dada por las ecuaciones (1.16) y (1.17). Referirse tambien
al artculo 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 = y
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 pendulo invertido,
el cual es archivado con el nombre sipend.
C.3 Inicio de una simulacion 353
ti
Reloj Tiempo
u
Seal de Control
x' = Ax+Bu x
y = Cx+Du Vector de Estado
Pndulo
Invertido
K
Ganancias de
Realimentacin
Figura C.8 Diagrama del Simulink para el control del pendulo invertido
Notese de la Fig. C.8 que:
1) La planta se simula con el bloque state space, ya que su modelo matematico
es dado mediante ecuaciones de estado y de salida.
2) La realimentacion de las variables de estado se hace a traves del bloque matrix gain
de la librera linear.
3) Las variables que se quieren observar (control y estado) se envan 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 mas
adelante. Los instantes de simulacion, contenidos en el bloque clock, tambien son
enviados al espacio de trabajo para ser usados en las graficas de los resultados.
El programa que maneja la simulacion, 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:
% PENDULO INVERTIDO
% Se piden las ganancias de realimentacion
k1=input(Ganancia de realimentacion para x1, k1 = )
k2=input(Ganancia de realimentacion para x2, k2 = )
k3=input(Ganancia de realimentacion para x3, k3 = )
k4=input(Ganancia de realimentacion para x4, k4 = )
% Parametros del pendulo invertido
m=0.05;M=0.5;g=9.8;L=1;
I=m*L2/3;delta=(m+M)*I+m*M*L2;
% Se calculan las matrices A y B
354 INTRODUCCION AL SIMULINK
10
pos. angular del pndulo, grados
0
0 2 4 6 8 10
segs.
0
0 2 4 6 8 10
segs.
10
pos. angular del pndulo, 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 optimo usando realimentacion de las va-
riables de estado estimadas de una planta (motor DC y su drive) por medio de un
observador asintotico (Vease Captulo 9). Referirse al artculo de los autores Diseno
de un controlador optimo que utiliza un observador asintotico para realimentar las
variables de estado estimadas, en la revista Scientia et Technica, No. 4 de Octubre
de 1996.
El criterio de optimizacion consiste en minimizar el ndice cuadratico:
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 matematico mediante ecuaciones
de estado es descrito por las matrices:
C.3 Inicio de una simulacion 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
Seal de control u
x' = Ax+Bu Demux estadore
y = Cx+Du Al espacio de
SaturacinModelo del Demux2 trabajo3
motor Salida y
Error de
x' = Ax+Bu Mux x4 control -
y = Cx+Du 1/s +
Ganancias deMux1 I1 S2 Referencia
realimentacin
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
asinttico 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.