Contenido principal

care

(No recomendado) Resolver la ecuación algebraica de Riccati de tiempo continuo

care no se recomienda. En su lugar, utilice icare. Para obtener más información, consulte Historial de versiones.

Descripción

[X,L,G] = care(A,B,Q,R,S,E) resuelve la ecuación de Riccati general:

ATXE+ETXA(ETXB+S)R1(BTXE+ST)+Q=0

Junto con la solución X, care devuelve la matriz de ganancia G y un vector L de valores propios de lazo cerrado.

ejemplo

[X,L,G] = care(A,B,Q) calcula la solución única X de la ecuación algebraica de Riccati de tiempo continuo:

ATX+XAXBBTX+Q=0

[X,L,G,report] = care(___) también devuelve un informe de diagnóstico.

La sintaxis no genera ningún mensaje de error cuando X no existe.

[X1,X2,D,L] = care(___,'factor') devuelve una solución factorizada de la ecuación de Riccati.

Ejemplos

contraer todo

Este ejemplo muestra cómo resolver la siguiente ecuación de Riccati:

ATX+XAXBR1BTX+CTC=0

A partir de

A=[3211]B=[01]C=[11]R=3

Defina las matrices y resuelva la ecuación.

a = [-3 2;1 1]
b = [0 ; 1]
c = [1 -1]
r = 3
[x,l,g] = care(a,b,c'*c,r)
x =

    0.5895    1.8216
    1.8216    8.8188


l =

   -1.4370
   -3.5026


g =

    0.6072    2.9396

Puede verificar que esta solución es de hecho estabilizadora comparando los valores propios de a y a-b*g.

[eig(a)   eig(a-b*g)]
ans =
   -3.4495   -3.5026
    1.4495   -1.4370

Por último, tenga en cuenta que la variable l contiene los valores propios de lazo cerrado eig(a-b*g).

Este ejemplo muestra cómo resolver la ecuación de Riccati de tipo de H

ATX+XA+X(γ2B1B1TB2B2T)X+CTC=0

Puede reescribir la ecuación en el formato compatible con care de la siguiente manera:

ATX+XAX[B1,B2]B[γ2I00I]R1[B1TB2T]X+CTC=0

Para cualquier matriz de entrada dada, ahora puede calcular la solución estabilizadora X con

B = [B1 , B2]
m1 = size(B1,2)
m2 = size(B2,2)
R = [-g^2*eye(m1) zeros(m1,m2) ; zeros(m2,m1) eye(m2)]

X = care(A,B,C'*C,R)

Argumentos de entrada

contraer todo

Matrices de entrada, especificadas como matrices. Cuando se omiten R, S y E, la función utiliza los valores predeterminados R = I, S = 0 y E = I.

Argumentos de salida

contraer todo

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

care devuelve [] para X 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-B*G,E)

Ganancia de retroalimentación de estados, devuelta como una matriz.

La ganancia de retroalimentación de estados G se calcula como:

G=R1(BTXE+ST)

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

Informe de diagnóstico, devuelto como escalar con uno de estos valores:

  • -1 cuando los haces hamiltonianos presentan valores propios en el eje imaginario o muy cerca de él (fallo).

  • -2 cuando no existe una solución estabilizadora finita X.

  • La norma de Frobenius del residual relativo si X existe y es finito.

Matrices de solución factorizada, devueltas como matrices. La función devuelve X1, X2 y una matriz de escalado diagonal D de modo que X = D(X1/X2)D.

care devuelve X1, X2 y D como vacías cuando la matriz hamiltoniana asociada presenta valores propios en el eje imaginario.

Limitaciones

El par (A,B) debe ser estabilizable (es decir, todos los modos inestables son controlables). Además, el haz o la matriz hamiltoniana asociada no puede tener valores propios en el eje imaginario. Las condiciones suficientes para que esto se cumpla son detectables con (Q,A) cuando S=0 y R>0, o

[QSSTR]>0

Algoritmos

care implementa los algoritmos descritos en [1]. Funciona con la matriz hamiltoniana cuando R está bien condicionada y E=I; si no es así, utiliza el haz hamiltoniano ampliado y el algoritmo QZ.

Referencias

[1] Arnold, W.F., and A.J. Laub. “Generalized Eigenproblem Algorithms and Software for Algebraic Riccati Equations.” Proceedings of the IEEE 72, no. 12 (1984): 1746–54. https://doi.org/10.1109/PROC.1984.13083.

Historial de versiones

Introducido antes de R2006a

contraer todo

Consulte también