主要内容

icare

连续时间代数黎卡提方程的隐式求解器

说明

[X,K,L] = icare(A,B,Q,R,S,E,G) 计算以下连续时间代数黎卡提方程的唯一稳定解 X、状态反馈增益 K 和闭环特征值 L

ATXE+ETXA+ETXGXE-(ETXB+S)R-1(BTXE+ST)+Q = 0

稳定解 X 将所有特征值 L 置于左半平面中。

代数黎卡提方程在 LQR/LQG 控制、H2 控制和 H 无穷控制、卡尔曼滤波以及谱分解或互质分解中起着关键作用。

示例

[X,K,L,info] = icare(___) 还返回一个结构体 info,其中包含有关连续时间代数黎卡提方程的解的附加信息。

示例

[___] = icare(___,'noscaling') 关闭内置缩放,并将缩放向量 info.Sxinfo.Sr 的所有条目设置为 1。关闭缩放可加快计算速度,但当 A,B,Q,R,S,E,G 的缩放不当时,可能会影响准确性。

[___] = icare(___,'anti') 计算将所有特征值 L 置于右半平面中的反稳定解 X

示例

示例

全部折叠

要求解代数黎卡提方程 ATX+XA-XBBTX+CCT=0,假设有以下矩阵:

A=[1-23-456789]B=[56-7]C=[7-89].

最省力的方法是设置 G=-BBTQ=CTC,然后使用 icare 求解。

A = [-1,2,3;4,5,-6;7,-8,9];
B = [5;6;-7];
C = [7,-8,9];
G = -B*B';
Q = C'*C;
[X1,K1,L1] = icare(A,[],Q,[],[],[],G)
X1 = 3×3

   15.3201    4.2369   17.0090
    4.2369    2.6252    4.4123
   17.0090    4.4123   19.0374

K1 =

  0×3 empty double matrix
L1 = 3×1

   -3.2139
  -10.1191
  -76.9693

当矩阵 BC 的条目值很大时,上述方法可能会导致数值不准确,因为在计算 GQ 矩阵时,B 和 C 被平方了。由于数值范围有限,计算结果可能不太准确,甚至出现计算失败。例如,如果 norm(B)1e6,则 norm(G)1e12,并且距离虚轴 1e-4 内的任何特征值可能会由于数值误差而被诊断为“虚数”。

为了提高数值准确性,请按以下方式重写代数黎卡提方程:

ATX+XA[XB,CT]*[I,0;0,-I][BTX;C]=0.

上面的方程是 ATX+XA-(XB+S)R-1(BTX+ST)=0 的标准形式,

其中 B=[B,0], S=[0,CT],and R=[I,0;0,-I]

使用 icare 采用上述值计算解。

