1 问题描述

2 计算程序

function [ X, Y, epsilon, delta, eta] = LMI_Calculate()
%{ 
1、线性矩阵不等式的求解
2、连续时间线性系统的事件触发机制, 韩俊先. 东北大学硕士毕业论文

By: Chenglin Li
data: 2021.05.23
%}
    %% 变量初始化
    clear,clc
    setlmis([]); %初始化LMI系统
    n=2;
    m=1;% 确定矩阵维数
    %常数声明
    A=[0, 1; 2, -3];
    B1=[0.5; 0.8];
    B2=[1; 1];
    C=[0, 0.1; 0.1, 0];
    D=[0.1; 0.2];
    G=[0.2, 0; 0.1, 0];
    E=[0.2, 0; 1, 0];
    lambda=0.2;
    gamma=0.4;
    
    %% 矩阵声明
    X=lmivar(1,[n, 1]) ; %2阶对称矩阵满块
    Y=lmivar(2,[m, n]); % m*n的矩阵
    epsilon=lmivar(1,[1, 1]) ; %表示一个标量
    delta=lmivar(1,[1, 1]) ; %表示一个标量
    eta=lmivar(1,[1, 1]) ; %表示一个标量
    
    %% 描述线性矩阵不等式
    %第一组:标量为正
    lmiterm([-1, 1, 1, epsilon], 1, 1); %epsilon>0
    lmiterm([-2, 1, 1, delta], 1, 1); %delta>0
    lmiterm([-3, 1, 1, eta], 1, 1); %eta>0
    
    %第二组 eta*I<=X
    lmiterm([-4, 1,1, X], 1, 1);
    lmiterm([4, 1,1, eta], 1, 1);
    
    % 第三组
%     N=X*A'+A*X+Y'*B2'+B2*Y+epsilon*(G*G')+lambda*X;
%     lmiterm([5, 1, 1, 0], N); %该写法错误
    %% 以下写法正确
    lmiterm([5, 1, 1, X], 1, A', 's');
    lmiterm([5, 1, 1, Y], B2, 1, 's');
    lmiterm([5, 1, 1, epsilon], G, G');
    lmiterm([5, 1, 1, X], lambda, 1);
    %%
    lmiterm([5, 1, 2, Y], B2, 1);
    lmiterm([5, 1, 3, 0], B1);
    lmiterm([5, 1, 3, X], C', D);
    lmiterm([5, 1, 4, X], 1, C');
    lmiterm([5, 1, 5, X], 1, 1);
    lmiterm([5, 1, 6, X], 1, E');
    lmiterm([5, 2, 2, delta], -1, 1); %-delta*I
    lmiterm([5, 3, 3, 0], -gamma^2);
    lmiterm([5, 3, 3, 0], D'*D); %该行程序原文中错写为D*D'
    lmiterm([5, 4, 4, 0], -1);
    lmiterm([5, 5, 5, 0], -1);
    lmiterm([5, 6, 6, epsilon], -1, 1);
    %% 第四组
%     lmiterm([-6,1,1, X], 1,1); %没有要求X为正定矩阵
    lmisys=getlmis ; %求解结束
    
    %% 求解可行解X,Y
    [tmin, xfeas]=feasp(lmisys);
    if(tmin<0)
        disp('Feasible');
    else
        return
    end
    X=dec2mat(lmisys, xfeas, X);
    Y=dec2mat(lmisys, xfeas, Y);
    epsilon=dec2mat(lmisys, xfeas, epsilon);
    delta=dec2mat(lmisys, xfeas, delta);
    eta=dec2mat(lmisys, xfeas, eta);
end

3 计算结果

(1)原文结果

和论文中的结果相对照,基本一致

(2)程序计算结果

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 
 
     1                        0.635835
     2                        0.421111
     3                        0.235576
     4                        0.056788
     5                       -0.049501

 Result:  best value of t:    -0.049501
          f-radius saturation:  0.000% of R =  1.00e+09
 
Feasible

X =

    3.7669    0.1223
    0.1223    5.0548


Y =

  -20.7679  -10.8085


epsilon =

   57.4172


delta =

   54.8695


eta =

    1.5342

>> K=Y*inv(X)

K =

   -5.4481   -2.0065

——2021.05.23——