Está en la página 1de 21

.

SISTEMAS ELECTRÓNICOS Y AUTOMÁTICOS

PRÁCTICA 1.
MODELADO DE SISTEMAS CONTINUOS EN EL ESPACIO DE ESTADOS.

ÍNDICE:

a) Modelado de Sistemas Continuos:


1. Creación de modelos con Matlab.
2. Calculo de la respuesta del sistema con Matlab.
3. Transformación entre modelos de estado.
4. Obtención de la función de transferencia a partir del modelo en variables de estado.
5. Representación de modelos con Simulink. Cálculo de la respuesta.
6. Creación de otros modelos con Simulink.

b) Solución de la Ecuación de Estado:


1. Introducción.
2. Solución de la ecuación de estado para un sistema continuo.
3. Representación gráfica.
Escuela Politécnica Superior de Elche

Ingeniería Industrial

a) MODELADO DE SISTEMAS CONTINUOS

1. CREACIÓN DE MODELOS CON MATLAB.

Matlab posee un toolbox muy potente de control (Control System Toolbox). Este toolbox consta de una
colección de funciones que implementan técnicas de diseño, análisis y modelado de sistemas de
control lineales invariantes en el tiempo (LTI: Linear Time-Invariant). Sus características más
importantes son:
- Los sistemas de control pueden ser modelados como funciones de transferencia o en el
espacio de estados, permitiendo utilizar tanto técnicas clásicas como modernas.
- Permite trabajar con sistemas continuos y con sistemas discretos.
- Se pueden realizar conversiones entre las diferentes representaciones de los sistemas.
- Es posible calcular y representar repuestas en el dominio del tiempo, en el frecuencial, así
como el lugar de las raíces.
- Existen funciones para asignación de polos, control óptimo, ...
- Posee una interface gráfica (LTI Viewer) para el análisis de la respuesta de los sistemas.

Creación del modelo de un sistema continuo en el espacio de estados:


Un sistema de control lineal invariante en el tiempo (LTI) es modelado en Matlab como un objeto. Este
objeto es una estructura de datos que permite manipular el modelo del sistema como si fuera una única
variable de Matlab. Vamos a ver como se define en Matlab un sistema continuo modelado en
representación interna.

El sistema continuo lineal invariante en el tiempo modelado en representación interna como:


r r r
xr& (t ) = Axr (t ) + Bur(t )
y (t ) = Cx (t ) + Du (t )

se define en Matlab de la siguiente manera:

» sys = ss(A,B,C,D)

Por ejemplo, si quisiéramos definir el siguiente sistema en Matlab:

⎡ x&1 (t )⎤ ⎡ 0 1 ⎤ ⎡ x1 (t )⎤ ⎡0⎤
⎢ x& (t )⎥ = ⎢− 2 − 3⎥ ⋅ ⎢ x (t )⎥ + ⎢1⎥ ⋅ u (t )
⎣ 2 ⎦ ⎣ ⎦ ⎣ 2 ⎦ ⎣ ⎦
⎡ x (t )⎤
y (t ) = [6 0]⋅ ⎢ 1 ⎥
⎣ x2 (t )⎦

Los comandos necesarios en Matlab serían:

» A=[0 1;-2 -3];


» B=[0 1]';
» C=[6 0];
» D=0;
» sys=ss(A,B,C,D)
2
Escuela Politécnica Superior de Elche

Ingeniería Industrial

a =
x1 x2
x1 0 1.00000
x2 -2.00000 -3.00000

b =
u1
x1 0
x2 1.00000

c =
x1 x2
y1 6.00000 0

d =
u1
y1 0

Continuous-time system.
»

Con esto se ha creado un objeto llamado sys, correspondiente al sistema anterior. La variable sys
creada es una estructura de datos específica del modelo que permite manipular el sistema como una
única entidad. Si quisiéramos extraer los datos asociados al sistema creado existen dos opciones:

Opción 1: Utilizar la función ssdata:

» [A,B,C,D]=ssdata(sys)

Opción 2: Acceder directamente al miembro de la estructura que nos interese, poniendo el nombre de
la variable, un punto y el nombre del elemento al que queremos acceder, por ejemplo, si hacemos:

» matriz = sys.A

Con este comando hemos creado una variable llamada matriz, que será igual a la matriz A del sistema
sys.

Además de utilizar la representación interna, es posible definir un modelo mediante representación


externa (función de transferencia). Si queremos representar un sistema con función de transferencia:

num(s )
G (s ) =
den(s )

debemos utilizar la función tf, de la siguiente forma:

» g = tf(num,den)

donde num y den son vectores que especifican los coeficientes del numerador y el denominador, en
potencias decrecientes de s. Por ejemplo, si quisiéramos definir el sistema con función de
transferencia:

3
Escuela Politécnica Superior de Elche

Ingeniería Industrial

3s + 5
G (s ) =
s + 2s + 4
2

tendríamos que utilizar el siguiente comando:

