bmdlz 发表于 2009-7-2 23:40

向高手请教LMI问题

给定标度h>0,求正定的X,R1,R2,Q,Y满足下面不等式

X>0,R1>0,R2>0,Q>0
[(1/h)*(XA'+AX+Y'B'+BY)+2X,BQ;
QB',                      -Q]<0

[-XY'B';
BY-R2]<=0

[-XXA';
AX-R1]<=0

[-QY;
Y'   -X]<=0

R1+R2-X<=0
求最大的h,其中A,B已知,且A=[-0.8 -0.01;10.1];B=;

这个lmi如何编程实现,我自己编写了个程序,但是程序报错不知道错在什么地方希望高手指点一下,先谢谢了!

bmdlz 发表于 2009-7-2 23:41

这是我编写的程序,不知道错在什么地方
A=[-0.8 -0.01;1 0.1];
B=;
% Initial a LMI system
setlmis([]);
% Define Variables
% X is a symmetric matrix, has a block size of 2 and this block is symmetric
X = lmivar(1, );
% R1 a symmeric matrix, size 2
R1 = lmivar(1, );
R2 = lmivar(1, );
Q = lmivar(1, );
% Q, S1, S2 > 0
Y = lmivar(2, )
h=lmivar(1, )

% pos in (1, 1)
lmiterm(, A./h, 1,'s');
lmiterm(, B./h, 1,'s');
lmiterm(, 2/h, 1);
lmiterm(, B, 1);
lmiterm(, -1, 1);

lmiterm(, -1, 1);
lmiterm(, 1, B');
lmiterm(, -1, 1);

lmiterm(, -1, 1);
lmiterm(, 1, A');
lmiterm(, -1, 1);

lmiterm(, -1, 1);
lmiterm(, 1, 1);
lmiterm(, -1, 1);

lmiterm(, 1, 1);
lmiterm(, 1, 1);
lmiterm(, -1, 1);

lmiterm([-6 1 1 X], 1, 1); %X>0
lmiterm([-7 1 1 R1], 1, 1);%R1>0
lmiterm([-8 1 1 R2], 1, 1);%R2>0
lmiterm([-9 1 1 Q], 1, 1);%Q0
lmiterm([-10 1 1 h], 1, 1);%X>0

lmis = getlmis;
= feasp(lmis)

[ 本帖最后由 bmdlz 于 2009-7-2 23:46 编辑 ]

liljx_2008 发表于 2009-7-3 09:36

是不是对B矩阵的和Q相乘时维数不匹配啊,一个列向量怎么乘一个方阵呢。Q是不是一个数就可以了,你试试看,这样第一个LMI的维数才匹配。
再者,你的程序中怎么体现求h的最大值呢?

bmdlz 发表于 2009-7-4 22:25

Q矩阵确实错了,应该是一个数。
程序中怎么体现求h的最大值呢?
这个问题我也没有搞清楚,目前先看看是否有解

dazzen 发表于 2013-1-17 21:44

第一个改正的地方:h=lmivar(1,)应该改为h=lmivar(1,)
第二个改正的地方:应该用mincx函数求得h的最大值,然后把h当中已知标量,再用feasp求取其它矩阵变量

bmdlz 发表于 2013-1-21 15:04

非常感谢dazzen的解答,但是还是有些不清楚,能给出具体的程序吗?

ep22stone 发表于 2013-4-17 18:06

为什么要把h=lmivar(1,)改为h=lmivar(1,)
页: [1]
查看完整版本: 向高手请教LMI问题