Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

icare

Solver implícito de ecuaciones algebraicas de Riccati en tiempo continuo

Descripción

ejemplo

[X,K,L] = icare(A,B,Q,R,S,E,G) calcula la solución estabilizadora única X, la ganancia de feedback de estados K y los valores propios de lazo cerrado L de la siguiente ecuación algebraica de Riccati en tiempo continuo.

ATXE+ETXA+ETXGXE-(ETXB+S)R-1(BTXE+ST)+Q = 0

La solución estabilizadora X coloca todos los valores propios L en el semiplano izquierdo.

Las ecuaciones algebraicas de Riccati desempeñan un papel clave en el control LQR/LQG, el control H2- y H infinito, el filtrado de Kalman y las factorizaciones espectrales o coprimas.

ejemplo

[X,K,L,info] = icare(___) también devuelve una estructura info que contiene información adicional sobre la solución de la ecuación algebraica de Riccati en tiempo continuo.

[___] = icare(___,'noscaling') desactiva el escalado integrado y establece todas las entradas de los vectores de escalado info.Sx e info.Sr en 1. Desactivar el escalado acelera el cálculo, pero puede perjudicar la precisión cuando A,B,Q,R,S,E,G están mal escalados.

ejemplo

[___] = icare(___,'anti') calcula la solución antiestabilizadora X, que coloca todos los valores propios L en el semiplano derecho.

Ejemplos

contraer todo

Para resolver la ecuación algebraica de Riccati ATX+XA-XBBTX+CCT=0, considere las siguientes matrices:

A=[1-23-456789]B=[56-7]C=[7-89].

El enfoque más simple consiste en usar G=-BBT y Q=CTC y, a continuación, encontrar la solución con icare.

A = [-1,2,3;4,5,-6;7,-8,9];
B = [5;6;-7];
C = [7,-8,9];
G = -B*B';
Q = C'*C;
[X1,K1,L1] = icare(A,[],Q,[],[],[],G)
X1 = 3×3

   15.3201    4.2369   17.0090
    4.2369    2.6252    4.4123
   17.0090    4.4123   19.0374

K1 =

  0x3 empty double matrix
L1 = 3×1

   -3.2139
  -10.1191
  -76.9693

El enfoque anterior puede dar lugar a imprecisiones numéricas cuando las matrices B y C tienen entradas de gran tamaño, ya que se elevan al cuadrado para calcular las matrices G y Q. Debido al carácter limitado del rango numérico, el cálculo puede ser menos preciso o incluso fallar. Por ejemplo, si norm(B) es 1e6, norm(G) será 1e12, y cualquier valor propio dentro de 1e-4 del eje imaginario puede diagnosticarse como 'imaginario' debido a errores numéricos.

Para una mayor precisión numérica, reescriba la ecuación algebraica de Riccati de la siguiente manera:

ATX+XA[XB,CT]*[I,0;0,-I][BTX;C]=0.

La ecuación anterior es la forma estándar de ATX+XA-(XB+S)R-1(BTX+ST)=0,

donde B=[B,0], S=[0,CT],and R=[I,0;0,-I].

Calcule la solución usando icare con los valores anteriores.

n = size(A,1);
m = size(B,2);
p = size(C,1);
R = blkdiag(eye(m),-eye(p));
BB = [B,zeros(n,p)];
S = [zeros(n,m),C'];
[X2,K2,L2,info] = icare(A,BB,0,R,S,[],[])
X2 = 3×3

   15.3201    4.2369   17.0090
    4.2369    2.6252    4.4123
   17.0090    4.4123   19.0374

K2 = 2×3

  -17.0406    6.0501  -21.7435
   -7.0000    8.0000   -9.0000

L2 = 3×1

   -3.2139
  -10.1191
  -76.9693

info = struct with fields:
        Sx: [3x1 double]
        Sr: [2x1 double]
         U: [3x3 double]
         V: [3x3 double]
         W: [2x3 double]
    Report: 0

En este caso, X2 es la solución estabilizadora única, K2 contiene la ganancia de feedback de estados y L2 contiene los valores propios de lazo cerrado.

Para averiguar la solución antiestabilizadora de la ecuación algebraica de Riccati en tiempo continuo ATX+XA-XBBTX+CCT=0, considere las siguientes matrices:

A=[1-23-456789]B=[56-7]C=[7-89].

Para una mayor precisión numérica, reescriba la ecuación algebraica de Riccati de la siguiente manera:

ATX+XA[XB,CT]*[I,0;0,-I][BTX;C]=0.

La ecuación anterior es la forma estándar de ATX+XA-(XB+S)R-1(BTX+ST)=0,

donde B=[B,0], S=[0,CT],and R=[I,0;0,-I].

Calcule la solución antiestabilizadora con la opción 'anti'.

A = [-1,2,3;4,5,-6;7,-8,9];
B = [5;6;-7];
C = [7,-8,9];
n = size(A,1);
m = size(B,2);
p = size(C,1);
R = blkdiag(eye(m),-eye(p));
BB = [B,zeros(n,p)];
S = [zeros(n,m),C'];
[X,K,L] = icare(A,BB,0,R,S,[],[],'anti')
X = 3×3

  -18.0978   10.9090   -1.8466
   10.9090   -6.7195    1.4354
   -1.8466    1.4354   -0.9426

K = 2×3

  -12.1085    4.1803    5.9774
   -7.0000    8.0000   -9.0000

L = 3×1

   76.9693
   10.1191
    3.2139

En este caso, X es la solución antiestabilizadora única, K contiene la ganancia de feedback de estados y L contiene los valores propios de lazo cerrado.

Argumentos de entrada

contraer todo

Matrices de entrada, especificadas como matrices.

Las matrices Q, R y G deben ser hermíticas. Una matriz cuadrada es hermítica si es igual a su traspuesta conjugada compleja, es decir, ai,j=a¯j,i.

Para obtener más información sobre matrices hermíticas, consulte ishermitian.

Las matrices R y E deben ser invertibles.

Cuando las matrices B, R, S, E y G se omiten o se establecen en [], icare utiliza los siguientes valores predeterminados:

  • B = 0

  • R = I

  • S = 0

  • E = I

  • G = 0

Si las entradas Q, R y G son de valor escalar, icare las interpreta como múltiplos de la matriz de identidad.

Opción de desactivar el escalado integrado, especificada como 'noscaling'. Cuando se desactiva el escalado integrado, icare establece todas las entradas de los vectores de escalado info.Sx e info.Sr en 1. Desactivar el escalado acelera el cálculo, pero puede perjudicar la precisión cuando A,B,Q,R,S,E,G están mal escalados.

Opción de calcular la solución antiestabilizadora, especificada como 'anti'. Cuando se activa esta opción, icare calcula la solución antiestabilizadora X que coloca todos los valores propios de (A+G*X*E-B*K,E) en el semiplano derecho.

Tanto la solución estabilizadora única como la solución antiestabilizadora son necesarias para conocer el retrato de fase completo de las ecuaciones diferenciales de Riccati.

Argumentos de salida

contraer todo

Solución única de la ecuación algebraica de Riccati en tiempo continuo, devuelta como una matriz.

De forma predeterminada, X es la solución estabilizadora de la ecuación algebraica de Riccati en tiempo continuo. Cuando se usa la opción 'anti', X es la solución antiestabilizadora.

icare devuelve [] para X cuando la matriz hamiltoniana asociada presenta valores propios en el eje imaginario.

Ganancia de feedback de estados, devuelta como una matriz.

La ganancia de feedback de estados K se calcula como:

K = R1(BTXE+ST).

icare devuelve [] para K cuando la matriz hamiltoniana asociada presenta valores propios en el eje imaginario.

Valores propios de lazo cerrado, devueltos como una matriz.

Los valores propios de lazo cerrado L se calculan como:

L = eig(A+GXEBK,E).

icare devuelve [] para X y K cuando la matriz hamiltoniana asociada presenta valores propios en el eje imaginario. Dicho de otra forma, L no está vacía cuando X y K son matrices vacías.

Información sobre la solución única, devuelta como una estructura con los siguientes campos:

  • Sx: vector de valores utilizados para escalar los estados.

  • Sr: vector de valores utilizados para escalar la matriz R.

  • U, V y W: vectores de valores que representan la base del subespacio invariante estable del haz matricial escalado asociado. Para obtener más información, consulte Algoritmos.

  • Report: escalar con uno de los siguientes valores:

    • 0: la solución única es precisa.

    • 1: la solución tiene poca precisión.

    • 2: la solución no es finita.

    • 3: no se ha encontrado la solución, ya que el espectro hamiltoniano, representado por [L;-L], tiene valores propios en el eje imaginario.

Limitaciones

  • (A-sE,B) se debe poder estabilizar, y E y R deben ser invertibles para que exista una solución estabilizadora finita X y sea finita. Aunque estas condiciones no son suficientes en general, se vuelven suficientes cuando se cumplen las siguientes condiciones:

    • [QSTSR]  0

    • [ABR1STQSR1ST] es detectable

Algoritmos

Base del subespacio invariante

icare funciona con el siguiente haz y calcula una base [U;V;W] del subespacio invariante asociado con los valores propios finitos estables o antiestables de este haz.

MsN = [AGBQATSSTBTR]s[E000ET0000]

Los datos se escalan automáticamente para reducir la sensibilidad de los valores propios cerca del eje imaginario y aumentar la separación entre los subespacios invariantes estables y antiestables.

Relación entre la solución, la ganancia de feedback de estados y los vectores de escalado

La solución X y la ganancia de feedback de estados K están relacionadas con los vectores de escalado, y U,V,W mediante el siguiente conjunto de ecuaciones:

X = Dx VU1 Dx E1,K = Dr WU1 Dx,

donde,

Dx = diag(Sx),Dr = diag(Sr).

Historial de versiones

Introducido en R2019a

Consulte también

| | | | | | (Robust Control Toolbox) | (Robust Control Toolbox) | | (Robust Control Toolbox) | (Robust Control Toolbox)