» sist = tf([3 5], [1 2 4])

Al ejecutar este comando, se ha creado una variable sist, correspondiente al sistema con esa función
de transferencia.

Conversión de modelos:
Para realizar la conversión de un sistema entre diferentes representaciones se utilizan las mismas
funciones que se usan para crear los modelos. Por ejemplo, para obtener el modelo del sistema en
representación externa a partir de su modelo en representación interna se ejecutaría en Matlab:

» systf=tf(sys)

donde sys es el sistema modelado en representación interna y systf es el sistema modelado en


representación externa.

Para obtener el modelo del sistema en representación interna a partir de su modelo en representación
externa se ejecutaría:

» sys=ss(systf)

donde systf es el sistema modelado en representación externa y sys es el sistema modelado en


representación interna.

2. CÁLCULO DE LA RESPUESTA DEL SISTEMA CON MATLAB.

El toolbox de control de Matlab también permite obtener la representación gráfica de la salida de un


sistema ante diferentes tipos de entradas. A continuación se detallan las funciones que permiten
obtener este resultado:

- Función step. Representa gráficamente la respuesta del sistema ante entrada escalón unitario,
asumiendo que las condiciones iniciales son nulas. Este comando puede ejecutarse de dos
modos:

» step(sys)

En este caso muestra una gráfica con la respuesta del sistema sys, pero no permite observar la
trayectoria de los estados.

» [y,t,x]=step(sys);

En lugar de representarse la respuesta del sistema se obtiene un vector y con la respuesta del
sistema, un vector t con el tiempo usado para la simulación, y una matriz x con la trayectoria de
los estados. Para representar la evolución de las variables de estado tendríamos que ejecutar:

» plot(t,x)
4
Escuela Politécnica Superior de Elche

Ingeniería Industrial

Dicha función nos mostrará la evolución de todas las variables de estado en función del tiempo,
en una misma gráfica. Si quisiéramos representar únicamente una variable, por ejemplo, x1(t),
tendíamos que ejecutar:

» plot(t,x(:,1))

- Función initial. Respuesta del sistema a las condiciones iniciales considerando que la entrada
es nula. Al igual que en el caso anterior, este comando puede ejecutarse de dos maneras. En
primer lugar:

» initial(sys,x0)

Muestra una gráfica con la respuesta del sistema sys a las condiciones iniciales expresadas en
el vector x0. En segundo lugar:

» [y,t,x]= initial(sys,x0);

Obtiene un vector y con la respuesta del sistema a las condiciones iniciales expresadas en el
vector x0, un vector t con el tiempo usado para la simulación, y una matriz x con la trayectoria
de los estados. La representación gráfica se puede llevar a cabo, de nuevo, mediante el
comando plot.

- Función lsim. Respuesta ante una entrada arbitraria. Este comando, al igual que en los casos
anteriores, puede ejecutarse de dos modos:

» lsim(sys,u,t,x0)

En este caso muestra una gráfica con la respuesta del sistema sys, pero no permite observar la
trayectoria de los estados. El vector t indica el tiempo de la señal de entrada, que se expresa
en el vector u. Las condiciones iniciales se expresan en el vector x0. Si se considera
condiciones iniciales nulas, no es necesario incluir este parámetro.

» [y,ts,x]= lsim(sys,u,t,x0);

En este caso en lugar de representarse la respuesta del sistema se obtiene un vector y con la
respuesta del sistema, un vector ts con el tiempo usado para la simulación, y una matriz x con
la trayectoria de los estados. La representación gráfica se puede llevar a cabo, de nuevo,
mediante el comando plot.

El toolbox de control incorpora una interface interactiva que facilita el análisis de la respuesta
de los modelos LTI, denominada LTI Viewer. Para acceder a esta herramienta simplemente
hay que ejecutar en Matlab:

» ltiview

La interface permite obtener la respuesta de cualquier sistema definido ante diferentes señales
de entradas.

5
Escuela Politécnica Superior de Elche

Ingeniería Industrial

Ejercicio 1: Considérese el siguiente sistema continuo definido en representación interna:

⎡ 0 1 0 ⎤ ⎡0 ⎤
r& ⎢
x (t ) = ⎢ 0 0 1 ⎥ ⋅ x (t ) + ⎢⎢0⎥⎥ ⋅ u (t )
⎥ r r

⎢⎣− 50 − 20 − 10⎥⎦ ⎢⎣1⎥⎦


r r
y (t ) = [30 0 0] ⋅ x (t )

Utilizando las funciones oportunas del toolbox de control de Matlab, deben realizarse los siguientes
apartados:

a) Representar el sistema como un objeto LTI (Linear-Time invariant).

b) Obtener en Matlab la respuesta (salida) del sistema continuo, la evolución de las


variables de estado y la trayectoria de los estados, considerando una entrada en
escalón unitario y condiciones iniciales nulas.

c) Obtener en Matlab la respuesta (salida) del sistema continuo, la evolución de las


