BE3024 - Sistemas de Control 1 (Biomédica)
2do ciclo, 2024
Lección 13: Sistemas no lineales y linealización
Un último detalle
modelo FitzHugh–Nagumo
Simplificación en 2D del modelo Hodgkin–Huxley que describe cómo se inician y transmiten los potenciales de acción en las neuronas.
modelo FitzHugh–Nagumo
voltaje de membrana
reactivación del canal de sodio y desactivación del canal de potasio
estímulo externo
¿Cuál es el problema con esto?
¿Cuál es el problema con esto?
Es imposible de colocar en la forma estándar sólo con un cambio de variables
¿Cuál es el problema con esto?
Es imposible de colocar en la forma estándar sólo con un cambio de variables
Esto es porque el sistema presenta una forma más general, que corresponde a la de un sistema no lineal.
¿Cuál es el problema con esto?
Es imposible de colocar en la forma estándar sólo con un cambio de variables
Esto es porque el sistema presenta una forma más general, que corresponde a la de un sistema no lineal.
\(\mathbf{f}\) y \(\mathbf{h}\) son campos vectoriales, es decir, las ecuaciones ya no pueden reordenarse en forma de matrices y vectores.
Para el modelo FitzHugh–Nagumo entonces
(por ejemplo)
Para el modelo FitzHugh–Nagumo entonces
(por ejemplo)
para el modelo FitzHugh–Nagumo entonces
(por ejemplo)
% Parámetros del sistema
a = 0.7;
b = 0.8;
tau = 12.5;
R = 0.1;
Iext = 0.5;
% Variables y funciones simbólicas
syms x1 x2 u
f(x1, x2, u) = [ x1 - x1^3/3 - x2 + R*u;
x1/tau - b*x2/tau + a/tau]
h(x1, x2) = x1
para el modelo FitzHugh–Nagumo entonces
(por ejemplo)
% Parámetros del sistema
a = 0.7;
b = 0.8;
tau = 12.5;
R = 0.1;
Iext = 0.5;
% Variables y funciones simbólicas
syms x1 x2 u
f(x1, x2, u) = [ x1 - x1^3/3 - x2 + R*u;
x1/tau - b*x2/tau + a/tau]
h(x1, x2) = x1
¿Qué hacemos con esto?
Debemos transformar el modelo no lineal a un modelo LTI para poder aplicar las técnicas que hemos visto.
para el modelo FitzHugh–Nagumo entonces
(por ejemplo)
% Parámetros del sistema
a = 0.7;
b = 0.8;
tau = 12.5;
R = 0.1;
Iext = 0.5;
% Variables y funciones simbólicas
syms x1 x2 u
f(x1, x2, u) = [ x1 - x1^3/3 - x2 + R*u;
x1/tau - b*x2/tau + a/tau]
h(x1, x2) = x1
¿Qué hacemos con esto?
Debemos transformar el modelo no lineal a un modelo LTI para poder aplicar las técnicas que hemos visto.
\(\Rightarrow\) linealización
Linealización alrededor de puntos de equilibrio
Para obtener un modelo LTI a partir de un sistema no lineal requerimos dos ingredientes:
- Un punto de equilibrio del sistema no lineal.
- Los jacobianos del sistema no lineal.
Puntos de equilibrio
El par \(\left(\mathbf{x}^*,\mathbf{u}^*\right)\) es un punto de equilibrio del sistema no lineal \(\dot{\mathbf{x}}=\mathbf{f}\left(\mathbf{x}, \mathbf{u}\right)\) si se cumple que
es decir, es un punto en donde el sistema no evoluciona.
Puntos de equilibrio
El par \(\left(\mathbf{x}^*,\mathbf{u}^*\right)\) es un punto de equilibrio del sistema no lineal \(\dot{\mathbf{x}}=\mathbf{f}\left(\mathbf{x}, \mathbf{u}\right)\) si se cumple que
es decir, es un punto en donde el sistema no evoluciona.
Estos se encuentran como la solución de un sistema no lineal de ecuaciones algebraicas.
¿Puntos de equilibrio para el modelo FitzHugh–Nagumo?
Resolver esto a mano puede llegar a ser complicado y en algunos casos incluso imposible.
Resolver esto a mano puede llegar a ser complicado y en algunos casos incluso imposible.
¿Qué hacemos entonces? Acudimos a MATLAB.
sol = solve(f(x1, x2, u) == [0; 0], {x1, x2, u})
MATLAB retorna tres posibles soluciones
MATLAB retorna tres posibles soluciones
¿Cuál seleccionamos? La que requiera el contexto del problema.
Supongamos que en este caso nos interesa la primera solución. Entonces:
x1eq = double(sol.x1(1))
x2eq = double(sol.x2(1))
ueq = double(sol.u(1))
Supongamos que en este caso nos interesa la primera solución. Entonces:
x1eq = double(sol.x1(1))
x2eq = double(sol.x2(1))
ueq = double(sol.u(1))
Jacobianos
El sistema no lineal
tiene asociados tres jacobianos
Cada jacobiano es una matriz que puede ser complicada de calcular a mano, por lo que de nuevo acudimos a MATLAB.
Dfx(x1, x2, u) = jacobian(f, [x1, x2])
Dfu(x1, x2, u) = jacobian(f, u)
Dhx(x1, x2) = jacobian(h, [x1, x2])
Nótese que los jacobianos aún son funciones de las variables de estado y las entradas.
Linealización local
Ya con el punto de equilibrio y los jacobianos finalmente puede obtenerse el modelo LTI como:
Linealización local
bajo el cambio de variables:
Linealización local
bajo el cambio de variables:
desviación inicial con respecto del punto de equilibrio
Linealización local
bajo el cambio de variables
desviación inicial con respecto del punto de equilibrio
El modelo LTI resultante se conoce como la linealización local del sistema no lineal alrededor del punto de equilibrio.
Con esto, puede encontrarse la linealización del modelo FitzHugh–Nagumo alrededor del primer punto de equilibrio como:
A = double( Dfx(x1eq, x2eq, ueq) )
B = double( Dfu(x1eq, x2eq, ueq) )
C = double( Dhx(x1eq, x2eq) )
% Sistema linealizado
sys_lin = ss(A, B, C, [])
con esto entonces puede encontrarse la linealización del modelo FitzHugh–Nagumo alrededor del primer punto de equilibrio como
A = double( Dfx(x1eq, x2eq, ueq) )
B = double( Dfu(x1eq, x2eq, ueq) )
C = double( Dhx(x1eq, x2eq) )
% Sistema linealizado
sys_lin = ss(A, B, C, [])
OJO: este modelo LTI está definido sobre las nuevas variables \(\mathbf{z},\mathbf{v}, \mathbf{w}\), por lo que debe emplearse el cambio de variables para ir hacia y regresar desde las variables originales \(\mathbf{x},\mathbf{u}, \mathbf{y}\) según se requiera.
Por ejemplo, supongamos que se empleó el sistema linealizado junto con LQR para diseñar un controlador (sólo para estabilizar) y se obtuvo:
Entonces, el control está dado en las nuevas variables:
Para poder implementar el controlador en el sistema original debe emplearse el cambio de variables:
Puede seguirse una lógica similar para la implementación e interpretación de observadores de estado.
puede seguirse una lógica similar para la implementación e interpretación de observadores de estado
IMPORTANTE: Simulink se encarga de todos estos detalles al emplear su herramienta de Model Linearizer. El modelo que retorna está dado en las nuevas variables y puede encontrarse el punto de equilibrio empleado dentro del objeto que contiene el modelo.
para encontrar puntos de equilibrio
BE3024 - Lecture 13 (2024)
By Miguel Enrique Zea Arenales
BE3024 - Lecture 13 (2024)
- 124