线性矩阵不等式研究

线性矩阵不等式研究
线性矩阵不等式研究

线性矩阵不等式研究

[摘要] 近年来,由于线性矩阵不等式(lmi)的优良性质以及解法的突破,使其在控制系统的分析和设计得到了广泛的重视和应用。本文主要推导和证明现行矩阵不等式的一个性质,这个性质可以于应用解决凸优化问题。

[关键词] 线性矩阵不等式凸集

1.背景分析

在实际工业控制中,各种工业生产过程、生产设备以及其他众多被控对象,其动态特性一般都难以用精确的数学模型来描述。有时即使能获得被控对象的精确数学模型,但由于过于复杂,使得难以对其进行有效的控制性能分析和综合,因此必须进行适当的简化。因此,线性矩阵不等式及求解凸优化问题的内点法的提出,为许多控制问题的分析和求解提供了有效工具。在过去的10 余年内,由于线性矩阵不等式(lmi) 的优良性质以及解法的突破,使其在控制系统分析和设计方面得到了广泛的重视和应用。在此之前,绝大多数的控制问题都是通过riccati方程或其不等式的方法来解决的。但是解riccati 方程或其不等式时,有大量的参数和正定对称矩阵需要预先调整。有时,即使问题本身是有解的,也找不出问题的解。这给实际应用问题的解决带来极大不便,而线性矩阵不等式方法可以很好地弥补riccati 方程方法的上述不足。在解线性矩阵不等式时,不需要预先调整任何参数和正定对称矩阵。控制系统中时滞的存在往往导致系统的不稳定和较差的系统性能。因此,时滞系统包括不

LMI(线性矩阵不等式)工具箱

LMI:Linear Matrix Inequality,就是线性矩阵不等式。 在Matlab当中,我们可以采用图形界面的lmiedit命令,来调用GUI接口,但是我认为采用程序的方式更方便(也因为我不懂这个lmiedit的GUI)。 对于LMI Lab,其中有三种求解器(solver):feasp,mincx和gevp。 每个求解器针对不同的问题: feasp:解决可行性问题(feasibility problem),例如:A(x)

线性矩阵不等式的LMI工具箱求解

一、线性矩阵不等式的LMI 工具箱求解 (一)可行性问题(LMIP ) 1、可行性问题描述 系统状态方程: []11223301000210-4014x x x x u x x ????????????????=-+????????????????-???????? &&& 在判断系统的稳定性时,根据线性定常系统的雅普诺夫稳定性判据,需要判断是否存在实对称矩阵P ,使得: T A P+PA=Q - 成立,其中Q 为正定矩阵。 那么判断系统稳定性的问题,可以转化为下面不等式是否存在解的问题: T A P+PA<0 这种不等式解是否存在的问题可以用MATLAB 的LMI 工具箱进行判断。 2、仿真所需要用到的命令 setlmis([]) :开始一个线性矩阵不等式系统的描述; X= lmivar(TYPE,STRUCT):定义一个新的矩阵变量; lmiterm(TERMID,A,B,FLAG):确定线性矩阵不等式的一个项的容; LMISYS = getlmis :结束一个线性矩阵不等式系统的描述,返回这个现行矩阵不等式系统的部表示向量LMISYS ;

X = dec2mat(LMISYS,DECV ARS,XID):由给定的决策变量得到相应的矩阵变量值。 [tmin,xfeas]=feasp(lmisys):可行性问题的求解器函数,tmin大于0时,表明LMI系统不可行,P阵无解,系统不稳定,tmin小于0时,便可以用dec2mat函数求解出P矩阵。 3、仿真结果 可以看到,仿真结果tmin<0,因此P阵存在,系统是稳定的。进一步用dec2mat函数求解出P矩阵。得:

Matlab中LMI(线性矩阵不等式)工具箱使用教程

博客首页 注册 建议与交流 排行榜 加入友情链接 推荐 投诉 搜索: 帮助 https://www.360docs.net/doc/96328811.html, 管理博客 发表文章留言收藏夹博客圈音乐相册文章首页

项(Terms):项是常量或者变量(Terms are either constant or variable)。 常项(Constant Terms)是确定的矩阵。可变项(Variable Terms)是哪些含有矩阵变 量的项,例如:X*A, X*C'。如果是X*A + X*C',那么记得要把它当成两项来处理。 好了废话不说了,让我们来看个例子吧(下面是一线性时滞系统)。 针对这个式子,如果存在满足如下LMI的正矩阵(positive-define)的Q,S1,S2和矩阵M,那么我们就称作 该系统为H-inf渐进稳定的,并且gammar是上限。 该论文的地址为:论文原文地址 该论文的算例为: 我们要实现的就利用LMI进行求解,验证论文结果。 首先我们要用setlmis([])命令初始化一个LMI系统。 接下来,我们就要设定矩阵变量了。采用函数为lmivar 语法:X = lmivar(type,struct)