variables de estado y la trayectoria de los estados, considerando condiciones iniciales
x0 = [2, 5, -1]T y entrada nula.

d) Obtener en Matlab la respuesta (salida) del sistema continuo, la evolución de las


variables de estado y la trayectoria de los estados, considerando condiciones iniciales
x0 = [2, 5, -1]T y entrada escalón unitario.

e) Obtener la respuesta del sistema cuando la entrada es la que se muestra en la figura y


el estado inicial es nulo.
u(t)

0
0 2.5 7.5 10s t

Nota. Para definir los vectores u y t que hay que pasar a la función lsim como
parámetros, consultar la práctica 0 (pag. 17).

f) Obtener la función de transferencia del sistema y obtener la salida de dicha función de


transferencia mediante Matlab cuando la entrada es un escalón unitario. Comprobar
como el resultado es idéntico al obtenido en el apartado b.

6
Escuela Politécnica Superior de Elche

Ingeniería Industrial

3. Transformación entre modelos de estado.

- Función ss2ss. Permite realizar transformaciones lineales de estado.

» sys = ss2ss(sys,T)

La instrucción anterior realiza la transformación z(t) = Tx(t) sobre el vector de estados x(t) del
sistema sys, de forma que la nueva representación del estado es z(t). El sistema resultante es:
r r r r r r
xr& (t ) = A ⋅ xr(t ) + B ⋅ u (t ) z& (t ) = TAT −1 ⋅ z (t ) + TB ⋅ u (t )
Î r r
y (t ) = C ⋅ x (t ) + D ⋅ u (t ) y (t ) = CT −1 ⋅ z (t ) + D ⋅ u (t )

Nota: Esta transformación es diferente de la definición clásica de transformación lineal (que es la


que usamos en clase), en la que la relación entre el estado antiguo x(t) y el nuevo w(t) es:
x(t) = Tw(t), que da lugar al sistema:
r r r r& r r
xr& (t ) = A ⋅ xr(t ) + B ⋅ u (t ) Î r (t ) = T AT
w −1
r ⋅ w(t ) + T B ⋅ u (t )
−1

y (t ) = C ⋅ x (t ) + D ⋅ u (t ) y (t ) = CT ⋅ w(t ) + D ⋅ u (t )

Este hecho se debe tener en cuenta a la hora de usar la función ss2ss. Otra opción consiste en no
usar esta función y calcular las matrices del nuevo modelo An, Bn, Cn y Dn en función de las
antiguas realizando las operaciones en Matlab:

» An = inv(T)*A*T
» Bn = inv(T)*B
» Cn = C*T
» Dn = D

- Función tf2ss. Permite obtener la representación interna del sistema (modelo de estado) a partir de
la función de transferencia de la misma. El comando:

» [A,B,C,D] = tf2ss(num,den)

calcula la representación en el espacio de estados:


r r r
xr& (t ) = A ⋅ xr(t ) + B ⋅ u (t )
y (t ) = C ⋅ x (t ) + D ⋅ u (t )

del sistema:

num(s )
G (s ) =
den(s )

Nota: La función tf2ss realiza una representación en el espacio de estados en variables de fase.
Sin embargo esta representación no coincide exactamente con la que estudiamos en clase. Para
demostrar que la representación obtenida está en forma de variables de fase hay que invertir el
orden de las variables de estado. Sea:
r r r
xr& (t ) = A ⋅ xr(t ) + B ⋅ u (t )
y (t ) = C ⋅ x (t ) + D ⋅ u (t )

7
Escuela Politécnica Superior de Elche

Ingeniería Industrial

el sistema definido en variables de fase. Si se definen nuevas variables de estado de la siguiente


manera:

⎡ x1 (t )⎤ ⎡0 K 0 1⎤ ⎡ w1 (t )⎤
⎢ x (t )⎥ ⎢0 K 1 0⎥⎥ ⎢⎢ w2 (t )⎥⎥
⎢ 2 ⎥=⎢ ⋅
⎢ M ⎥ ⎢M N M M⎥ ⎢ M ⎥
⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎣ xn (t )⎦ ⎣1 K 0 0⎦ ⎣ wn (t )⎦

entonces la nueva ecuación de estado:


r& r r
r (t ) = T AT r ⋅ w(t ) + T B ⋅ u (t )
−1 −1
w
y (t ) = CT ⋅ w(t ) + D ⋅ u (t )

también está en representada en variables de fase. Esta representación es la que utiliza la función
de Matlab tf2ss.

- Función ss2tf. Permite obtener la representación externa (función de transferencia) del sistema a
partir de su modelo de estado. El comando:

» [num,den] = ss2tf(A,B,C,D)

calcula la función de transferencia:

num(s )
G (s ) =
den(s )

del sistema:
r r r
xr& (t ) = A ⋅ xr(t ) + B ⋅ u (t )
y (t ) = C ⋅ x (t ) + D ⋅ u (t )

