主要内容

care

(不推荐)求解连续时间代数黎卡提方程

不推荐使用 care请改用 icare。有关详细信息,请参阅版本历史记录

说明

[X,L,G] = care(A,B,Q,R,S,E) 求解一般黎卡提方程:

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

除了给出解 X 之外,care 还返回增益矩阵 G 和闭环特征值向量 L

示例

[X,L,G] = care(A,B,Q) 计算连续时间代数黎卡提方程的唯一解 X

ATX+XAXBBTX+Q=0

[X,L,G,report] = care(___) 还返回诊断报告。

X 不存在时,此语法不会发出任何错误消息。

[X1,X2,D,L] = care(___,'factor') 返回黎卡提方程的因式分解解。

示例

全部折叠

此示例说明如何求解以下黎卡提方程:

ATX+XAXBR1BTX+CTC=0

给定

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

定义矩阵并求解方程。

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

您可以通过比较 aa-b*g 的特征值来验证此解是否确实是稳定的。

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

最后,请注意变量 l 包含闭环特征值 eig(a-b*g)

此示例说明如何求解类 H 黎卡提方程

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

您可以采用 care 支持的格式改写该方程,如下所示:

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

对于任何给定的输入矩阵,您现在可以通过以下定义计算稳定解 X

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)

输入参数

全部折叠

输入矩阵,指定为矩阵。当您省略 RSE 时,该函数使用默认值 R = IS = 0E = I

输出参量

全部折叠

连续时间代数黎卡提方程的解,以矩阵形式返回。

当相关联的汉密尔顿矩阵在虚轴上有特征值时,care 会为 X 返回 []

闭环特征值,以矩阵形式返回。

闭环特征值 L 的计算公式如下:

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

状态反馈增益,以矩阵形式返回。

状态反馈增益 G 的计算公式如下:

G=R1(BTXE+ST)

当相关联的汉密尔顿矩阵在虚轴上有特征值时,care 会为 G 返回 []

诊断报告,以标量形式返回,取值为以下值之一:

  • -1,当相关联的汉密尔顿矩阵束在虚轴上或非常接近虚轴处有特征值时(失败)。

  • -2,当不存在有限稳定解 X 时。

  • 相对残差的 Frobenius 范数,当 X 存在且有限时。

因式分解解矩阵,以矩阵形式返回。该函数返回 X1X2 和对角缩放矩阵 D,使得 X = D(X1/X2)D 成立。

当相关联的汉密尔顿矩阵在虚轴上有特征值时,careX1X2D 返回为空。

限制

(A,B) 对组必须是可稳定的(即,所有不稳定模式都是可控的)。此外,相关联的汉密尔顿矩阵或矩阵束在虚轴上不得有特征值。满足此限制的充分条件是,当 S=0R>0 时,(Q,A) 可检测到,或者

[QSSTR]>0

算法

care 实现 [1] 中描述的算法。当 R 条件良好且 E=I 时,它使用汉密尔顿矩阵进行处理;否则,它使用扩展汉密尔顿矩阵束和 QZ 算法。

参考

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

版本历史记录

在 R2006a 之前推出

全部折叠

另请参阅