type=1: 定义块对角的对称矩阵。 每一个对角块或者是全矩阵<任意对称矩阵>,标量<单位矩阵的乘积>,或者是零阵。 如果X有R个对角块,那么后面这个struct就应该是一个Rx2阶的的矩阵,在此矩阵中,struct(r,1)表示第r个块的大小,struct(r,2) 表示第r个块的类型<1--全矩阵,0--标量,-1--零阵)。 比如一个矩阵有两个对角块,其中一个是2x2的全对称矩阵,第二个是1x1的一个标量,那么该矩阵变量应该表示为X = lmivar(1, [2 1; 1 0]) 。 type=2: mxn阶的矩阵,只需要写作struct = [m,n]即可。 type=3: 其它类型。针对类型3,X的每一个条目(each entry of X)被定义为0或者是+(-)xn,此处xn代表了第n个决策变量。 那么针对我们的例子,我们如此定义变量: % Q is a symmetric matrix, has a block size of 2 and this block is symmetric Q = lmivar(1, [2 1]); % S1 a symmeric matrix, size 2 S1 = lmivar(1, [2 1]); % S2 is 1 by 1 matrix S2 = lmivar(1, [1 0]); % Type of 2, size 1 by 2 M = lmivar(2, [1 2]); 定义完成变量之后,我们就该用lmiterm来描述LMI中的每一个项了。Matlab的官方文档提示我们,如果要描述一个LMI只需要描述上三角或者下三角元素就可以了,否则会描述成另一个LMI。 When describing an LMI with several blocks, remember to specify only the terms in the blocks on or below the diagonal (or equivalently, only the terms in blocks on or above the diagonal). 语法为:lmiterm(termID,A,B,flag) termID是一个四维整数向量,来表示该项的位置和包含了哪些矩阵变量。 termID(1)可以为+p或者-p,+p代表了这个项位于第p个线性矩阵不等式的左边,-p代表了这个项位于第p个线性矩阵不等式的右边。注意:按照惯例来讲,左边通常指较小的那边。 termID(2:3): 1、对于外部变量来说,取值为[0,0]; 2、对于左边或者右边的内部变量来说,如果该项在(i,j)位置,取值[i,j] termID(4): 1、对于外部变量,取值为0 2、对于A*X*B,取值X 3、对于A*X'*B,取值-X flag(可选,值为s): 因为:(A*X*B) + (A*X*B)T = A*X*B + B'*X'*A',所以采用s来进行简写。 比如:针对A*X + X'*A' 我们采用笨方法: lmiterm([1 1 1 X],A,1) lmiterm([1 1 1 -X],1,A') 那么简写就是lmiterm([1 1 1 X],A,1,'s')

线性矩阵不等式的LMI工具箱求解

一、线性矩阵不等式的LMI 工具箱求解 (一)可行性问题(LMIP ) 1、可行性问题描述 系统状态方程: []11 223 3 1000210-4 14x x x x u x x ???? ???? ???????? =-+????????????????-???? ???? 在判断系统的稳定性时,根据线性定常系统的李雅普诺夫稳定性判据,需要判断是否存在实对称矩阵P ,使得: T A P +P A =Q - 成立,其中Q 为正定矩阵。 那么判断系统稳定性的问题,可以转化为下面不等式是否存在解的问题: T A P +P A <0 这种不等式解是否存在的问题可以用MATLAB 的LMI 工具箱进行判断。 2、仿真所需要用到的命令 setlmis([]) :开始一个线性矩阵不等式系统的描述; X= lmivar(TYPE,STRUCT):定义一个新的矩阵变量; lmiterm(TERMID,A,B,FLAG):确定线性矩阵不等式的一个项的内容; LMISYS = getlmis :结束一个线性矩阵不等式系统的描述,返回这个现行矩阵不等式系统的内部表示向量LMISYS ; X = dec2mat(LMISYS,DECV ARS,XID):由给定的决策变量得到相应的矩阵变量值。 [tmin,xfeas]=feasp(lmisys):可行性问题的求解器函数,tmin 大于0时,表明LMI 系统不可行,P 阵无解,系统不稳定,tmin 小于0时,便可以用dec2mat 函

数求解出P矩阵。 3、仿真结果 可以看到,仿真结果tmin<0,因此P阵存在,系统是稳定的。进一步用dec2mat函数求解出P矩阵。得:

线性矩阵不等式求解实例-待分析

在求解如下凸优化问题中遇到了问题: 1.不知道如何编程得到最优的γ2 2.求解提示为没有可行解 是否是我退出的不等式有问题或者其他方面有问题 A=[0,1,0,-1;-882,-28.4,0,28.4;0,0,0,1;1696.15,54.62,-657.12,-2680.39;]; B=[0,0,0,-0.039]'; Bw=[0,0,-1,2625.77]'; C1=[-882,-28.4,0,28.4]; C2=[0,0,10,0]; Ea=[0,0,-65.71,262.58] %Eb=0 L=[0,0,0,1]' I=eye(1) gam=4.2; %γ=gam a=0.01; %ρ=a b=0.1; %ε=b c=inv(b); umax=3000 setlmis([]); X=lmivar(1,[4 1]); %定义决策变量 Z=lmivar(2,[1 4]);

lmiterm([1 1 1 X],A,1,'s'); lmiterm([1 1 1 Z],B,1,'s'); lmiterm([1 1 2 0],L); lmiterm([1 1 3 X],1,Ea'); %Ea→Ea' lmiterm([1 1 4 0],Bw); lmiterm([1 1 5 X],1,C1'); lmiterm([1 2 2 0],-c); lmiterm([1 3 3 0],-b); lmiterm([1 4 4 0],-gam^2); lmiterm([1 5 5 0],-1); lmiterm([-2 1 1 X],1,1); lmiterm([3 1 1 0],-1); lmiterm([3 1 2 Z],0.95,1); lmiterm([3 2 2 X],-3000,1); lmiterm([4 1 1 0],-1); lmiterm([4 1 2 X],C2,0.95); lmiterm([4 2 2 X],-1,1); lmisys=getlmis; %完成LTI框架的设设置 [tmin,xfeas]=feasp(lmisys); %求解可行解问题 X=dec2mat(lmisys,xfeas,X); %提取解矩阵把决策变量转化为矩阵形式Z=dec2mat(lmisys,xfeas,Z); P=inv(X); K=Z*P

掌握线性矩阵不等式的求解方法及Matlab工具箱

年级 班号学号 专业姓名 实验 名称 数学软件实验课程考察报告 线性矩阵不等式问题的求解方法实验 类型 设计型综合型创新型 √ 实验目的或要求1.掌握线性矩阵不等式的求解方法及Matlab工具箱。 2.求解两个矩阵不等式问题。 3.验证结果的正确性。

实验程序的源代码1. A=[0 1 0 0;1 0 0 0;0 0 0 1;0 0 1 0]; B=[0 0;1 0;0 0;0 1]; H=[0 0 0 0;-1 0 1 0;0 0 0 0;1 0 -1 0]; I=eye(4); setlmis([]); Y=lmivar(1,[2 0;2 0]); L=lmivar(2,[2 4]); gamma=lmivar(1,[1 0]); beta=lmivar(1,[1 0]); lmiterm([1 1 1 Y],1,A','s'); lmiterm([1 1 1 L],B,1,'S'); lmiterm([1 2 1 0],I); lmiterm([1 3 1 Y],H,1); lmiterm([-2 1 1 Y],1,1); lmiterm([1 2 2 gamma],5.*1,-I,'s'); lmiterm([1 3 3 beta],5.*1,-I,'s'); lmisys=getlmis; [tmin,xfeas]=feasp(lmisys); Y_ans=dec2mat(lmisys,xfeas,Y) L_ans=dec2mat(lmisys,xfeas,L) gamma_ans=dec2mat(lmisys,xfeas,gamma) beta_ans=dec2mat(lmisys,xfeas,beta) q=Y_ans*A'+A*Y_ans+L_ans*B'+B*L_ans; z=zeros(4,4); r=[q I Y_ans.*H';I gamma_ans.*I. z;H.*Y_ans. z beta_ans.*I]; v=eig(r); display(v); 2.A=[0 1;1 0]; B=[0;1]; I=eye(2); setlmis([]); Y=lmivar(1,[1 0;1 0]); L=lmivar(2,[1 2]); gamma=lmivar(1,[1 0]); beta=lmivar(1,[1 0]); lmiterm([1 1 1 Y],1,A','s'); lmiterm([1 1 1 L],B,1,'S'); lmiterm([1 2 1 0],I); lmiterm([1 3 1 Y],1,1); lmiterm([-2 1 1 Y],1,1); lmiterm([1 2 2 0],-gamma.*1); lmiterm([1 3 3 beta],5.*1,-I,'s'); lmisys=getlmis; [tmin,xfeas]=feasp(lmisys); Y_ans=dec2mat(lmisys,xfeas,Y) L_ans=dec2mat(lmisys,xfeas,L) gamma_ans=dec2mat(lmisys,xfeas,gamma) beta_ans=dec2mat(lmisys,xfeas,beta)

相关文档
最新文档