Main Content

care

Solución para la ecuación algebraica de Riccati de tiempo continuo (no recomendada)

care no se recomienda. En su lugar, utilice la función icare. Para obtener más información, consulte Consideraciones sobre compatibilidad.

Sintaxis

[X,L,G] = care(A,B,Q)
[X,L,G] = care(A,B,Q,R,S,E)
[X,L,G,report] = care(A,B,Q,...)
[X1,X2,D,L] = care(A,B,Q,...,'factor')

Descripción

[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

La función care también devuelve la matriz de ganancia, G=R1BTXE.

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

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

Cuando se omiten, R, S y E se establecen en sus valores predeterminados: R=I, S=0 y E=I. Junto con la solución X, care devuelve la matriz de ganancia G=R1(BTXE+ST) y un vector L de valores propios de lazo cerrado, donde

L=eig(A-B*G,E)

[X,L,G,report] = care(A,B,Q,...) devuelve un diagnóstico report con:

  • -1 cuando la matriz hamiltoniana asociada presenta 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.

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

[X1,X2,D,L] = care(A,B,Q,...,'factor') devuelve dos matrices X1, X2 y una matriz de escalado diagonal D de modo que X = D*(X2/X1)*D.

El vector L contiene los valores propios de lazo cerrado. Todas las salidas están vacías cuando la matriz hamiltoniana asociada presenta valores propios en el eje imaginario.

Ejemplos

Ejemplo 1

Resolver la ecuación algebraica de Riccati

A partir de

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

puede resolver la ecuación de Riccati

ATX+XAXBR1BTX+CTC=0

con

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

Esta operación ofrece la solución

x

x =
    0.5895    1.8216
    1.8216    8.8188

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

l

l =
   -3.5026
   -1.4370

Ejemplo 2

Resolver la ecuación de Riccati de tipo (H) de H infinito

Para resolver la ecuación de Riccati de tipo H

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

reescríbala en el formato care como

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

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)

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., III and A.J. Laub, "Generalized Eigenproblem Algorithms and Software for Algebraic Riccati Equations," Proc. IEEE®, 72 (1984), pp. 1746-1754

Historial de versiones

Introducido antes de R2006a

contraer todo

R2019a: care no se recomienda

A partir de la versión R2019a, utilice el comando icare para resolver ecuaciones de Riccati de tiempo continuo. Este enfoque proporciona mayor precisión y escalado. El cálculo de K es más preciso cuando R está mal condicionado en relación con care. Además, icare incluye una estructura info opcional para recopilar los datos implícitos de la solución para la ecuación de Riccati.

La siguiente tabla muestra algunos usos habituales de care y cómo actualizar el código para utilizar icare en su lugar.

No recomendadoRecomendado

[X,L,G] = care(A,B,Q,R,S,E)

[X,K,L] = icare(A,B,Q,R,S,E,G) calcula la solución estabilizadora X, la ganancia de feedback de estados K y los valores propios de lazo cerrado L de la ecuación algebraica de Riccati de tiempo continuo. Para obtener más información, consulte icare.

[X,L,G,report] = care(A,B,Q,R,S,E)

[X,K,L,info] = icare(A,B,Q,R,S,E,G) calcula la solución estabilizadora X, la ganancia de feedback de estados K y los valores propios de lazo cerrado L de la ecuación algebraica de Riccati de tiempo continuo. La estructura info contiene los datos de la solución implícita. Para obtener más información, consulte icare.

No se tiene planeado eliminar care en este momento.

Consulte también