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
La función care
también devuelve la matriz de ganancia, .
[X,L,G] = care(A,B,Q,R,S,E)
resuelve la ecuación de Riccati más general
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 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 finitaX
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
puede resolver la ecuación de Riccati
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 () de H infinito
Para resolver la ecuación de Riccati de tipo
reescríbala en el formato care
como
Ahora puede calcular la solución estabilizadora 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 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 cuando y , o
Algoritmos
care
implementa los algoritmos descritos en [1]. Funciona con la matriz hamiltoniana cuando R está bien condicionada y ; 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