克罗内克积 (Kronecker product) 在线性矩阵不等式 (LMI) 中怎么描述

1. Kronecker 积的定义及性质

如果\(A, B\)分别是阶数为\(m\times n, p\times q\)的矩阵, 那么\(A\)\(B\)的Kronecker积\(A\bigotimes B\)是阶数为\(mp\times nq\)的矩阵. \(A\)\(B\)的Kronecker积为

\[A\bigotimes B= \begin{pmatrix} a_{11}B & \cdots & a_{1n}B\\ \vdots & \ddots & \vdots\\ a_{m1}B & \cdots & a_{mn}B \end{pmatrix}. \]

性质:
文献 [1] 第 280 页, 给出了 Kronecker 积的一个性质:

\[(A_1\bigotimes B_1)(A_2\bigotimes B_2) = (A_1A_2) \bigotimes (B_1B_2). \]

(Kronecker 积还有很多有用的性质, 这里只写出下文要用到的一条)

2. Kronecker 积在 LMI 中举例

如果 \(\bigotimes\) 两侧均为已知矩阵,那么用MATLAB中的kron函数计算。下文中处理 \(\bigotimes\) 的右侧含有未知矩阵的情形,假设 \(X\) 为所求未知矩阵.

2.1 形为 \(A\bigotimes X<0\) 的 LMI

处理方法1:
\(A = (a_{ij})_{2\times 2}\) 为已知矩阵, \(X = (x_{ij})_{2\times 2}\) 为决策变量且 \(X\) 为对称阵. 假设 LMI 中出现项 \(A\bigotimes X\), 则

\[A\bigotimes X= \begin{pmatrix} a_{11}X & a_{12}X\\ a_{21}X & a_{22}X \end{pmatrix}= \begin{pmatrix} a_{11} & 0 & a_{12} & 0 \\ 0 & a_{21} & 0 & a_{22} \end{pmatrix} \begin{pmatrix} X & O \\ X & O\\ O & X \\ O & X \end{pmatrix}. \]

于是, 在描述线性矩阵不等式 \(A\bigotimes X<0\) 时, 就可以用bigXbigA来代替这个乘积:

% 假设A在本行之前已定义
bigA = [A(1,1) 0 A(1,2) 0; 0 A(2,1) 0 A(2,2)]; % 已知矩阵
[X, ~, sX] = lmivar(1, [2 1]); % 定义决策变量 X
bigX = lmivar(3, [sX O; sX O; O sX; O sX]); % 定义组合矩阵 bigX
lmiterm([1 1 1 bigX], bigA, 1) % 描述LMI

其中O 是与 \(X\) 同维的零矩阵 (注意区分字母O和数字0). 上面的定义[X, ~, sX] 中, X 保存矩阵 \(X\) 的值, sX 保存矩阵 \(X\) 的结构, 所以如果在其他部分还用到了矩阵 \(X\), 那么

  • (1) 若需要用 \(X\) 拼接出其他矩阵, 则使用sX, 即使用 \(X\) 的结构进行拼接;
  • (2) 若描述包含 \(X\) 的项 (矩阵直接相乘的项,不包含 Kronecker 积), 则使用X.

这种处理方式的关键是找到bigXbigA\(A\bigotimes X\) 分解, 对于维数较高的情形,找出分解会非常困难, 所以介绍方法2.
处理方法2:
利用第 1 节中的性质, 我们有

\[A\bigotimes X = (AI_1)\bigotimes(I_2X) = (A\bigotimes I_2)(I_1\bigotimes X), \]

其中 \(I_1, I_2\) 为适当维数的单位阵 (更确切地说, \(I_1\)的维数等于\(A\) 的列数, \(I_2\) 的维数等于 \(X\) 的行数). 由于 \(A\bigotimes I_2\) 为已知矩阵, 所以只需处理\(I_1\bigotimes X\) 即可:

\[I_1\bigotimes X = \begin{pmatrix} X & &\\ &\ddots &\\ & &X \end{pmatrix}. \]

不妨设 \(I_1, X\) 均为2阶矩阵, 则这一项可如下处理:

% 定义变量
[X, ~, sX] = lmivar(1, [2 1]);
bigX = lmivar(3, [sX O; O sX]);
% 描述LMI
lmiterm([1 1 1 bigX], 1, 1)

2.2 形为 \(A\bigotimes (BX)<0\) 的 LMI

在LMI \(A\bigotimes (BX)<0\), \(A,B\) 为已知矩阵, \(X\) 为未知矩阵. 由第 1 节性质可知

\[A\bigotimes (BX) = (AI)\bigotimes (BX) = (A\bigotimes B)(I \bigotimes X), \]

上式中 \(I\) 表示适当维数的单位阵, \(A\bigotimes B\) 为已知矩阵, 只需对 \(I \bigotimes X\) 按照 2.1 中的方法处理.

3. 说明

  1. 在定义bigX时,不能把 \(A\) 作为系数直接乘到X上,原因见博文Matlab中使用LMI toolboxLMI, 链接 https://blog.csdn.net/qq_28093585/article/details/69358180,其中一个例子如下:
setlmis([])
[R,~,sR] = lmivar(1,[3 1]);
[P,~,sP] = lmivar(1,[3 1]);
A = [2,0,0;0,2,0;0,0,2];
[ph1,~,sph1] = lmivar(3,A*sR); % 错误, 不会报错, 结果也不等于A*变量R
[ph2,~,sph2] = lmivar(3,2*sR); % 错误, 不会报错, 结果也不等于变量R的2倍
[ph3,~,sph3] = lmivar(3,-sR); % 正确, 结果会等于-R
[ph4,~,sph4] = lmivar(3,sR'); % 正确, 结果会等于R的转置

参考文献

[1] 程云鹏, 张凯院, 徐仲. 矩阵论 (第四版). 西安: 西北工业大学出版社, 2013.

本文为Beta2187原创博文,地址为https://www.cnblogs.com/beta2187/p/B1924.html,未经本人允许,禁止转载。

posted @ 2021-10-29 19:25  Beta2187  阅读(1914)  评论(1编辑  收藏  举报