24小时热门版块排行榜    

查看: 1325  |  回复: 1

xyjustb

铜虫 (小有名气)

[求助] Matlab中LMI解答矩阵出现的级数特别大是怎么回事 已有1人参与

程序如下:
A=diag([0.2,0.2]);
[m,n]=size(A);

setlmis([]);
P1=lmivar(1,[n,1]);

lmiterm([1,1,1,P1],-1,A,'s');
lmisys=getlmis;
[tmin,xfeas]=feasp(lmisys);
P1=dec2mat(lmisys,xfeas,P1);

运行结果如下:
Solver for LMI feasibility problems L(x) < R(x)
    This solver minimizes  t  subject to  L(x) < R(x) + t*I
    The best value of t should be negative for feasibility

Iteration   :    Best value of t so far

* switching to QR
     1                    -2.694573e+08

Result:  best value of t: -2.694573e+08
          f-radius saturation:  99.005% of R =  1.00e+09


P1 =

   1.0e+08 *

    6.7364         0
         0    6.7364


我将A改成单位阵,解答出来的结果还是级数很高,各位能帮忙解答一下是什么原因吗?谢谢
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

drr123

金虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
你所要求的不等式是:-P1*A-(P1*A)^T<0.对吗?    这里的P1是正定对称矩阵吗?  要是正定对称的话,那你用LMIs工具箱去求解这个不等式的时候,应该对P1>0也同时就行描述,即 lmiterm([2 1 1 P1],1,-1) 添加进去,结果就好了。你试一下。我把整个程序贴下面:


clc;
A=diag([0.2,0.2]);
[m,n]=size(A);
setlmis([]);
P1=lmivar(1,[n,1]);
lmiterm([1 1 1 P1],-1,A,'s');
lmiterm([2 1 1 P1],1,-1) ;%你所需要添加的项。
LMIs=getlmis;
options=[1e-5,0,0,0,0];
[tmin,xfeas]=feasp(LMIs, options);
if tmin>0 stop
else
    P1=dec2mat(LMIs,xfeas,P1)
end

我建议你可以把A取成非对称的,你取得对角矩阵做仿真的话,太特殊了。
everying will be ok。
2楼2018-05-15 14:55:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 xyjustb 的主题更新
信息提示
请填处理意见