function [Q1,K]=LMI_01
%{
程序功能:
1:使用Matlab工具箱/LMI工具箱求解线性矩阵不等式的可行解
2:
date: 2022.10.07
by : Lxy
%}
%% 程序参数初始化
clc;
clear;
A=[ -1,3.5; -0.8,-0.5];
B=[-1,1;-2,-1];
C=[1,-1;1,-1];
D=[-0.12,0.2;0.1,-0.1];
E=[-0.21,2.5;0.2,-0.3];
rho=0.9;
delta=0.0526;
alpha=0.2;
t=1;
Ft=diag([sin(t),cos(t)]);
M1=D*Ft*E;
M2=B-D*Ft*E;
n=2;
y=alpha*(1-alpha);
v=(1-alpha)*(1-rho);
beta=sqrt(y);
q=beta*(1-beta);
u=-beta*(1-beta);
%% 描述矩阵不等式
setlmis([]);
Q1=lmivar(1,[n,1]); % 1 是一个满快矩阵:
K=lmivar(1,[n,1]); % 1 是一个满块矩阵
lmiterm([1,1,1,Q1],1,-1); %描述矩阵里面的内容
lmiterm([1,1,3,0],A'); %外部变量
lmiterm([1,1,3,-K],y,M1'); %-K标识K的转置;
lmiterm([1,1,4,-K],u,M1');
lmiterm([1,2,2,0],-1);
lmiterm([1,2,3,-K],v,M2'); %-K标识K的转置;
lmiterm([1,2,4,-K],q,M2'); %-K标识K的转置;
lmiterm([1,3,3,inv(Q1)],-1,1);
lmiterm([1,4,4,inv(Q1)],-1,1);
%% 约定正定矩阵
lmiterm([-2,1,1,Q1],1,1);
lmiterm([-3,1,1,K],1,1);
%% 结尾
lmisys=getlmis; %获取lmi信息
%%求解LMI
[tmin,xfeas]=feasp(lmisys); %求出可行解
if (tmin<0)
disp('Feasible');
Q1=dec2mat(lmisys,xfeas,Q1);% 转成正常的double类型
K= dec2mat(lmisys,xfeas,K);
else
Q1=nan;
K=nan;
end
end
代码运行结果图: