Main Content

idare

Solver implícito de ecuaciones algebraicas de Riccati de tiempo discreto

Descripción

ejemplo

[X,K,L] = idare(A,B,Q,R,S,E) 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 de tiempo discreto.

ATXAETXE(ATXB+S)(BTXB+R)1(ATXB+S)T+Q = 0

La solución estabilizadora X coloca todos los valores propios L dentro del disco unitario.

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] = idare(___) también devuelve una estructura info que contiene información adicional sobre la solución de la ecuación algebraica de Riccati de tiempo discreto.

[___] = idare(___,'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 están mal escalados.

ejemplo

[___] = idare(___,'anti') calcula la solución antiestabilizadora X que coloca todos los valores propios L fuera del disco unitario.

Ejemplos

contraer todo

Para este ejemplo, resuelva la ecuación algebraica de Riccati de tiempo discreto considerando el siguiente conjunto de matrices:

A=[-0.9-30.70.1]B=[11]Q=[1003]R=0.1.

Encuentre la solución estabilizadora usando idare para resolver las matrices anteriores con valores predeterminados para S y E.

A = [-0.9,-0.3;0.7,0.1];
B = [1;1];
Q = [1,0;0,3];
R = 0.1;
[X,K,L,info] = idare(A,B,Q,R,[],[])
X = 2×2

    4.7687    0.9438
    0.9438    3.2369

K = 1×2

   -0.2216   -0.1297

L = 2×1

   -0.4460
   -0.0027

info = struct with fields:
        Sx: [2x1 double]
        Sr: 1
         U: [2x2 double]
         V: [2x2 double]
         W: [-0.0232 0.0428]
    Report: 0

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

Para este ejemplo, resuelva la ecuación algebraica de Riccati de tiempo discreto considerando el siguiente conjunto de matrices:

A=[-0.9-30.70.1]B=[11]Q=[1003]R=0.1.

Encuentre la solución antiestabilizadora usando la opción 'anti' para resolver las matrices anteriores con valores predeterminados para S y E.

A = [-0.9,-0.3;0.7,0.1];
B = [1;1];
Q = [1,0;0,3];
R = 0.1;
[X,K,L] = idare(A,B,Q,R,[],[],'anti')
X = 2×2

   -0.5423    0.4996
    0.4996   -0.5569

K = 1×2

 -118.0177  490.9023

L = 2×1

 -371.4426
   -2.2420

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 y R 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 más información sobre matrices hermíticas, consulte ishermitian.

La matriz E debe ser no singular.

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

  • R = I

  • S = 0

  • E = I

Si las entradas Q y R son de valor escalar, idare 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, idare 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 están mal escalados.

Opción de calcular la solución antiestabilizadora, especificada como 'anti'. Cuando se activa esta opción, idare calcula la solución antiestabilizadora X que coloca todos los valores propios de (A-B*K,E) fuera del disco unitario.

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 de tiempo discreto, devuelta como una matriz.

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

idare devuelve [] para X cuando no existe una solución estabilizadora finita.

idare devuelve [] cuando el haz es singular, es decir, [B;S;R] es deficiente de rango. (desde R2024a)

Ganancia de feedback de estados, devuelta como una matriz.

La ganancia de feedback de estados K se calcula como:

K = (BTXB+R)1(BTXA+ST).

idare devuelve [] para K cuando no existe una solución estabilizadora finita.

idare devuelve [] cuando el haz es singular, es decir, [B;S;R] es deficiente de rango. (desde R2024a)

Valores propios de lazo cerrado, devueltos como una matriz.

Los valores propios de lazo cerrado L se calculan como:

L = eig(ABK,E).

idare devuelve [] para X y K cuando no existe una solución estabilizadora finita. L no está vacía, aunque X y K sean matrices vacías.

idare devuelve L = NaN(n,1) cuando el haz es singular, es decir, [B;S;R] es deficiente de rango. (desde R2024a)

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 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 simpléctico, representado por [L;1./L], tiene valores propios en el círculo unitario.

    • 4: el haz es singular ([B;S;R] es deficiente de rango). (desde R2024a)

Limitaciones

  • (A-zE,B) se debe poder estabilizar, E y R deben ser invertibles, y [B;S;R] debe tener un rango columna completo 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

idare 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.

MzN = [A0BQETSST0R]z[E000AT00BT0]

Los datos se escalan automáticamente para reducir la sensibilidad de los valores propios cerca del círculo unitario 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

expandir todo

Consulte también

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