Main Content

care

Solución para la ecuación de Riccati algebraica 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 de Riccati algebraica 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 de Riccati algebraica

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, la matriz hamiltoniana asociada no puede tener valores propios en el eje imaginario. Las condiciones suficientes para retener esto 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 la matriz hamiltoniana ampliada 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

expandir todo

Consulte también