1 | 【Matlab】LMI 求解器快速入门,常用指令 |
2 | 【Matlab】利用 LMI 解矩阵不等式方程 |
例题
首先以段广仁老师的一个例题作为问题切入点。
问题
给定矩阵
A
1
=
[
−
1
2
1
−
3
]
,
A
2
=
[
−
0.8
1.5
1.3
−
2.7
]
,
A
3
=
[
−
1.4
0.9
0.7
−
2.0
]
,
A_1 = \left[\begin{matrix} -1 & 2 \\ 1 & -3 \\ \end{matrix}\right], A_2 = \left[\begin{matrix} -0.8 & 1.5 \\ 1.3 & -2.7 \\ \end{matrix}\right], A_3 = \left[\begin{matrix} -1.4 & 0.9 \\ 0.7 & -2.0 \\ \end{matrix}\right],
A1=[−112−3],A2=[−0.81.31.5−2.7],A3=[−1.40.70.9−2.0],
求满足如下关系的矩阵
P
P
P
{
A
1
T
P
+
P
A
1
<
0
A
2
T
P
+
P
A
2
<
0
A
3
T
P
+
P
A
3
<
0
I
<
P
\left\{\begin{aligned} &A_1^\text{T} P + P A_1 < 0 \\ &A_2^\text{T} P + P A_2 < 0 \\ &A_3^\text{T} P + P A_3 < 0 \\ &I < P \\ \end{aligned}\right.
⎩
⎨
⎧A1TP+PA1<0A2TP+PA2<0A3TP+PA3<0I<P
解决代码
% 段广仁老师 LMI P420
% Example B.1
clear
clc
A1 =[-1 2
1 -3];
A2 =[-0.8 1.5
1.3 -2.7];
A3 =[-1.4 0.9
0.7 -2.0];
setlmis([])
P = lmivar(1, [2 1]);
% #1 A_1' P + P A_1
lmiterm([1 1 1 P], 1, A1, 's');
% #2 A_2' P + P A_2
lmiterm([2 1 1 P], 1, A2, 's');
% #3 A_3' P + P A_3
lmiterm([3 1 1 P], 1, A3, 's');
% #4 P
lmiterm([-4 1 1 P], 1, 1);
% #4 I
lmiterm([ 4 1 1 0], 1);
lmis1 = getlmis;
% solve
[tmin, xfeas] = feasp(lmis1);
P = dec2mat(lmis1, xfeas, P)
代码解析
setlmis([])
定义一个矩阵不等式系统
lmivar()
定义一个矩阵变量
lmiterm()
描述不等式的某一项
getlmis
矩阵不等式系统定义完毕
feasp / mincx / gevp
求解器