4. Obtención de la función de transferencia a partir del modelo en variables de estado.

La función de transferencia también se puede obtener mediante la fórmula estudiada en clase:

G (s ) = C ⋅ (sI − A) ⋅ B + D
−1

Por ejemplo, para calcular la función de transferencia del sistema:

⎡ x&1 (t )⎤ ⎡ 0 1 ⎤ ⎡ x1 (t )⎤ ⎡0⎤
⎢ x& (t )⎥ = ⎢− 2 − 3⎥ ⋅ ⎢ x (t )⎥ + ⎢1⎥ ⋅ u (t )
⎣ 2 ⎦ ⎣ ⎦ ⎣ 2 ⎦ ⎣ ⎦

⎡ x (t )⎤
y (t ) = [6 0]⋅ ⎢ 1 ⎥
⎣ x2 (t )⎦

haríamos:
8
Escuela Politécnica Superior de Elche

Ingeniería Industrial

>> A=[0 1;-2 -3];


>> B=[0 1]';
>> C=[6 0];
>> D=0;
>> syms s;
>> G=C*inv(s*eye(2)-A)*B+D

G =

6/(s^2+3*s+2)

Es decir, la función de transferencia obtenida es: G (s ) =


6
.
s + 3s + 2
2

Ejercicio 2: Considérese el siguiente sistema continuo cuya función de transferencia es:

s+2
G (s ) =
s + 4s + 3
2

Utilizando las funciones oportunas de Matlab, deben realizarse los siguientes apartados:
a) Obtener una representación interna del sistema mediante la función tf2ss.
b) Obtener la representación del sistema en el formato de variables de fase, realizando la
transformación adecuada sobre el modelo obtenido en el apartado a, mediante la función
ss2ss.
c) Obtener la representación del sistema en el formato de variables de Jordan. Esta
representación se debe obtener usando la función ss. Los coeficientes de las matrices A,
B, C y D se deben obtener mediante la descomposición en fracciones parciales de la
función de transferencia.
Nota: Para realizar la descomposición en fracciones parciales con Matlab, se puede
utilizar la función residue. Si se quiere realizar la siguiente descomposición:
B (s ) R(1) R(2) R(n )
G (s ) = =K+ + +K+
A(s ) s − P(1) s − P(2) s − P(n )
debe utilizarse el comando:
>>[R,P,K]=residue(B,A)

donde B y A son dos vectores que deben contener los coeficientes del numerador y
denominador de la función de transferencia. La función devuelve dos vectores R y P con
los coeficientes de los numeradores y denominadores de la descomposición y la
constante K.
d) Obtener la respuesta del cada uno de los tres sistemas obtenidos ante entrada escalón
unitario y condiciones iniciales nulas en Matlab. Comprobar como en todos los casos, la
salida es idéntica.
e) Obtener la función de transferencia correspondiente al modelo de estado del apartado c
(variables de Jordan). Comprobar como es idéntica a la función de transferencia dada
por el enunciado.

9
Escuela Politécnica Superior de Elche

Ingeniería Industrial

5. Representación de modelos con Simulink. Cálculo de la respuesta.

Para representar en Simulink un sistema continuo en representación interna (modelo de estado), se


utiliza el bloque State-Space de la librería Linear. Este bloque nos permite simular el comportamiento
del sistema ante diferentes entradas, y visualizar el comportamiento de la salida.

En concreto, si quisiéramos estudiar el comportamiento del sistema:


r r
x& (t ) = A ⋅ xr(t ) + B ⋅ u (t )
y (t ) = C ⋅ x (t ) + D ⋅ u (t )

ante entrada escalón unitario, tendríamos que implementar el siguiente esquema Simulink:

Figura 1. Representación interna de un sistema continuo en Simulink.

La configuración del bloque Step se explica con detalle en la Práctica 0 (pag. 30). En cuanto al bloque
State-Space, la ventana de configuración es:

Figura 2. Parámetros del bloque State-Space.

En esta ventana debemos introducir los valores de las matrices A, B, C y D del sistema, y las
condiciones iniciales x0 (en caso que sean distintas de 0). El valor de estas variables se puede
introducir directamente en esta ventana (como se ha hecho con la matriz A, que en este caso sería una
matriz 2x2 cuyos elementos son todos 1) o bien, si estas variables ya están definidas en Matlab, se
puede pone directamente el nombre de la variable de Matlab (como se ha hecho con las matrices B, C,
D y x0 en el ejemplo).

Una vez hayamos simulado el esquema, al abrir el bloque Scope aparecerá una gráfica con la
evolución de la salida del sistema ante entrada escalón unitario.

Mediante el bloque State-Space, únicamente es posible representar la salida del sistema, pero no
podemos visualizar la evolución de las variables de estado. Si quisiéramos conocer esta evolución,
tendríamos que implementar el esquema completo del sistema en representación interna, que tal y
como se estudió en el tema 1 es:

10
Escuela Politécnica Superior de Elche

