如果 A , B A, B A,B分别是阶数为 m × n , p × q m\times n, p\times q m×n,p×q的矩阵, 那么 A A A和 B B B的Kronecker积 A ⨂ B A\bigotimes B A⨂B是阶数为 m p × n q mp\times nq mp×nq的矩阵. A A A和 B B B的Kronecker积为
A ⨂ B = ( a 11 B ⋯ a 1 n B ⋮ ⋱ ⋮ a m 1 B ⋯ a m n B ) . A\bigotimes B= \begin{pmatrix} a_{11}B & \cdots & a_{1n}B\\ \vdots & \ddots & \vdots\\ a_{m1}B & \cdots & a_{mn}B \end{pmatrix}. A⨂B=⎝⎜⎛a11B⋮am1B⋯⋱⋯a1nB⋮amnB⎠⎟⎞.
性质:
文献 [1] 第 280 页, 给出了 Kronecker 积的一个性质:
( A 1 ⨂ B 1 ) ( A 2 ⨂ B 2 ) = ( A 1 A 2 ) ⨂ ( B 1 B 2 ) . (A_1\bigotimes B_1)(A_2\bigotimes B_2) = (A_1A_2) \bigotimes (B_1B_2). (A1⨂B1)(A2⨂B2)=(A1A2)⨂(B1B2).
(Kronecker 积还有很多有用的性质, 这里只写出下文要用到的一条)
处理方法1:
设 A = ( a i j ) 2 × 2 A = (a_{ij})_{2\times 2} A=(aij)2×2 为已知矩阵, X = ( x i j ) 2 × 2 X = (x_{ij})_{2\times 2} X=(xij)2×2 为决策变量且 X X X 为对称阵. 假设 LMI 中出现项 A ⨂ X A\bigotimes X A⨂X, 则
A ⨂ X = ( a 11 X a 12 X a 21 X a 22 X ) = ( a 11 0 a 12 0 0 a 21 0 a 22 ) ( X O X O O X O 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⨂X=(a11Xa21Xa12Xa22X)=(a1100a21a1200a22)⎝⎜⎜⎛XXOOOOXX⎠⎟⎟⎞.
于是, 在描述线性矩阵不等式 A ⨂ X < 0 A\bigotimes X<0 A⨂X<0 时, 就可以用bigX
与bigA
来代替这个乘积:
% 假设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 X X 同维的零矩阵 (注意区分字母O
和数字0
). 上面的定义[X, ~, sX]
中, X
保存矩阵 X X X 的值, sX
保存矩阵 X X X 的结构, 所以如果在其他部分还用到了矩阵 X X X, 那么
sX
, 即使用 X X X 的结构进行拼接;X
.这种处理方式的关键是找到bigX
和bigA
对 A ⨂ X A\bigotimes X A⨂X 分解, 对于维数较高的情形,找出分解会非常困难, 所以介绍方法2.
处理方法2:
利用第 1 节中的性质, 我们有
A ⨂ X = ( A I 1 ) ⨂ ( I 2 X ) = ( A ⨂ I 2 ) ( I 1 ⨂ X ) , A\bigotimes X = (AI_1)\bigotimes(I_2X) = (A\bigotimes I_2)(I_1\bigotimes X), A⨂X=(AI1)⨂(I2X)=(A⨂I2)(I1⨂X),
其中 I 1 , I 2 I_1, I_2 I1,I2 为适当维数的单位阵 (更确切地说, I 1 I_1 I1的维数等于 A A A 的列数, I 2 I_2 I2 的维数等于 X X X 的行数). 由于 A ⨂ I 2 A\bigotimes I_2 A⨂I2 为已知矩阵, 所以只需处理 I 1 ⨂ X I_1\bigotimes X I1⨂X 即可:
I 1 ⨂ X = ( X ⋱ X ) . I_1\bigotimes X = \begin{pmatrix} X & &\\ &\ddots &\\ & &X \end{pmatrix}. I1⨂X=⎝⎛X⋱X⎠⎞.
不妨设 I 1 , X I_1, X I1,X 均为2阶矩阵, 则这一项可如下处理:
% 定义变量
[X, ~, sX] = lmivar(1, [2 1]);
bigX = lmivar(3, [sX O; O sX]);
% 描述LMI
lmiterm([1 1 1 bigX], 1, 1)
在LMI A ⨂ ( B X ) < 0 A\bigotimes (BX)<0 A⨂(BX)<0, A , B A,B A,B 为已知矩阵, X X X 为未知矩阵. 由第 1 节性质可知
A ⨂ ( B X ) = ( A I ) ⨂ ( B X ) = ( A ⨂ B ) ( I ⨂ X ) , A\bigotimes (BX) = (AI)\bigotimes (BX) = (A\bigotimes B)(I \bigotimes X), A⨂(BX)=(AI)⨂(BX)=(A⨂B)(I⨂X),
上式中 I I I 表示适当维数的单位阵, A ⨂ B A\bigotimes B A⨂B 为已知矩阵, 只需对 I ⨂ X I \bigotimes X I⨂X 按照 2.1 中的方法处理.
bigX
时,不能把 A A A 作为系数直接乘到X
上,原因见博文Matlab中使用LMI toolboxLMI, 链接 https://blog.csdn.net/qq_28093585/article/details/69358180[1] 程云鹏, 张凯院, 徐仲. 矩阵论 (第四版). 西安: 西北工业大学出版社, 2013.