LMI线性矩阵不等式
- 格式:doc
- 大小:19.50 KB
- 文档页数:1
LMI:Linear Matrix Inequality,就是线性矩阵不等式。
在Matlab当中,我们可以采用图形界面的lmiedit命令,来调用GUI接口,但是我认为采用程序的方式更方便(也因为我不懂这个lmiedit的GUI)。
对于LMI Lab,其中有三种求解器(solver): feasp,mincx和gevp。
每个求解器针对不同的问题:feasp:解决可行性问题(feasibility problem),例如:A(x)<B(x)。
mincx:在线性矩阵不等式的限制下解决最小化问题(Minimization of a linear objective under LMI constraints),例如最小化c'x,在限制条件A(x) < B(x)下。
gevp:解决广义特征值最小化问题。
例如:最小化lambda,在0<B(x),A(x)<lamba*B(x)限制条件下。
要解决一个LMI问题,首要的就是要把线性矩阵不等式表示出来。
对于以下类型的任意的LMI问题N' * L(X1, . . . , XK) * N < M' * R(X1, . . . , XK) * M其中X1, . . . , XK是结构已经事先确定的矩阵变量。
左侧和右侧的外部因子(outer factors)N和M是给定的具有相同维数的矩阵。
左侧和右侧的内部因子(inner factors)L(.)和R(.)是具有相同结构的对称块矩阵。
每一个块由X1, . . . , XK以及它们的转置组合而成形成的。
解决LMI问题的步骤有两个:1、定义维数以及每一个矩阵的结构,也就是定义X1, . . . , XK。
2、描述每一个LMI的每一项内容(Describe the term content of each LMI)此处介绍两个术语:矩阵变量(Matrix Variables):例如你要求解X满足A(x)<B(x),那么X就叫做矩阵变量。
一、线性矩阵不等式的LMI 工具箱求解 (一)可行性问题(LMIP )1、可行性问题描述系统状态方程:[]1122331000210-414x x x x u x x ⎡⎤⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=-+⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥-⎣⎦⎣⎦⎣⎦⎣⎦在判断系统的稳定性时,根据线性定常系统的李雅普诺夫稳定性判据,需要判断是否存在实对称矩阵P ,使得:TA P +P A =Q -成立,其中Q 为正定矩阵。
那么判断系统稳定性的问题,可以转化为下面不等式是否存在解的问题:TA 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矩阵。
得:(二)特征值问题(EVP)1、EVP 问题描述该问题对应矩阵工具箱中的LMI 约束的线性目标函数最小化优化问题。
一般采用mincx 求解器求解。
考虑这样一个优化问题:m in ().. 0TTT ra c e X s t A X X A X B B X Q +++<其中:5342154067; 3; 562.78314228A B Q -⎛⎫⎛⎫⎛⎫⎪ ⎪ ⎪===-- ⎪ ⎪⎪ ⎪ ⎪ ⎪---⎝⎭⎝⎭⎝⎭2、仿真用到的命令DECV ARS = mat2dec(LMISYS,X1,X2,X3,...) :由给定的矩阵变量得到相应的决策变量值;[copt,xopt]=mincx(LMIs,c,options):用于给定的特征值问题求解,copt 返回全局最优的决策变量,xopt 返回决策变量的最优解。
LMI:Linear Matrix Inequality,就是线性矩阵不等式。
在Matlab当中,我们可以采用图形界面的lmiedit命令,来调用GUI接口,但是我认为采用程序的方式更方便(也因为我不懂这个lmiedit的GUI)。
对于LMI Lab,其中有三种求解器(solver): feasp,mincx和gevp。
每个求解器针对不同的问题:feasp:解决可行性问题(feasibility problem),例如:A(x)<B(x)。
mincx:在线性矩阵不等式的限制下解决最小化问题(Minimization of a linear objective under LMI constraints),例如最小化c'x,在限制条件A(x) < B(x)下。
gevp:解决广义特征值最小化问题。
例如:最小化lambda,在0<B(x),A(x)<lamba*B(x)限制条件下。
要解决一个LMI问题,首要的就是要把线性矩阵不等式表示出来。
对于以下类型的任意的LMI问题N' * L(X1, . . . , XK) * N < M' * R(X1, . . . , XK) * M其中X1, . . . , XK是结构已经事先确定的矩阵变量。
左侧和右侧的外部因子(outer factors)N和M是给定的具有相同维数的矩阵。
左侧和右侧的内部因子(inner factors)L(.)和R(.)是具有相同结构的对称块矩阵。
每一个块由X1, . . . , XK以及它们的转置组合而成形成的。
解决LMI问题的步骤有两个:1、定义维数以及每一个矩阵的结构,也就是定义X1, . . . , XK。
2、描述每一个LMI的每一项内容(Describe the term content of each LMI)此处介绍两个术语:矩阵变量(Matrix Variables):例如你要求解X满足A(x)<B(x),那么X就叫做矩阵变量。
LMI 工具箱介绍线性矩阵不等式(LMI )工具箱是求解一般线性矩阵不等式问题的一个高性能软件包。
由于其面向结构的线性矩阵不等式表示方式,使得各种线性矩阵不等式能够以自然块矩阵的形式加以描述。
一个线性矩阵不等式问题一旦确定,就可以通过调用适当的线性矩阵不等式求解器来对这个问题进行数值求解。
LMI 工具箱提供了确定、处理和数值求解线性矩阵不等式的一些工具,它们主要用于:z 以自然块矩阵形式来直接描述线性矩阵不等式; z 获取关于现有的线性矩阵不等式系统的信息; z 修改现有的线性矩阵不等式系统; z 求解三个一般的线性矩阵不等式问题; z 验证结果。
本附录将详细介绍LMI 工具箱提供的用于解决以上各个问题的相关函数和命令。
A.1 线性矩阵不等式及相关术语一个线性矩阵不等式就是具有以下一般形式的一个矩阵不等式:0<+++=N N x x L L L x L "110)( (1)其中:是给定的对称常数矩阵,是未知变量,称为决策变量,N L L L ,,,10"N x x ,,1"∈=T 1],,[N x x "x N R 是由决策变量构成的向量,称为决策向量。
尽管表达式(1)是线性矩阵不等式的一个一般表示式,但在大多数实际应用中,线性矩阵不等式常常不是以一般表示式(1)的形式出现,而是具有以下形式:),,(),,(11n n X X R X X L ""<其中的和是矩阵变量的仿射函数,通过适当的代数运算,上式可以写成线性矩阵不等式的一般表示式(1)的形式。
例如,在系统稳定性问题中经常遇到的Lyapunov 矩阵不等式)(⋅L )(⋅R n X X ,,1"0<+XA X A T (2)也是一个线性矩阵不等式,其中的是一个矩阵变量。
我们以一个二阶矩阵为例,将矩阵不等式(2)写成一般表示式(1)的形式。
针对二阶矩阵不X ⎥⎦⎤⎢⎣⎡−−=2021A等式(2),对应的矩阵变量是一个二阶的对称矩阵,,不等式(2)中的决策变量是矩阵中的独立元。
LMI:Linear Matrix Inequality,就是线性矩阵不等式。
在Matlab当中,我们可以采用图形界面的lmiedit命令,来调用GUI接口,但是我认为采用程序的方式更方便(也因为我不懂这个lmiedit的GUI)。
对于LMI Lab,其中有三种求解器(solver):feasp,mincx和gevp。
每个求解器针对不同的问题:feasp:解决可行性问题(feasibility problem),例如:A(x)<B(x)。
mincx:在线性矩阵不等式的限制下解决最小化问题(Minimization of a linear objective under LMI constraints),例如最小化c'x,在限制条件A(x) < B(x)下。
gevp:解决广义特征值最小化问题。
例如:最小化lambda,在0<B(x),A(x)<lamba*B(x)限制条件下。
要解决一个LMI问题,首要的就是要把线性矩阵不等式表示出来。
对于以下类型的任意的LMI问题N' * L(X1, . . . , XK) * N < M' * R(X1, . . . , XK) * M其中X1, . . . , XK是结构已经事先确定的矩阵变量。
左侧和右侧的外部因子(outer factors)N和M是给定的具有相同维数的矩阵。
左侧和右侧的内部因子(inner factors)L(.)和R(.)是具有相同结构的对称块矩阵。
每一个块由X1, . . . , XK以及它们的转置组合而成形成的。
解决LMI问题的步骤有两个:1、定义维数以及每一个矩阵的结构,也就是定义X1, . . . , XK。
2、描述每一个LMI的每一项内容(Describe the term content of each LMI)此处介绍两个术语:矩阵变量(Matrix Variables):例如你要求解X满足A(x)<B(x),那么X就叫做矩阵变量。
一、线性矩阵不等式的LMI 工具箱求解 (一)可行性问题(LMIP )1、可行性问题描述系统状态方程:[]11223301000210-414x 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,DECVARS,XID):由给定的决策变量得到相应的矩阵变量值。
[tmin,xfeas]=feasp(lmisys):可行性问题的求解器函数,tmin大于0时,表明LMI系统不可行,P阵无解,系统不稳定,tmin小于0时,便可以用dec2mat 函数求解出P矩阵。
3、仿真结果可以看到,仿真结果tmin<0,因此P阵存在,系统是稳定的。
进一步用dec2mat 函数求解出P 矩阵。
得:(二)特征值问题(EVP)1、EVP 问题描述该问题对应矩阵工具箱中的LMI 约束的线性目标函数最小化优化问题。
一般采用mincx 求解器求解。
考虑这样一个优化问题:min ().. 0TTTrace X s t A X XA XBB X Q +++<其中:5342154067; 3; 562.78314228A B Q -⎛⎫⎛⎫⎛⎫ ⎪ ⎪ ⎪===-- ⎪ ⎪ ⎪ ⎪ ⎪ ⎪---⎝⎭⎝⎭⎝⎭2、仿真用到的命令DECVARS = mat2dec(LMISYS,X1,X2,X3,...) :由给定的矩阵变量得到相应的决策变量值;[copt,xopt]=mincx(LMIs,c,options):用于给定的特征值问题求解,copt 返回全局最优的决策变量,xopt 返回决策变量的最优解。
lmi的matlab程序LMI的Matlab程序LMI(线性矩阵不等式)是一种常用的工具,用于解决线性系统控制问题。
Matlab是一种流行的数值计算软件,它提供了丰富的工具箱和函数库,可以帮助工程师和科学家解决各种数学和工程问题。
在本文中,我们将探讨如何使用Matlab编写和求解LMI的程序。
让我们简要介绍一下LMI。
LMI是一种特殊的线性不等式,其形式为AX + XB < C,其中A、B和C是已知的矩阵,X是待求解的变量矩阵。
LMI在控制理论和优化领域中有广泛的应用,例如线性系统稳定性分析、鲁棒控制设计和最优控制问题等。
在Matlab中,我们可以使用控制系统工具箱来编写和求解LMI。
首先,我们需要定义已知的矩阵A、B和C。
然后,我们可以使用lmi函数来创建LMI对象。
例如,我们可以使用以下代码创建一个LMI对象:```matlabA = [1 2; 3 4];B = [5 6; 7 8];C = [9 10; 11 12];LMI = lmi(A, B, C);```创建LMI对象后,我们可以使用lmiinfo函数来获取LMI的信息,例如LMI的维度和约束条件的数量。
例如,我们可以使用以下代码获取LMI的信息:```matlabinfo = lmiinfo(LMI);```接下来,我们可以使用lmiterm函数来添加约束条件。
约束条件可以是线性约束、二次约束或多项式约束。
例如,我们可以使用以下代码添加一个线性约束条件:```matlablmiterm([1 1 1 X], A', 1, 's');```在这个约束条件中,[1 1 1 X]表示约束项的位置和变量,A'表示已知矩阵A的转置,1表示约束项的系数,'s'表示约束的类型为小于等于。
添加约束条件后,我们可以使用lmisolve函数来求解LMI。
lmisolve函数将返回LMI的最优解,并将其存储在变量x中。
lmi仿真例题LMI(线性矩阵不等式)是一种用于描述和分析线性时不变系统的强大工具,特别是在控制系统领域。
以下是一个LMI的简单仿真例子,使用了MATLAB进行仿真。
假设我们有一个线性时不变系统,其状态空间表示为:dx/dt = Ax + Buy = Cx其中,x是状态向量,u是输入向量,y是输出向量,A、B、C是系统矩阵。
现在,我们想要设计一个状态反馈控制器,使得系统的某种性能(如状态范数)在某种程度上得到优化。
这可以通过求解一个LMI问题来实现。
1. 定义系统参数:```matlabn = 2; % 状态向量的维数A = [0 1; -2 -3]; % 状态矩阵B = [0; 1]; % 输入矩阵C = [1 0]; % 输出矩阵```2. 定义性能指标权重:```matlabQ = eye(n); % 状态代价函数的权重矩阵R = eye(1); % 输入代价函数的权重矩阵```3. 使用MATLAB的LMI工具箱求解LMI问题:```matlab[K, S, e] = lmisys(A, B, Q, R); % 求解LMI问题,得到状态反馈增益K ```4. 仿真系统响应:```matlabt = 0::10; % 时间向量u = sin(t); % 输入信号x0 = [0; 0]; % 初始状态向量[x, t] = lmisysplot(A, B, K, x0, u, t); % 仿真系统的状态响应和输入信号```5. 绘制仿真结果:```matlabfigure;subplot(2,1,1); plot(t, x(:,1)); ylabel('State 1'); grid on;subplot(2,1,2); plot(t, x(:,2)); ylabel('State 2'); grid on;```以上就是一个简单的LMI仿真例子,通过求解LMI问题,我们可以得到一个状态反馈控制器,使得系统的状态在某种程度上得到优化。