n = size(A,1);
m = size(B,2);
p = size(C,1);
R = blkdiag(eye(m),-eye(p));
BB = [B,zeros(n,p)];
S = [zeros(n,m),C'];
[X2,K2,L2,info] = icare(A,BB,0,R,S,[],[])
X2 = 3×3

   15.3201    4.2369   17.0090
    4.2369    2.6252    4.4123
   17.0090    4.4123   19.0374

K2 = 2×3

  -17.0406    6.0501  -21.7435
   -7.0000    8.0000   -9.0000

L2 = 3×1

   -3.2139
  -10.1191
  -76.9693

info = struct with fields:
        Sx: [3×1 double]
        Sr: [2×1 double]
         U: [3×3 double]
         V: [3×3 double]
         W: [2×3 double]
    Report: 0

其中,X2 是唯一稳定解,K2 包含状态反馈增益,L2 包含闭环特征值。

要求连续时间代数黎卡提方程 ATX+XA-XBBTX+CCT=0 的反稳定解,假设有以下矩阵:

A=[1-23-456789]B=[56-7]C=[7-89].

为了提高数值准确性,请按以下方式重写代数黎卡提方程:

ATX+XA[XB,CT]*[I,0;0,-I][BTX;C]=0.

上面的方程是 ATX+XA-(XB+S)R-1(BTX+ST)=0 的标准形式,

其中 B=[B,0], S=[0,CT],and R=[I,0;0,-I]

使用 'anti' 选项计算反稳定解。

A = [-1,2,3;4,5,-6;7,-8,9];
B = [5;6;-7];
C = [7,-8,9];
n = size(A,1);
m = size(B,2);
p = size(C,1);
R = blkdiag(eye(m),-eye(p));
BB = [B,zeros(n,p)];
S = [zeros(n,m),C'];
[X,K,L] = icare(A,BB,0,R,S,[],[],'anti')
X = 3×3

  -18.0978   10.9090   -1.8466
   10.9090   -6.7195    1.4354
   -1.8466    1.4354   -0.9426

K = 2×3

  -12.1085    4.1803    5.9774
   -7.0000    8.0000   -9.0000

L = 3×1

   76.9693
   10.1191
    3.2139

其中,X 是唯一反稳定解,K 包含状态反馈增益,L 包含闭环特征值。

输入参数

全部折叠

输入矩阵,指定为矩阵。

矩阵 QRG 必须是埃尔米特矩阵。如果一个方阵等于其复共轭转置,即 ai,j=a¯j,i,则该方阵为埃尔米特矩阵。

有关埃尔米特矩阵的详细信息,请参阅 ishermitian

矩阵 RE 必须为可逆矩阵。

当矩阵 BRSEG 被省略或设置为 [] 时,icare 使用以下默认值:

  • B = 0

  • R = I

  • S = 0

  • E = I

  • G = 0

如果输入 QRG 为标量值,则 icare 会将它们解释为单位矩阵的倍数。

关闭内置缩放的选项,指定为 'noscaling'。关闭内置缩放时,icare 会将缩放向量 info.Sxinfo.Sr 中的所有条目设置为 1。关闭缩放可加快计算速度,但当 A,B,Q,R,S,E,G 的缩放不当时,可能会影响准确性。

计算反稳定解的选项,指定为 'anti'。启用此选项后,icare 会计算将 (A+G*X*E-B*K,E) 的所有特征值置于右半平面中的反稳定解 X

了解黎卡提微分方程的完整相图,既需要唯一稳定解,也需要唯一反稳定解。

输出参量

全部折叠

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

默认情况下,X 是连续时间代数黎卡提方程的稳定解。当使用 'anti' 选项时,X 是反稳定解。

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

当矩阵束是奇异的(即 [B;S;R] 是秩亏的)时,icare 返回 [] (自 R2024a 起)

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

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

K = R1(BTXE+ST).

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

当矩阵束是奇异的(即 [B;S;R] 是秩亏的)时,icare 返回 [] (自 R2024a 起)

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

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

L = eig(A+GXEBK,E).

当相关联的汉密尔顿矩阵在虚轴上有特征值时,icare 会为 XK 返回 []。换句话说,即使 XK 为空矩阵,L 也不为空。

当矩阵束是奇异的(即 [B;S;R] 是秩亏的)时,icare 返回 L = NaN(n,1) (自 R2024a 起)

关于唯一解的信息,以包含以下字段的结构体形式返回:

  • Sx - 用于缩放状态的值向量。

  • Sr - 用于缩放 R 矩阵的值向量。

  • UVW - 表示相关联缩放矩阵束的稳定不变子空间基的值向量。有关详细信息,请参阅算法

  • Report - 具有以下值之一的标量:

    • 0 - 唯一解准确。

    • 1 - 解精度差。

    • 2 - 解不是有限数值。

    • 3 - 找不到解,因为 [L;-L] 表示的汉密尔顿频谱在虚轴上有特征值。

    • 4 - 奇异矩阵束([B;S;R] 是秩亏的) (自 R2024a 起)

限制

  • (A-sE,B) 必须是可稳定的,并且 ER 必须是可逆的,才能使有限稳定解 X 存在且为有限的。虽然这些条件通常并不充分,但当满足以下条件时,它们就变得充分:

    • [QSTSR]  0

    • [ABR1STQSR1ST] 是可检测的

算法

不变子空间的基

icare 处理以下矩阵束,并计算与该矩阵束的稳定或反稳定的有限特征值相关联的不变子空间的基 [U;V;W]

MsN = [AGBQATSSTBTR]s[E000ET0000]

数据会自动缩放,以降低虚轴附近特征值的敏感度,并进一步分离稳定和反稳定不变子空间。

解、状态反馈增益和缩放向量之间的关系

X 和状态反馈增益 K 与缩放向量和 U,V,W 之间的关系由以下方程组表示:

X = Dx VU1 Dx E1,K = Dr WU1 Dx,

其中,

Dx = diag(Sx),Dr = diag(Sr).

版本历史记录

在 R2019a 中推出

全部展开

另请参阅

| | | | | | (Robust Control Toolbox) | (Robust Control Toolbox) | | (Robust Control Toolbox) | (Robust Control Toolbox)