Professional Documents
Culture Documents
a
MATLAB
26 de enero de 2004
2
Captulo 1
1.1 Caractersticas
Matlab es un paquete de software orientado hacia el calculo numerico cientfico e in-
genieril. Integra calculo numerico, computacion de matrices y graficos en un entorno de
trabajo comodo para el usuario. Su nombre significa Laboratorio de Matrices y fue escrito
inicialmente en base a los ya existentes paquetes de calculo matricial LINPACK y EIS-
PACK. Posteriormente se han a nadido libreras, denominadas Toolboxes, especializadas
en diferentes areas cientficas. De entre ellas podemos destacar
Simulink Toolbox
por su particular interes para nuestra area de conocimiento. La u ltima de la lista, Symbolic
Math Toolbox, esta basada en el programa de calculo simbolico Maple y utiliza una sintaxis
diferente.
Matlab ha evolucionado y crecido con las aportaciones de muchos usuarios. En entor-
nos universitarios se ha convertido, junto con Mathematica y Maple, en una herramienta
instructora basica para cursos de matematicas aplicadas as como para cursos avanzados
en otras areas. En entornos industriales se utiliza para investigar y resolver problemas
practicos y calculos de ingeniera. Son aplicaciones tpicas el calculo numerico, la realiza-
cion de algoritmos, la resolucion de problemas con formulacion matricial, la estadstica,
la optimizacion, etc. Es de destacar la aplicacion en el estudio, simulacion y dise no de los
sistemas dinamicos y de control.
3
4 CAPITULO 1. LOS PRIMEROS PASOS EN MATLAB
1.2 Funcionamiento
Matlab es un programa interprete de comandos. Esto quiere decir que es capaz de procesar
de modo secuencial una serie de comandos previamente definidos, obteniendo de forma
inmediata los resultados. Los comandos pueden estar ya definidos en el propio Matlab y
pueden tambien ser definidos por el usuario. Para que Matlab pueda realizar este proceso
el usuario ha de escribir la lista de comandos en la ventana de comandos, si su n
umero es
reducido, o en un fichero con extension .m, constituyendo entonces un programa.
El metodo que debe seguirse para procesar los datos es muy simple:
2. Tras la orden de ejecucion enter (o escribir el nombre del fichero), Matlab procesa
la informacion.
3. Matlab Escribe los resultados en la ventana de comandos y los graficos (si los hu-
biere) en otras ventanas graficas.
1.3 Sintaxis
Para escribir las expresiones es preciso respetar ciertas reglas sintacticas propias de Mat-
lab. Algunas se parecen bastante a las de otros lenguajes de programacion por lo que no
resultan extranas.
1.3.2 Operadores
Hay operadores para n
umeros (reales o complejos) y para matrices.
Para n
umeros: + - * / ^
N
umeros complejos: Esta definida la unidad imaginaria, 1, que se denota indistinta-
mente por los smbolos i y j
Para matrices: + - * / \ ^
Los operadores para n umeros se colocan entre dos numeros y dan como resultado otro
numero. Por ejemplo 2 + 3 o a + b, si a y b han sido asignadas previamente a n umeros.
Los operadores para matrices se colocan entre dos matrices y dan como resultado otra
matriz.
Los operadores de relacion son para n umeros reales, se colocan entre dos n umeros y
dan como resultado 1, que significa cierto, o 0, que significa falso. El significado de todos
ellos resulta obvio, si bien conviene aclarar que el operador == significa igual, en el sentido
de condicion (por ejemplo a==b puede ser cierto o falso), y es diferente del operador = que
sirve para asignar un valor a una variable (por ejemplo a=3) significa dar a la variable
a el valor de 3. El operador ~= significa distinto, tambien en el sentido de condicion.
Los operadores de condicion se utilizan, sobre todo, en las estructuras de programacion
if-then-else, for, y while.
Para delimitar las matrices se utilizan los corchetes [ ]. Para separar elementos
consecutivos, el espacio en blanco (barra espaciadora) o la coma , y para pasar de fila,
la tecla enter o el punto y coma ; .
La traspuesta conjugada de una matriz de n umeros complejos A se representa por A.
Otros operadores, para usos varios, son
Trigonometricas: sin, cos, tan, asin, acos, atan, sinh, cosh, tanh, asinh, acosh, atanh.
Logicas: any, all, find, exist, isnan, finite, isempty, isstr, strcomp.
Otras: abs, angle, sqrt, real, imag, conj, round, fix, floor, ceil, sign, rem, exp, log, log10.
N
umeros complejos
La forma de operar con n
umeros complejos es igual que para los reales.
>> M=abs(c1)
M =
2.2361
>> alpha=angle(c1)
alpha =
1.1071
>> alpha_grados=alpha*180/pi
alpha_grados =
63.4349
>> M*cos(alpha)
ans =
1
>> M*sin(alpha)
ans =
2
>> a = [1 2 3 4 6 4 3 4 5]
a =
1 2 3 4 6 4 3 4 5
>> b = a + 2
b =
3 4 5 6 8 6 5 6 7
>> c = a + b
c =
4 6 8 10 14 10 8 10 12
>> d = a .* b
c =
3 8 15 24 48 24 15 24 35
Citaremos por u ltimo la funcion residue que sirve para hallar los residuos de una
funcion racional en los polos de la misma (o coeficientes de su expansion en fracciones
simples), bajo el supuesto de que los polos sean simples. Ademas, dicha funcion calcula
tambien los polos y el termino directo.
>> B = [1 2 3 4];
>> A = [1 2 3 4 5 6 7];
>> [r,p,k] = residue(B,A);
>> syms a b p x
>> a = x^3+3*x^2-2*x+7;
>> b = x^2+x+3;
>> p = a * b
p =
(x^3+3*x^2-2*x+7)*(x^2+x+3)
>> expand(p)
ans =
x^5+4*x^4+4*x^3+14*x^2+x+21
1.6.2 Sustituci
on de variables
La sustitucion de un smbolo por otro en una expresion simbolica se puede realizar con
la orden subs. La forma de hacerlo es subs(expr, old, new), en donde expr es una
expresion simbolica, old es el smbolo (o valor) que se desea sustituir y new es el nuevo
smbolo o valor.
Supongamos que en el polinomio f = ax2 + bx + c queremos sustituir x por -1. Para
ello, si escribimos
>> syms x a b c
>> f = a*x^2 + b*x + c;
>> g = subs(f,x,-1)
entonces sale
g =
a - b + c
>> syms x a b c k
>> f = a*x^2 + b*x + c;
>> g = subs(f,[a,b,c],[1,2,k])
y obtendremos
g =
x^2+2*x+k
Numerador y denominador
x2 + 1 x
h= + ,
2x 1 x 1
>> x=sym(x)
>> h = (x^2+1)/(2x-1) + x/(x-1);
>> [n,d] = numden(h)
n =
x^3+x^2-1
d =
(2*x-1)*(x-1)
Conversi
on de polinomios
>> syms x
>> p = [1 2 3 4 5]
>> px = poly2sym(p,x)
px = x^4+2*x^3+3*x^2+4*x+5
>> sym2poly(px)
ans =
1 2 3 4 5
1.7 Gr
aficos
Matlab tiene una buena coleccion de comandos para obtener representaciones graficas a
partir de datos numericos y tambien algunos para expresiones simbolicas.
1.7. GRAFICOS 13
1.7.1 Gr
aficos en 2D
En las aplicaciones interesa a veces conocer el valor numerico de una funcion y = f (x)
para uno o varios valores de la variable. En Matlab, dada una funcion y = f (x), definida
en un intervalo [a, b], es posible representarla por un par (x,y) de vectores de n umeros,
tales que el vector x contiene un conjunto finito de valores de x y el vector y contiene el
conjunto de valores imagenes de x por la funcion y, calculados por el propio Matlab. Una
vez representada de este modo la funcion, se puede representar graficamente.
Por ejemplo, dada la funcion y = 10(1 ex/3 sin(10x)), definida en el intervalo [0, 10],
una posible representacion en Matlab, seguida de su representacion grafica, sera
>> x=[0:0.1:10];
>> y=10*(1-exp(-x/3).*sin(10*x));
>> plot(x,y),title(Gr
afica de una funci
on)
Grfica de una funcin
20
18
16
14
12
10
0
0 1 2 3 4 5 6 7 8 9 10
1.7.2 Gr
aficos en 3D
Las funciones de dos variables, de la forma f (x, y) se pueden representar graficamente
con Matlab en 3D. Para ello es preciso crear un dominio de puntos en forma de malla
rectangular en el plano (x, y), dentro del cual se desea representar la funcion. Esto se
hace con la orden meshgrid (antes meshdom) de Matlab. Veamoslo con un ejemplo. Sea
la funcion z : R2 R, p
z = 1 x2 y 2 ,
cuyo dominio es el crculo x2 + y 2 < 1, y supongamos que queremos calcular los valores
de z en una region rectangular del plano (x, y) definida por los puntos (-1.25,-1.25) y
(1.25,1.25), y representarla graficamente. Para ello escribiremos:
14 CAPITULO 1. LOS PRIMEROS PASOS EN MATLAB
0.8
0.6
0.4
0.2
0
15
14
10 12
10
8
5 6
4
2
0 0
1.8 Ficheros-m
Matlab esta dotado de un mecanismo que le permite interpretar ficheros de texto, con
la condicion de que su nombre termine por .m. Se utilizan principalmente para crear
funciones (en el sentido matematico), programas y funciones (ordenes) de Matlab.
1.8.1 Funciones-funci
on
Mediante ficheros-m podemos crear funciones en el sentido matematico:
f : x f (x)
function y=f1(x)
y=1 ./ ((x-0.3).^2+0.01) + 1 ./((x-0.9).^2+0.04)-6;
>> x=[-1:0.1:2];
>> y=f1(x);
>> plot(x,y);
Funcin y=f1(x)
100
80
60
40
20
20
1 0.5 0 0.5 1 1.5 2
1
f=
1 1
+
x y
utilizada en Optica. Para ello creamos el fichero lente.m con la definicion de la funcion.
Escribimos
function z=lente(x,y)
z = 1 ./ (1 ./ x + 1 ./ y);
>> x=[-1:0.05:1];
>> y=x;
>> [xx,yy]=meshdom(x,y);
z=lente(xx,yy);
atgz=atan(z);
mesh(atgz,[60 60])
title(Funci
on lente. f= 1/(1/x + 1/y))
Funcin de dos variables
1.5
0.5
0.5
1.5
2
0
10
20
0
30 10
20
40 30
40
50 50
1.8.2 Programaci
on
Para evitar teclear repetidamente las mismas funciones, Matlab permite crear un fichero
con una lista de comandos que luego, al ser llamado, interpreta secuencialmente. Dispone,
como otros lenguajes de programacion, de las estructuras if-then-else, while y for. El
archivo en el que se escriben las ordenes de Matlab (programa) ha de tener la extension
.m y se puede escribir con cualquier editor de texto.
Para ejecutar el programa, simplemente ponemos su nombre
>> nombre-fichero
el mismo nombre que hayamos puesto antes (pero sin .m). En un fichero-m podemos colo-
car simplemente una lista de instrucciones de Matlab con lo que al llamarlo se ejecutaran
secuencialmente.
Matlab tiene un lenguaje de programacion propio, de tipo interprete. Es decir, es
capaz de interpretar una lista de instrucciones contenidas en un fichero-m. Igual que
1.8. FICHEROS-M 17
Estructura if-then-else
La sintaxis de la estructura if-then-else es
if condicion1
orden1a
orden2a
...
...
elseif condicion2
orden1b
orden2b
...
...
else
orden n
end
en donde orden1*, orden2*, . . . , son ordenes y condici on2, . . . , estamentos
on1, condici
condicionales o booleanos de Matlab. Puede observarse que no se pone la palabra then.
Veamos un ejemplo.
if i==j
A(i,j) = 2;
elseif abs(i-j) == 1
A(i,j) = -1;
else
A(i,j) = 0;
end
Estructura for
La sintaxis de la estructura for es
for variable=expression
orden1a
orden2a
...
...
end
en donde orden1*, orden2*, . . . , son ordenes de Matlab. Por ejemplo,
A = zeros(3,4)
for i=[1:4]
for j=[1:4]
A(i,j) = i+j;
18 CAPITULO 1. LOS PRIMEROS PASOS EN MATLAB
end
end
Estructura while
La sintaxis de la estructura while es
while condici
on
orden1a
orden2a
...
...
end
n = 0; eps=1;
while 1+eps > 1
eps = eps/2;
n = n+1;
end
Captulo 2
Simulink
2.1 Inicio
Un diagrama de bloques es un modelo grafico que representa el modelo matematico de
un determinado sistema dinamico. Simulink es una librera (toolbox ) de Matlab que
permite representar el diagrama de bloques de un sistema y a continuacion proceder a su
simulacion.
El programa se inicia escribiendo simulink en la pantalla de comandos de Matlab o
tambien pulsando con el raton en el icono coloreado de Simulink que aparece en la ventana
de comandos de Matlab. Con ello se abre una ventana titulada Simulink Library Browser
que contiene la librera Simulink y otras que son, digamos, complementarias. Al pulsar
sobre el signo + que precede a su nombre, aparece una nueva lista y entonces en la
pantalla veremos:
Simulink
Countinous
Discrete
Math Operations
Signal Routing
Sinks
Sources
..
.
+ Stateflow
..
.
Los elementos de la lista de Simulink son los esenciales para construir diagramas de
bloques. El resto son libreras adicionales especializadas areas especficas de control, en
formas avanzadas de simulacion, etc.
19
20 CAPITULO 2. SIMULINK
2.2 Creaci
on y simulaci
on de un modelo
Para aprender a manejar Simulink comenzaremos realizando el modelo de un sistema de
control simple.
Dado el diagrama de bloques de un sistema de control,
U (s) Y (s)
+ K G(s)
-
H(s)
en donde
s+1 2s + 1
K = 5, G(s) = 2
, H(s) =
s +4 s+1
y suponiendo que la entrada es una funcion de tipo escalon unitario, queremos realizar la
simulacion del mismo con Simulink.
La construccion del modelo es muy sencilla. En primer lugar hemos de abrir una
ventana para hacer el dibujo. Esto se hace picando con el raton en primer el icono de la
izquierda (hoja en blanco) de la ventana de Simulink o tambien seleccionando con el raton
File New Model, en la misma. A continuacion iremos colocando en esta ventana
los bloques del diagrama, para lo cual hemos de buscarlos en las libreras de Simulink.
Veamos donde se encuentran en este caso.
Para los bloques G(s) y H(s), funciones de transferencia, utilizaremos el elemento
Transfer Fcn que se encuentra en la librera Continuous de Simulink. Una vez encon-
trado el bloque, lo arrastramos con el raton a la ventana de dibujo. Como necesitamos dos
elementos, repetiremos la misma accion de nuevo. Tambien es posible efectuar una copia
del elemento, sin salir de la pantalla de dibujo, sin mas que arrastrar dicho elemento man-
teniendo pulsado el boton derecho del raton. Una vez que hemos colocado los dos bloques,
procederemos a ponerles sus datos. Para introducir los datos de G(s) repicaremos con el
raton en uno de los iconos Transfer Fcn. Veremos entonces que se abre una ventana,
y en ella pondremos, en formato numerico, los datos correspondientes a los polinomios
numerador y denominador de G(s), es decir los vectores [1, 1] y [1, 0, 4] correspondientes,
respectivamente, a dichos polinomios. Del mismo modo, lo que haremos para poner los
datos de H(s) es repicar en su icono e introducir los vectores [2, 1] y [1, 1] en la ventana
que se abra.
Para el bloque con funcion de transferencia K constante se podra usar tambien el
bloque Transfer Fcn si bien parece mas apropiado el bloque Gain que se encuentra en
la librera Math Operations de Simulink. Elegido este, lo arrastraremos con el raton a
la pantalla del dibujo y, tras un repique en el mismo, pondremos un 5 como valor de la
ganancia.
El bloque adecuado para poner el punto de suma es Sum y se encuentra en la librera
Math Operations. La ventana que se abre al repicar en el permite poner dos o mas
signos + o y cambiar la orientacion de las flechas de entrada y salida segun que la barra
vertical este en la posicion izquierda, derecha, o entre los signos + y .
Para realizar la simulacion hemos de poner como entrada una funcion de tipo es-
calon. Esto lo hacemos escogiendo el bloque Step de la librera Sources de Simulink. Lo
Y SIMULACION
2.2. CREACION DE UN MODELO 21
s+1
5
s2+4
Step Sum Gain Transfer Fcn Scope
2s+1
s+1
Transfer Fcn
A veces puede ser conveniente invertir la orientacion de alg un bloque para mejorar el
aspecto de su conexion. Esto ocurre en este caso con el bloque H(s) en el que las flechas
van hacia atras. El cambio orientacion de un bloque se realiza picando en el mismo
con el boton derecho del raton y a continuacion, con el boton izquierdo, en Format
Flip block. De modo similar son tambien posibles otras operaciones, como por ejemplo
ocultar el nombre de un bloque.
Los bloques pueden tener otras opciones que no describimos aqu pero que el usuario
puede ver con facilidad con la ayuda de Matlab, accesible mediante el boton derecho del
raton para cada bloque.
Una vez que el modelo ha sido completado, podemos proceder a la simulacion. En la
ventana del dibujo de Simulink, seleccionamos con el raton en Simulation Simulation
parameters. Esto nos permitira escoger los instantes de tiempo inicial y final, el algoritmo
y su paso, fijo o variable, as como algunos otros parametros relacionados con la simulacion.
Aparte los tiempos, que pueden variar mucho seg un la simulacion de que se trate, los
otros valores que Matlab pone por defecto suelen resultar adecuados muchas veces. Como
resultado de la simulacion aparecera en el bloque Scope la grafica de la respuesta temporal.
Respuesta temporal
0.7
0.6
0.5
0.4
y(t)
0.3
0.2
0.1
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
t
22 CAPITULO 2. SIMULINK
2.3 Stateflow
Stateflow es una librera (toolbox ) de Matlab que permite modelar sistemas de eventos
discretos dentro de Simulink, utilizando cartas de estado (statecharts). Las cartas de
estado fueron introducidas por David Harel (Harel, 1987) y son una generalizacion de las
maquinas de estados.
La librera de Stateflow posee un u nico elemento o bloque, denominado Chart, que
sirve para representar un sistema de eventos discretos. El bloque Chart se puede conectar
con otros bloques de Simulink, de tiempo continuo o discreto, para formar modelos de
sistemas hbridos que pueden ser muy u tiles en la investigacion del comportamiento de
tales sistemas mediante simulacion.
Una carta de estados (statechart) es un grafico formado por elementos graficos sobre
los que van escritos ciertos elementos de texto escritos en un lenguaje especial. Entre
ellos, hay unos elementos de texto especiales que son los datos y los eventos. La carta
es como la hoja de papel en la que se representan los elementos. Cada carta representa
un sistema de eventos discretos y constituye un bloque de Simulink que puede conectarse
con otras cartas o con otros bloques de Simulink.
2.3.1 Elementos gr
aficos
Los elementos graficos de son
Estados
Transiciones
Uniones
Datos
Eventos
Estados
Los estados tienen forma de rectangulo con los bordes redondeados y representan estados
(a veces llamados modos o fases) del sistema de eventos discretos. No debemos confundir
estos estados con los estados del clasico modelo de estado de un sistema de control. Los
estados aqu considerados representan los modos o formas de evolucion del sistema al
reaccionar frente a los eventos.
Junto a la esquina superior izquierda, cada rectangulo lleva un texto con un nombre
que identifica al estado. Tras el nombre del estado y el separador opcional /, pueden
aparecer otros textos indicando las acciones que llevara a cabo el sistema cuando este en
ese estado. La sintaxis de Stateflow permite especificar el instante en que se iniciara la
accion y la duracion de esta:
during: la accion se inicia al entrar en este estado y permanece activa durante el tiempo
que dura el estado.
on event e : La accion se inicia si, estando en este estado, se produce el evento e.
Posibles acciones son cambiar el valore de una salida o efectuar una llamada a una funcion
de Matlab.
S1
S2
Transiciones
Las transiciones tienen forma de flecha y representan las transiciones o saltos entre estados,
asociados a eventos, que se producen en el sistema de eventos discretos. Cada transicion
representa un evento e del sistema y se dibuja como una flecha que va desde el borde de
un estado S1 hasta el borde de otro estado S2 . Si el sistema esta en el estado S1 y se
produce el evento e, entonces el sistema pasa al estado S2 . El disparo de una transicion
puede implicar la ejecucion de una o mas acciones.
Una transicion especial es la llamada transicion por defecto (default-transition), que
sirve para se
nalar el estado inicial del sistema es decir, el primer estado en el que entrara el
sistema al iniciar su evolucion, y tambien el estado hijo inicial dentro de un estado padre.
Se reconoce por su forma ya que en el extremo opuesto a la flecha lleva un peque no crculo
negro.
Cada transicion puede tener un texto escrito junto a ella que indica el evento que ha de
producirse para que se dispare la transicion as como las acciones que entonces el sistema
emprendera. Este texto se divide en tres partes, todas ellas opcionales:
e (en donde e es el nombre de un evento): la transicion se dispara al producirse el evento
e en el sistema. Si no hay nombre de evento entonces la transicion se disparara ante
cualquier evento del sistema.
24 CAPITULO 2. SIMULINK
{a} (en donde a es una accion): al producirse transicion el sistema lleva a cabo la accion
a.
Si la transicion no lleva ning
un texto, entonces se disparara automaticamente, siempre y
cuando se produzca un evento cualquiera en el sistema.
Uniones
Las uniones tienen forma de peque no crculo. Hay dos tipos de uniones: uniones conectivas
(connective junctions) y uniones de historia history junctions.
Las uniones conectivas son puntos de bifurcacion de la carta de estados y representan
puntos de decision del sistema de eventos discretos. Permiten conectar una transicion de
entrada con varias transiciones de salida. Su empleo puede a veces simplificar la carta de
estados y hacer que el codigo generado sea mas eficiente.
e1
e2 P
H
e3 C1 C2
Al entrar en una union conectiva, el sistema, a traves de una condicion, selecciona una
de las transiciones de salida para su evolucion.
Las uniones de tipo historia se utilizan en estados que han sido divididos por una
descomposicion OR. Si en el estado padre se pone el smbolo
H entonces cada vez que
se active el estado padre, el primer estado que se activara sera el estado hijo que estuvo
activo por ultima vez.
Salida de Simulink
Local
Constante
Temporal
Workspace
Los datos declarados como entrada o salida de Simulink generan automaticamente una
entrada o una salida en el bloque Chart creado por Stateflow en Simulink. Los de los
tipos local, constante y temporal pueden definirse para toda la carta o dentro de un
estado individual. Los datos temporales son solo validos mientras el estado padre se esta
ejecutando y son reinicializados cada vez que este se activa. El tipo workspace es una
construccion especial que permite utilizar el entorno de trabajo (workspace) de Matlab
para compartir datos a traves de toda la simulacion. Los datos por defecto, se almacenan
en memoria en formato double de C pero se puede cambiar a otros formatos. Cada dato
tiene asociado un valor inicial y un intervalo de posibles valores.
Eventos
Estos elementos representan los eventos del sistema. Pueden ser de los tipos:
Entrada de Simulink
Salida de Simulink
Local
Para los eventos que son entradas o salidas de Simulink, Stateflow crea automaticamente
un unico puerto de entradasalida de eventos en el bloque Chart de Simulink, de forma
que todos los eventos entran o salen, formando un vector de eventos, por el mismo puerto.
Cada evento lleva asociado un ndice que refiere la posicion del evento en el vector. La
forma de producir un evento en Simulink para que entre en el bloque Chart es a traves
de cambio brusco (flanco) de alguna se nal. Al declarar el evento en Stateflow, se puede
elegir entre:
Flanco de subida
Flanco de bajada
Flanco indiferente
2.4 Creaci
on de un modelo con StateflowSimulink
Tras arrancar el programa Matlab, creamos un modelo nuevo (new-model ) de Simulink y
colocamos en el mismo, con el raton, el bloque Chart de Stateflow.
Con el editor grafico se pueden crear cartas Stateflow, de modo interactivo, simple-
mente picando con el raton en cada elemento y arrastrandolo a la ventana de dibujo.
Una vez colocados varios estados, podemos crear transiciones picando con el raton en
26 CAPITULO 2. SIMULINK
un estado y arrastrandolo hasta otro estado. Se etiquetan los estados y las transiciones
indicando las acciones que van a ocurrir durante la ejecucion y bajo que condiciones se
haran las transiciones. Finalmente se a nade el historial, uniones, y estados en paralelo
para detallar las operaciones del modelo.
Se pueden utilizar sub-cartas (una carta dentro de otra carta) para dotar de jerarqua
al dise
no. Se permite crear transiciones entre objetos que residen en diferentes sub-cartas
al mismo nivel o a diferentes niveles en la carta superior. Las sub-cartas permiten reducir
una carta complicada a un conjunto de diagramas organizados jerarquicamente. Con ello
se consigue que la carta sea mas facil de entender y de mantener sin cambiar para nada
su semantica.
Los pasos a seguir para una aplicacion completa son:
Ejecutar la simulacion
Generar el codigo
Observaciones
Si la simulacion va a ser larga se puede adoptar un tiempo de simulacion infinito
poniendo el parametro de simulacion Stop time = inf.
2.4.1 Ejemplo
Un sistema de seguridad muy antiguo del ferrocarril son las barreras que se colocan
en los cruces entre la va ferrea y las carreteras o caminos. Como todos sabemos, el
funcionamiento de una de estas barreras como la de la figura 2.3 es muy sencillo: se abre
y se cierra para evitar que los coches choquen con los trenes.
El problema que se plantea es dise nar un sistema de control automatico que sea capaz
de cerrar la barrera cuando se aproxime un tren y de cerrarla cuando el tren haya pasado.
Supondremos en principio que la va ferrea es de un solo sentido.
DE UN MODELO CON STATEFLOWSIMULINK
2.4. CREACION 27
Tren 1 Barrera 2
Fuera Abrir
1
0 s1/e1 s2/e2 e1 e2
Sw1
Dentro Cerrar
1
0
Sw2 Chart
Ejercicios de C
alculo
f : CC
z 7 f (z)
Las funciones de variable compleja f (z) no se pueden representar en 3D. Caben dos
alternativas. La primera consiste en restringir el dominio de la funcion a una lnea en el
plano z, obteniendo otra lnea en el plano f (z). En el siguiente ejemplo, la lnea es el eje
imaginario. (transformacion conforme),
>> z=[-100:.1:100]*j;
>> f=1./(1+z);
>> plot(f);
0.5
0.4
0.3
0.2
0.1
0.1
0.2
0.3
0.4
0.5
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
29
30 CAPITULO 3. EJERCICIOS DE CALCULO
3.0.3 Soluci
on num
erica de ecuaciones
El calculo aproximado de las races de la ecuacion f (x) = 0 en un intervalo [a, b] es
un problema clasico del analisis numerico. Son sin duda conocidos por el lector algunos
algoritmos como el metodo de las tangentes de Newton, el de la horquilla y el de las cuerdas
(o secantes) que lo realizan. Todos ellos realizan iteraciones sucesivas xi f (xi ), i =
1, 2, . . ., a partir de un valor xi supuesto de una raz y hasta conseguir que el valor de
f (xi ) sea menor que un n umero prefijado.
Para resolver este problema con Matlab, disponemos de la funcion fzero. Hay que
pasarle un valor inicial de prueba. Por ejemplo,
>> xz1=fzero(f1,0)
>> xz0=fzero(f1,1)
3.0.4 Integraci
on num
erica
Ahora vamos a integrar numericamente f 1(x) en el intervalo [01] utilizando la funcion
quad (cuadratura) o quad8
>> I=quad(f1,0,1)
>> I=quad8(f1,0,1)
El resultado es el mismo.
3.1 Derivaci
on e integraci
on
El paquete Symbolic Toolbox de Matlab permite realizar las operaciones de derivacion e
integracion simbolicas.
3.1.1 Derivadas
El comando diff() de Matlab permite calcular derivadas, totales y parciales, de una
expresion algebraica, funcion de una o varias variables y parametros, respecto de una de
ellas (o de ellos). Supongamos que nos dan una expresion f (x), por ejemplo el polinomio
f (x) = a3 x3 + a2 x2 + a1 x + a0
df (x)
y deseamos hallar sus derivadas respecto de x. Podemos hallar dx
de dos formas:
E INTEGRACION
3.1. DERIVACION 31
>> syms a0 a1 a2 a3 x
>> f=a3*x^3+a2*x^2+a1*x+a0
f =
a3*x^3+a2*x^2+a1*x+a0
>> fx=diff(f)
fx =
3*a3*x^2+2*a2*x+a ,
ya que Matlab asume por defecto que la variable independiente es x, o bien especificando
la variable respecto a la que queremos derivar,
>> fx=diff(f,x)
fx =
3*a3*x^2+2*a2*x+a1 .
d2 f (x)
La derivada segunda, dx2
, la obtenemos poniendo
>> f2x=diff(f,x,2)
f2x =
6*a3*x+2*a2
y, del mismo modo, las derivadas sucesivas:
>> f3x=diff(f,x,3)
f3x =
6*a3
>> f4x=diff(f,x,4)
f4x =
0
Ahora bien, si lo que queremos es derivar respecto a un parametro, supongamos que a2 ,
escribiremos
>> fa3=diff(f,a3)
fa3 =
x^3
La operacion de derivacion, como otras, se puede extender a vectores y matrices. Si
pedimos la derivada de una matriz A respecto de una variable x, Matlab calcula otra
matriz cuyos elementos son las derivadas de los de la matriz A respecto de x.
>> syms x y
>> A=[1, x*y; x^2+y^2,x/y]
A =
[ 1, x*y]
[ x^2+y^2, x/y]
>> diff(A,y)
ans =
[ 0, x]
[2*y, -x/y^2] .
3.1.2 Integrales
El comando int() de Matlab permite resolver integrales,R tanto indefinidas como definidas.
x
Sea la funcion f (x) = ln(x) . Para hallar la integral f (x)dx, indefinida, basta con poner
>> syms a b x
>> f=log(x)/x
f =
log(x)/x
>> int(f)
ans =
1/2*log(x)^2 .
Rb
y para obtener la expresion de una integral definida, tal como a
f (x)dx, pondremos
>> int(f,a,b)
ans =
1/2*log(b)^2-1/2*log(a)^2
>> syms u v
>> int(sin(u*v)*cos(u*v),v)
ans =
1/2*sin(u*v)^2/u
3.3 Resoluci
on num
erica
Matlab dispone de las funciones ode23 y ode45 para resolver ecuaciones diferenciales.
Para ello hemos de convertir primero (si es posible) la ecuacion diferencial de orden n en
n ecuaciones diferenciales de primer orden (forma normal). Veamos el metodo mediante
el ejemplo del pendulo.
SIMBOLICA
3.4. RESOLUCION 33
f (t) mg sin() ma = 0
f (t) mg sin() ml = 0
f (t) ml + mg sin() f (t) = 0
function x_prima=p
endulo(t,x)
l=1; m=1; g=9.8; % Constantes del p
endulo
if t<1 % Fuerza exterior (pulso u
nico de 1 s)
f=1;
else f=0;
end
x_prima=zeros(2,1); % Ecuaciones de estado
x_prima=[x(2) f-m*g*sin(x(1))/(m*l)];
3.4 Resoluci
on simb
olica
La orden dsolve permite resolver ecuaciones diferenciales escritas en forma simbolica en
Matlab. Esto se hace denotando las derivadas por medio del operador D. Por ejemplo, la
ecuacion diferencial lineal
d2 x dx
a2 2
+ a1 + a0 x = b
dt dt
34 CAPITULO 3. EJERCICIOS DE CALCULO
(2*cos(2^(1/2)*t)+sin(2^(1/2)*t)*2^(1/2))/exp(t)
1.5
0.5
0.5
0 1 2 3 4 5 6 7 8
t
3.4.2 Resoluci
on num
erica
Uno de los metodos mas utilizados para hallar la antitransformada de Laplace de una
b(s)
funcion racional Y (s) = a(s) es expandirla en fracciones simples, de transformada inversa
conocida. Sean p1 , p2 , . . . , pn las races del polinomio a(s), y supongamos que no hay
ninguna repetida. Entonces, la expansion en fracciones simples es de la forma
b(s) r1 r1 rn
Y (s) = = + + ... + + k(s)
a(s) s p1 s p1 s pn
en donde los n umeros (en general complejos) r1 , . . . , rn se llaman residuos de la funcion
Y (s) y k(s) es el cociente de la division de b(s) entre a(s), el cual es cero si Y (s) es propia.
Los polos, los residuos, y el termino k(s) pueden hallarse mediante Matlab. Entonces,
la transformada inversa es inmediata:
y(t) = r1 ep1 t + r2 ep2 t + . . . + rn epn t + L1 [k(s)]
SIMBOLICA
3.4. RESOLUCION 35
f (t)
m
0 x(t) b
m
x(t) + bx(t)
+ kx(t) = f (t)
Si, por ejemplo, f (t) es la funcion escalon unitario, f (t) = u(t), F (s) = 1/s, queda
1
X(s) =
ms3 + bs2 + ks
y(t)
1.2
0.8
0.6
0.4
0.2
0
0 5 10 15
t
Esto mismo se puede hacer de modo a un mas sencillo utilizando la funcion step
(escalon) o la funcion lsim del ToolBox Signals and Systems de Matlab.
3.5 Resoluci
on simb
olica
La librera Symbolic Toolbox de Matlab permite hallar, mediante las ordenes laplace
e ilaplace, las transformadas directa e inversa de Laplace. Dada una funcion f (t),
denotamos por F (s) su transformada de Laplace. Es decir
G1 =
1/(s^2+s+1)
>> Y = symmul(G1,1/s);
>> y = ilaplace(Y);
>> ezplot(y, [0,15]), axis([0, 15, 0, 1.25]), title(y(t))
Con esto, debera aparecer en la pantalla una grafica igual que la de antes.
38 CAPITULO 3. EJERCICIOS DE CALCULO
Captulo 4
n
ucleo de la aplicacion lineal es el conjunto
{z = k1 z1 + k2 z2 + k3 z3 | k1 , k2 , k3 C}.
39
40 CAPITULO 4. EJERCICIOS DE ALGEBRA LINEAL
4.1.1 Aplicaci
on a circuitos el
ectricos
Las leyes basicas de la Teora de Circuitos son la ley de Ohm,
Z =VI
Z1
+
i1
v Z4
- Z2
i3 Z6
i2
Z5
Z3
v = (z1 + z2 + z4 )i1 z2 i2 z4 i3
0 = z4 i1 z5 i2 + (z4 + z5 + z6 )i3 (4.1)
0 = z2 i1 + (z2 + z5 + z3 )i2 z5 i3
o, en forma matricial,
v z1 + z 2 + z 4 z2 z4 i1
0 = z4 z5
z 4 + z 5 + z 6 , i2
0 z2 z2 + z 5 + z 3 z5 i3
es decir
V =ZI
en donde V, I C3 y Z C33 . La solucion del problema consiste en hallar i1 , i2 y i3 .
Resoluci
on num
erica
La solucion numerica consiste en despejar el vector I de intensidades, una vez que se
han dado valores numericos (complejos) a las impedancias z1 , . . . , z6 y al voltaje v. Al
4.1. SISTEMAS DE ECUACIONES LINEALES 41
I = Z 1 V
Para hacer estos calculos con Matlab, escribiremos en un fichero-m los valores dados
al voltaje y a las impedancias. Por ejemplo, podramos poner lo siguiente.
% Ejemplo de circuito
% Datos:
Vef=220; f=50; w=2*pi*f;
R1=1; L1=0.1; C1=100e-6; z1=R1+j*L1*w+1/(i*C1*w)
R2=1; L2=0.03; C2=220e-6; z1=R2+j*L2*w+1/(i*C2*w)
R3=0.25; L3=0.2; C3=100e-6; z1=R3+j*L3*w+1/(i*C3*w)
R4=5; L4=0.1; C4=100e-6; z1=R4+j*L4*w+1/(i*C4*w)
R5=20; L5=0.01; C5=100e-6; z1=R5+j*L5*w+1/(i*C5*w)
R6=25; L6=0.33; C6=100e-6; z1=R6+j*L6*w+1/(i*C6*w)
V = [Vef 0 0]
Z = [ z_1+z_2+z_4 - z_2 - z_4
-z_4 - z_5 z_4+z_5+z_6
-z_2 z_2+z_5+z_3 - z_5 ];
I = inv(Z)*V
Si el fichero en el que hemos escrito los datos tiene por nombre circuito.m, al ejecutarlo
mediante la orden
>> circuito
obtendremos el valor del vector de intensidades,
I =
17.9962 +10.1363i
2.1462 - 3.5405i
-0.4702 - 1.3816i
en amperios. Finalmente, podemos hallar el valor eficaz y el angulo de fase de las mismas.
>> Ief = abs(I)
Ief =
20.6545
4.1402
1.4594
>> fase = angle(I)
Ief =
0.5130
-1.0258
-1.8988
Este problema se puede tambien resolver simbolicamente de dos formas. La primera,
resolviendo el sistema de ecuaciones (4.1), en forma simbolica, mediante el comando solve
y la segunda, por inversion de la matriz Z de impedancias en forma simbolica.
42 CAPITULO 4. EJERCICIOS DE ALGEBRA LINEAL
4.1.2 Aplicaci
on a los Sistemas de Control
El modelo de estado de un sistema de control viene dado por las ecuaciones
x(t)
= A x(t) + B u(t) (4.2)
y(t) = C x(t) + D u(t)
Z t
At
x(t) = e x(0) + eA(t ) B U ( ) d (4.3)
0
y(t) = Cx(t) + Du(t)
>> x0 = [0 0]
Para hallar la solucion numerica hemos de definir un vector t cuyos elementos son los
valores del tiempo en los que queremos a calcular la solucion. Por ejemplo,
>> u = ones(size(t));
>> y = lsim(A,B,C,D,u,t,x0);
y Matlab nos calcula x(t) e y(t) para los valores de t antes definidos. Para representar
graficamente y(t), ponemos
4.1. SISTEMAS DE ECUACIONES LINEALES 43
y(t)
1.5
0.5
0
0 1 2 3 4 5 6 7 8 9 10
4.2 Comandos m
as interesantes
El n
umero de ordenes y programas disponibles en Matlab es muy elevado y por ello no
es posible un listado exhaustivo de todos ellos. En esta seccion se da un resumen, a
modo de lista, de los que consideramos mas importantes para las asignaturas del area de
Automatica y Control.
General
help help facility
demo run demonstrations
who list variables in memory
what list M-files on disk
size row and column dimensions
length vector length
clear clear workspace
computer type of computer
C local abort
exit exit MATLAB
quit same as exit
Special Characters
= assignment statement
[ used to form vectors and matrices
] see [
( arithmetic expression precedence
) see (
. decimal point
... continue statement to next line
, separate subscripts and function arguments
; end rows, suppress printing
% comments
: subscripting, vector generation
! execute operating system command
Special Values
ans answer when expression not assigned
eps floating point precision
pi
i, j 1
inf
NaN Not-a-Number
clock wall clock
date date
flops floating point operation count
nargin number of function input arguments
nargout number of function output arguments
Disk Files
chdir change current directory
delete delete file
diary diary of the session
dir directory of files on disk
load load variables from file
save save variables to file
type list function or file
what show M-files on disk
fprintf write to a file
pack compact memory via save
46 CAPITULO 4. EJERCICIOS DE ALGEBRA LINEAL
Special Matrices
compan companion
diag diagonal
eye identity
gallery esoteric
hadamard Hadamard
hankel Hankel
hilb Hilbert
invhilb inverse Hilbert
linspace linearly spaced vectors
logspace logarithmically spaced vectors
magic magic square
meshdom domain for mesh points
ones constant
pascal Pascal
rand random elements
toeplitz Toeplitz
vander Vandermonde
zeros zero
Matrix Manipulation
rot90 rotation
fliplr flip matrix left-to-right
flipud flip matrix up-to-down
diag diagonal matrices
tril lower triangular part
triu upper triangular part
reshape reshape
. transpose
: convert matrix to single column; A(:)
Control Flow
if conditionally execute statements
elseif used with if
else used with if
end terminate if, for, while
for repeat statements a number of times
while do while
break break out of for and while loops
return return from functions
pause pause until key pressed
Command Window
clc clear command screen
home move cursor home
format set output display format
disp display matrix or text
fprintf print formatted number
echo enable command echoing
Graph Paper
plot linear X-Y plot
loglog loglog X-Y plot
semilogx semi-log X-Y plot
semilogy semi-log X-Y plot
polar polar plot
mesh 3-dimensional mesh surface
contour contour plot
meshdom domain for mesh plots
bar bar charts
stairs stairstep graph
errorbar add error bars
Graph Annotation
title plot title
xlabel x-axis label
ylabel y-axis label
grid draw grid lines
text arbitrarily position text
gtext mouse-positioned text
ginput graphics input
Trigonometric Functions
sin sine
cos cosine
tan tangent
asin arcsine
acos arccosine
atan arctangent
atan2 four quadrant arctangent
sinh hyperbolic sine
cosh hyperbolic cosine
tanh hyperbolic tangent
asinh hyperbolic arcsine
acosh hyperbolic arccosine
atanh hyperbolic arctangent
Special Functions
bessel bessel function
gamma gamma function
rat rational approximation
erf error function
inverf inverse error function
ellipk complete elliptic integral of first kind
ellipj Jacobian elliptic integral
50 CAPITULO 4. EJERCICIOS DE ALGEBRA LINEAL
Matrix Conditioning
cond condition number in 2-norm
norm 1-norm,2-norm,F-norm,-norm
rank rank
rcond condition estimate (reciprocal)
Polynomials
poly characteristic polynomial
roots polynomial rootscompanion matrix method
roots1 polynomial rootsLaguerres method
polyval polynomial evaluation
polyvalm matrix polynomial evaluation
conv multiplication
deconv division
residue partial-fraction expansion
polyfit polynomial curve fitting
Signal Processing
abs complex magnitude
angle phase angle
conv convolution
corrcoef correlation coefficients
cov covariance
deconv deconvolution
fft radix-2 fast Fourier transform
fft2 two-dimensional FFT
ifft inverse fast Fourier transform
ifft2 inverse 2-D FFT
fftshift FFT rearrangement
Numerical Integration
quad numerical function integration
quad8 numerical function integration
52 CAPITULO 4. EJERCICIOS DE ALGEBRA LINEAL
Interpolation
spline cubic spline
table1 1-D table look-up
table2 2-D table look-up
Bibliografa
Harel, D. (1987). Statecharts: a visual formalism for complex systems. Science of Com-
pueter Programing 8, 231274.
53