Ingeniería Industrial

Figura 3. Representación interna de un sistema continuo.

En este esquema, las matrices del sistema se han definido mediante bloques Matrix Gain, la integral se
ha representado mediante el bloque Integrator, en el cual se deben configurar las condiciones iniciales
de la integral (valor inicial de las variables de estado, x0), y los sumadores se han representado
mediante bloques Sum.

6. Creación de otros modelos con Simulink.

En Simulink existe la posibilidad de crear nuevos bloques a partir de bloques existentes mediante la
creación de subsistemas. Asimismo se pueden asignar a los bloques creados cajas de diálogo en las
que introducir los parámetros que utiliza el subsistema. Con el objetivo de utilizar el esquema
implementado en próximas prácticas se va a crear un subsistema y se le va a asignar una máscara
para introducir los parámetros asociados. En el caso del modelo de estados continuo deben realizarse
los siguientes pasos:

1) Seleccionar los bloques correspondientes al espacio de estados implementado, ver figura 4, y


crear un subsistema (Edit Æ Create Subsystem). La apariencia del subsistema creado debe
ser como la que se muestra en la figura 5.

Figura 4. Área con los bloques a seleccionar para crear el subsistema.

11
Escuela Politécnica Superior de Elche

Ingeniería Industrial

Figura 5. Subsistema correspondiente a la representación interna continua.

2) Crear una máscara para el subsistema. Para ello debe ejecutarse la opción del menú de
Simulink Edit Æ Mask Subsystem, que abre el editor de máscaras. En el editor de máscaras
se especifican los parámetros que utiliza el subsistema, de forma que al pinchar dos veces
sobre el subsistema aparecerá una caja de diálogo que pedirá los valores de dichos
parámetros. Asimismo se define la apariencia del bloque del subsistema creado. La apariencia
final de la caja de diálogo asociada al subsistema creado debe ser similar a la que se muestra
en la figura 6. Los valores que deben introducirse en cada una de las ventanas del editor de
máscaras se muestran en la figura 7.

Figura 6. Caja de diálogo con los parámetros del subsistema creado.

12
Escuela Politécnica Superior de Elche

Ingeniería Industrial

Figura 7. Valores a introducir en cada una de las ventanas del editor de máscaras.

Nota: Una vez que se ha creado la máscara, para modificarla hay que seleccionar la opción del menú
Edit Æ Mask. En el caso de que se quiera acceder al subsistema creado hay que ejecutar Edit Æ Look
Under Mask.

Realizando los dos pasos especificados el modelo en representación interna continua será como el que
se muestra en la figura 8.

Figura 8. Modelo en representación interna continua.

13
Escuela Politécnica Superior de Elche

Ingeniería Industrial

Ejercicio 3: Un tren de laminación está formado por dos grupos de rodillos, el segundo de los cuales
debe girar a una velocidad proporcional a la del primero:

Figura 9. Tren de laminación.

El diagrama de bloques del modelo simplificado de un tren de laminación se muestra en la figura


siguiente:

Figura 10. Diagrama de bloques del tren de laminación.

En el diagrama de bloques:
- ωr es la velocidad de referencia para el primer grupo de rodillos.
- ω1 es la velocidad real de giro del primer grupo de rodillos.
- ω2 es la velocidad real de giro del segundo grupo de rodillos.

Las funciones de transferencia del primer y segundo grupo de rodillos son, respectivamente:

G1 (s ) = G 2 (s ) =
10 80
s +1 (s + 20)(s + 2)
KT1 y KT2 son captadores de velocidad (tacómetros) que generan una señal proporcional a la
velocidad que miden. Asumiremos KT1= KT2=0.5.

La constante K determina la relación entre la velocidad del primer grupo de rodillos y el segundo. Se
considerará K=5.

Se pide:
ω 2 (s )
a) Calcular la función de transferencia global del sistema, G (s ) = . Este cálculo se
ω r (s )
puede hacer a mano, o bien utilizando las funciones series y feedback de Matlab.

b) Realizar la simulación del sistema en Simulink en representación externa, considerando


como entrada un escalón unitario. Obtener la gráfica de la respuesta del sistema. La
función de transferencia global se representa en Simulink mediante el bloque Transfer
fcn.

14
Escuela Politécnica Superior de Elche

Ingeniería Industrial

c) Implementar en Simulink el esquema completo (figura 10) y simular ante entrada escalón
unitario. Representar gráficamente la velocidad de cada bloque de rodillos. Comprobar
como la respuesta es la misma que la obtenida en el apartado b.

d) Modelar el sistema utilizando (i) la representación en variables de fase y (ii) la


representación en variables de Jordan. Simular cada modelo del sistema en Simulink
(esquema figura 1) y comprobar que la respuesta del sistema coincide en los dos casos
con la obtenida cuando se utiliza la representación externa. Considerar que el estado
inicial es nulo.

e) Obtener la función de transferencia del sistema a partir de la representación interna en


