声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2753|回复: 6

[控制理论] 向高手请教LMI问题

[复制链接]
发表于 2009-7-2 23:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
给定标度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

[-X  Y'B';
BY  -R2]<=0

[-X  XA';
  AX  -R1]<=0

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

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

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

使用道具 举报

 楼主| 发表于 2009-7-2 23:41 | 显示全部楼层
这是我编写的程序,不知道错在什么地方
A=[-0.8 -0.01;1 0.1];
B=[0.4;0.1];
% 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, [2 1]);
% R1 a symmeric matrix, size 2
R1 = lmivar(1, [2 1]);
R2 = lmivar(1, [2 1]);
Q = lmivar(1, [2 1]);
% Q, S1, S2 > 0
Y = lmivar(2, [2 1])
h=lmivar(1, [1 1])

% pos in (1, 1)
lmiterm([1 1 1 X], A./h, 1,'s');
lmiterm([1 1 1 Y], B./h, 1,'s');
lmiterm([1 1 1 X], 2/h, 1);
lmiterm([1 1 2 Q], B, 1);
lmiterm([1 2 2 Q], -1, 1);

lmiterm([2 1 1 X], -1, 1);
lmiterm([2 1 2 -Y], 1, B');
lmiterm([2 2 2 R2], -1, 1);

lmiterm([3 1 1 X], -1, 1);
lmiterm([3 1 2 X], 1, A');
lmiterm([3 2 2 R1], -1, 1);

lmiterm([4 1 1 Q], -1, 1);
lmiterm([4 1 2 Y], 1, 1);
lmiterm([4 2 2 X], -1, 1);

lmiterm([5 1 1 R1], 1, 1);
lmiterm([5 1 1 R2], 1, 1);
lmiterm([5 1 1 X], -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;
[tmin, feas] = feasp(lmis)

[ 本帖最后由 bmdlz 于 2009-7-2 23:46 编辑 ]
发表于 2009-7-3 09:36 | 显示全部楼层
是不是对B矩阵的和Q相乘时维数不匹配啊,一个列向量怎么乘一个方阵呢。Q是不是一个数就可以了,你试试看,这样第一个LMI的维数才匹配。
再者,你的程序中怎么体现求h的最大值呢?
 楼主| 发表于 2009-7-4 22:25 | 显示全部楼层
Q矩阵确实错了,应该是一个数。
程序中怎么体现求h的最大值呢?
这个问题我也没有搞清楚,目前先看看是否有解
发表于 2013-1-17 21:44 | 显示全部楼层
第一个改正的地方:h=lmivar(1,[1 1])应该改为h=lmivar(1,[1 0])
第二个改正的地方:应该用mincx函数求得h的最大值,然后把h当中已知标量,再用feasp求取其它矩阵变量
 楼主| 发表于 2013-1-21 15:04 | 显示全部楼层
非常感谢dazzen的解答,但是还是有些不清楚,能给出具体的程序吗?
发表于 2013-4-17 18:06 | 显示全部楼层
为什么要把h=lmivar(1,[1 1])改为h=lmivar(1,[1 0])
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-4-29 15:58 , Processed in 0.140433 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表