如題,LMI中要求對角線的矩陣必須是方陣才能求解,可是我要求的矩陣不是方陣怎么辦?
問題如圖1.
Z=[98.235;50.862;49.144;48.756;25.397;25.514;75.375];
A=[1 -1 -1 0 0 0 0;0 0 1 -1 0 0 0;0 1 0 0 -1 -1 0;0 0 0 1 1 0 -1];
e1=[0.5;0.5;0.5;0.5;0.5;0.5;0.5];
e2=[0.4;0.4;0.4;0.4;0.4;0.4;0.4];
r1=[0.08;0.08;0.08;0.08;0.08;0.08;0.08];
r2=[0.06;0.06;0.06;0.06;0.06;0.06;0.06];
A為4X7矩陣;X,Z,e1,e2,r1,r2均為7x1矩陣
代碼如下:
Z1=z-e1; Z2=-(z+e2);
setlmis([]);
X=lmivar(2,[7 1]);
lmiterm([1 1 1 X],-1,1);
lmiterm([1 1 1 0], Z1);
lmiterm([2 1 1 X],1,1);
lmiterm([2 1 1 0],Z2);
lmiterm([3 1 1 X], A,1);
lmiterm([3 1 1 0],-r1);
lmiterm([4 1 1 X],-A,1);
lmiterm([4 1 1 0],r2);
lmis=getlmis;
運行后如下錯誤:
lmiterm([1 1 1 X],-1,1);
lhs of LMI #1, block (1,1): terms in diagonal blocks must be square
Matlab要求每一個不等式必須是方陣,即X,AX也必須是方陣。怎么辦?不可能每次都正好是方陣呀。
如果轉(zhuǎn)化成圖片2再求解,
程序如下
Z1=z-e1; Z2=-(z+e2);
setlmis([]);
X=lmivar(2,[7 1]);
lmiterm([1 1 1 X],-1,1);
lmiterm([1 1 1 0],Z1);
lmiterm([1 2 2 X],1,1);
lmiterm([1 2 2 0],Z2);
lmiterm([1 3 3 X], A,1);
lmiterm([1 3 3 0],r1);
lmiterm([1 4 4 X],A,-1);
lmiterm([1 4 4 0],r2);
lmis=getlmis;
還是出現(xiàn)同樣的問題。
LMI要求不等式斜對角線上的矩陣為方陣,即nxn矩陣。而我這里要求解的不等式矩陣(1)-(4)都不是方陣怎么辦?要怎么處理?
用fmincon函數(shù)可以解,但是就是想學(xué)會使用LMI函數(shù),如果都是方陣才可以解,那豈不是LMI這個工具箱很局限?
![100RMB求MATLAB簡單的LMI問題!]()
111111.png
![100RMB求MATLAB簡單的LMI問題!-1]()
22222.png |