variables de Jordan. Comprobar como se obtiene la misma función de transferencia
inicial.

f) Implementar el sistema en representación interna (figura 3) y obtener la evolución de las


variables de estado y de la salida ante entrada escalón unitario (y condiciones iniciales
nulas) utilizando (i) el modelo en variables de fase e (ii) el modelo en variables de
Jordan. Comprobar como en ambos casos la salida sigue siendo la misma que en el
apartado c, pero las variables de estado cambian dependiendo de la representación
elegida.

g) Crear un subsistema, con su correspondiente máscara, para el modelo en


representación interna creado en el apartado anterior. Comprobar el correcto
funcionamiento del subsistema ante entrada escalón unitario.

15
Escuela Politécnica Superior de Elche

Ingeniería Industrial

b) SOLUCIÓN DE LA ECUACIÓN DE ESTADO:

1. INTRODUCCIÓN.

En los anteriores apartados se ha descrito cómo obtener la evolución de la salida y las variables de
estado utilizando Matlab y Simulink. En todos los casos, se ha obtenido una gráfica con dichas
evoluciones, pero no ha sido posible obtener la expresión matemática. En este apartado se estudiarán
diversos métodos para obtener dicha expresión matemática. Estos métodos no serán más que la
implementación en Matlab de las expresiones estudiadas en el tema 2. Antes de estudiar la solución de
la ecuación de estado, veamos algunas funciones avanzadas para análisis matricial en Matlab.

Obtención de los valores propios de una matriz: Para obtener los valores propios de la matriz A (polos
del sistema), utilizaremos la función eig. Por ejemplo:

>> A = [1 -3 -2; -1 1 -1; 2 4 5];


>> eig(A)
ans =
2.0000
2.0000
3.0000

Como se puede observar, la matriz A introducida tiene un polo doble en s=2 y un polo simple en s=3.

Diagonalización de una matriz en cajas de Jordan: Para transformar una matriz a su expresión diagonal
en cajas de Jordan, se utiliza la función Jordan. A continuación se muestra un ejemplo de uso con la
matriz utilizada en el ejemplo anterior. Esta función calcula la matriz diagonalizada en cajas de Jordan
(que se almacena en la variable J en el ejemplo) y la matriz cambio de base correspondiente (matriz T
en el ejemplo).

>> A = [1 -3 -2; -1 1 -1; 2 4 5];


>> [T,J] = jordan(A)
T =
-1 -1 1
0 -1 0
1 2 0
J =
3 0 0
0 2 1
0 0 2

Se observa claramente como aparecen dos bloques de Jordan, correspondientes al polo simple en s=3
y al polo doble en s=2. A continuación se muestra un segundo ejemplo de diagonalización en cajas de
Jordan.

>> A = [2 0 -3;0 -1 0;1 0 -1];


>> [T,J] = jordan(A)

T =
0 0.5000 - 0.8660i 0.5000 + 0.8660i
1 0 0
0 0 - 0.5774i 0 + 0.5774i
16
Escuela Politécnica Superior de Elche

Ingeniería Industrial

J =
-1 0 0
0 0.5000 + 0.8660i 0
0 0 0.5000 - 0.8660i

En este caso, aparece un valor propio real (s = −1) y dos polos complejos conjugados
(s = 0.5 ± 0.866j). Como se puede observar, la función Jordan devuelve la forma de Jordan en el plano
complejo. En clase vimos que cuando tenemos un valor propio complejo s = a ± bj , se puede trabajar
⎡ a b⎤
en el plano real definiendo su caja de Jordan asociada como ⎢ ⎥. Si queremos trabajar de esta
⎣− b a ⎦
forma, debemos usar la siguiente función:

>> [T,J]=cdf2rdf(T,J)
T =
0 0.5000 -0.8660
1.0000 0 0
0 0 -0.5774
J =
-1.0000 0 0
0 0.5000 0.8660
0 -0.8660 0.5000

Cálculo de la exponencial de una matriz: Para calcular la exponencial de una matriz se usa la función
expm. Si quisiéramos calcular la matriz de transición asociada a la siguiente matriz A:

⎡1 2 ⎤
A=⎢ ⎥.
⎣ 4 3⎦

La matriz de transición es:

Φ (t , t 0 ) = e A⋅(t −t0 ) .

Para hacer el cálculo en Matlab, hemos de definir previamente las variables t y t0 como variables
simbólicas (mediante la función syms) y después calcular la exponencial:

>> syms t t0
>> A=[1 2; 4 3];
>> MTransicion = expm(A*(t-t0))

MTransicion =
[2/3*exp(-t+t0)+1/3*exp(5*t-5*t0),1/3*exp(5*t-5*t0)-1/3*exp(-t+t0)]
[2/3*exp(5*t-5*t0)-2/3*exp(-t+t0),1/3*exp(-t+t0)+2/3*exp(5*t-5*t0)]

Por lo tanto, la matriz de transición buscada es:

1 ⎡ 2e − ( t − t 0 ) + e 5 ( t − t 0 ) e 5 (t − t 0 ) − e − ( t − t 0 ) ⎤
Φ (t , t 0 ) = e A⋅(t − t 0 )
= ⋅ ⎢ 5 (t − t ) ⎥.
3 ⎣ 2e 0 − 2e − ( t − t 0 ) e − ( t − t 0 ) + 2e 5 ( t − t 0 ) ⎦
Uno de los métodos que aprendimos en clase para calcular esta matriz de transición es el método de
Jordan, que consistía en diagonalizar la matriz A (con el cambio de base correspondiente), calcular la
exponencial de la matriz diagonalizada y devolver el resultado a la base original. Si seguimos en Matlab
estos pasos:
17
Escuela Politécnica Superior de Elche

Ingeniería Industrial

>> A=[1 2; 4 3];


>> [T,J] = jordan(A);

T =
0.6667 0.3333
-0.6667 0.6667

J =
-1 0
0 5

>> MTransJor = expm(J*(t-t0))

MTransJor =
[ exp(-t+t0), 0]
[ 0, exp(5*t-5*t0)]

>> MTrans = T*MTransJor*inv(T)

MTrans =
[ 2/3*exp(-t+t0)+1/3*exp(5*t-5*t0), 1/3*exp(5*t-5*t0)-1/3*exp(-t+t0)]
[ 2/3*exp(5*t-5*t0)-2/3*exp(-t+t0), 1/3*exp(-t+t0)+2/3*exp(5*t-5*t0)]

Resultado que coincide plenamente con el obtenido anteriormente.

2. SOLUCIÓN DE LA ECUACIÓN DE ESTADO PARA UN SISTEMA CONTINUO.

En clase se han estudiado dos métodos para obtener la solución de la ecuación de estado:

t
r r r r
Modo 1: Aplicando la expresión: x (t ) = xlibre (t ) + x forz (t ) = Φ(t , t 0 ) ⋅ x0 + ∫ Φ (t ,τ ) ⋅ B(τ ) ⋅ u (τ ) dτ .
t0

Según esta expresión, la evolución del estado consta de dos términos: la evolución libre del sistema
(debida a las condiciones iniciales) y la evolución forzada, debida a la presencia de una entrada u(t).
Para calcular una integral, podemos utilizar la función int, cuyo formato es:

resultado = int(funcion, v, a, b)

int calcula la integral de la función funcion respecto a la variable v, entre los límites a y b.

Supongamos que queremos calcular la solución de la siguiente ecuación de estado, ante entrada
⎡1⎤
r ⎢ ⎥
escalón unitario, sabiendo que el estado inicial es x0 = ⎢− 1⎥ en t 0 = 0.
⎢⎣ 2 ⎥⎦
⎡1 0 0⎤ ⎡1⎤
⎢ ⎥
x (t ) = ⎢0 − 2 0 ⎥ ⋅ x (t ) + ⎢⎢ 0 ⎥⎥ ⋅ u (t )
r& r

⎢⎣0 0 − 1⎥⎦ ⎢⎣− 1⎥⎦

Las operaciones a realizar en Matlab serían:

>> syms t t0 tau


>> A=[1 0 0;0 -2 0; 0 0 -1];
18
Escuela Politécnica Superior de Elche

Ingeniería Industrial

>> B=[1; 0; -1];


>> x0=[1; -1; 2];
>> evolLibre = expm(A*t)*x0

evolLibre =
exp(t)
-exp(-2*t)
2*exp(-t)

>> evolForzada=int(expm(A*(t-tau))*B*1, tau, 0, t)

evolForzada =
-1+exp(t)
0
-1+exp(-t)

>> x=evolLibre+evolForzada

x =
2*exp(t)-1
-exp(-2*t)
3*exp(-t)-1

⎡ 2e t − 1 ⎤
r ⎢ ⎥
Por tanto, la solución obtenida es x (t ) = ⎢ − e − 2t ⎥.
⎢3e −t − 1⎥
⎣ ⎦

Modo 2: Otro método para calcular la solución de la ecuación de estado era mediante el uso de la
transformada inversa de Laplace, mediante la expresión:
r r r
x (t ) = xlibre (t ) + x forz (t ) = L -1
[(sI − A) x ]+ L [(sI − A)
−1
0
-1 −1
]
BU (s ) .

Esta expresión, de nuevo está compuesta por dos términos: la evolución libre y la evolución forzada del
sistema. La secuencia de operaciones en Matlab sería:

>> syms t t0 s
>> A=[1 0 0;0 -2 0; 0 0 -1];
>> B=[1; 0; -1];
>> x0=[1; -1; 2];

>> evolLibre = ilaplace(inv(s*eye(3)-A)*x0)


evolLibre =
exp(t)
-exp(-2*t)
2*exp(-t)

>> evolForzada = ilaplace(inv(s*eye(3)-A)*B*(1/s))


evolForzada =
-1+exp(t)
0
-1+exp(-t)

>> x=evolLibre+evolForzada

19
Escuela Politécnica Superior de Elche

Ingeniería Industrial

x =
2*exp(t)-1
-exp(-2*t)
3*exp(-t)-1

El resultado es idéntico al obtenido mediante el método anterior.

En ocasiones, el resultado devuelto no estará simplificado. En estos casos, nos será de utilidad la función
simple, que realiza diversos tipos de simplificación y finalmente devuelve el resultado más corto posible, y la
función pretty, que muestra una expresión simbólica en un formato más intuitivo. Por ejemplo, si x contiene la
expresión simbólica que queremos simplificar y visualizar, ejecutaríamos:

>> simple(x)
>> pretty(x)

3. REPRESENTACIÓN GRÁFICA.

Una vez que hemos obtenido la respuesta del sistema (vector simbólico x, que contiene una expresión
dependiente de t), es posible calcular valores en instantes determinados de esta respuesta, mediante la
función subs. La forma de uso sería:

>> estado = subs(x, t, 5)

Con esta llamada, estamos sustituyendo en la expresión x, la variable t por el valor 5 y el resultado lo
almacenamos en la variable estado. De esta forma, estado será igual a x en t=5 segundos.

Por su parte, si quisiéramos representar gráficamente la expresión obtenida en un intervalo de tiempo


determinado, podríamos hacer uso de la función ezplot. El formato es:

>> ezplot(x, [0, 10])

Con esta llamada, se representaría gráficamente la función x para tiempos entre 0 y 10 segundos.

Ejercicio 4.

Considérese el siguiente sistema continuo definido en representación interna:


r ⎡− 1 0 ⎤ r ⎡1⎤
x& (t ) = ⎢ ⎥ ⋅ x (t ) + ⎢ ⎥ ⋅ u (t )
⎣ 0 − 2⎦ ⎣− 3⎦
r ⎡2⎤
Con x0 = ⎢ ⎥ en t 0 = 0.
⎣ − 4⎦

Se pide calcular la expresión matemática de la evolución del estado, su valor en t=1 y en t=5
segundos y la representación gráfica entre t=0 y t=12 segundos en los siguientes casos:
a) Ante entrada nula.
b) Cuando la entrada es un escalón unitario.
c) Cuando la entrada es u(t) = sin(t).

Todos los apartados del problema se deben resolver utilizando los dos métodos vistos en clase
(mediante la expresión de la integral y mediante la transformada inversa de Laplace).

20
Escuela Politécnica Superior de Elche

Ingeniería Industrial

Ejercicio 5.

Considérese el siguiente sistema continuo definido en representación interna:


r ⎡0 1⎤ r ⎡1⎤
x& (t ) = ⎢ ⎥ ⋅ x (t ) + ⎢ ⎥ ⋅ u (t )
⎣ − 2 − 2⎦ ⎣1⎦
r ⎡2⎤
Con x0 = ⎢ ⎥ en t 0 = 0.
⎣1 ⎦
Se pide:
a) Calcular la matriz de transición del sistema, calculando directamente la exponencial de
la matriz A.
b) Calcular la matriz de transición, diagonalizando primero la matriz A en cajas de Jordan
en el plano complejo y deshaciendo posteriormente el cambio.
c) Calcular la matriz de transición, diagonalizando primero la matriz A en cajas de Jordan
en el dominio real, y deshaciendo posteriormente el cambio.
d) Obtener la salida del sistema ante entrada nula, utilizando el método de la integral.
e) Obtener la salida del sistema ante entrada nula, utilizando la transformada inversa de
Laplace.
f) Obtener la salida del sistema ante entrada escalón unitario, utilizando el método de la
integral.
g) Obtener la salida del sistema ante entrada escalón unitario, utilizando la transformada
inversa de Laplace.

Ejercicio 6.

Considérese el siguiente sistema continuo definido en representación interna:


⎡1 2 2⎤ ⎡2⎤
⎢ ⎥
x (t ) = ⎢0 1 0⎥ ⋅ x (t ) + ⎢⎢ 0 ⎥⎥ ⋅ u (t )
r& r

⎢⎣0 4 3⎥⎦ ⎢⎣− 1⎥⎦


⎡1⎤
r ⎢ ⎥
Con x0 = ⎢− 1⎥ en t 0 = 0.
⎢⎣ 1 ⎥⎦
Se pide:

a) Calcular los polos del sistema y pasar la matriz A a su expresión diagonal en cajas de
Jordan.
b) Calcular la respuesta ante entrada escalón unitario utilizando el método de la integral y
el método de la transformada inversa de Laplace.
⎡1 2 1⎤
c) Repetir el problema si ahora la matriz A toma la siguiente forma: A = ⎢⎢0 1 0⎥⎥.
⎢⎣0 4 3⎥⎦
Comentar las diferencias.

21

También podría gustarte