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

      前几天我们的控制理论实习结束了,这次实习学到了一点东西,想把它写出来和大家分享一下,如有不足,也请大家批评指正。

  首先,我们先来介绍LMI工具箱的一种很实用的用法:通过求解线性不等矩阵方程,根据正定的实对称矩阵P是否有解来判断系统是否稳定.下面我们将通过一个例子来为大家介绍它的第一个用法:

  已知A=[1 1.4 2.5;-1.5 -3.6 -3.8;0 -0.7 -2.3],通过LMI判断系统的稳定性。

我们知道Lyapunov方程的基本形式为(Q为任意给定的实对称矩阵):                                       

所以我们可建立一个线性矩阵不等式

                     

然后就可以利用LMI工具箱进行求解。程序如下:

%常数

A=[11.4 2.5;-1.5 -3.6 -3.8;0 -0.7 -2.3];

%初始化LMI

setlmis([]);

%定义变量

p=lmivar(1,[3,0]);

%添加项

lmiterm([1,1,1,p],1,A,'s');

lmiterm([41 1 0],1);

%获取LMI系统描述

lmisys=getlmis;

[tmin,xfeas]=feasp(lmisys)

这里的lmivar是一个比较特殊的函数,它的用法如下:

P=lmivar(type,struct),其中type确定变量的类型,struct确定变量的内容。

当type=1时,变量P为块对角化对称矩阵,对角线上的每一个对角块均为方阵;

当type=2时,变量P为是一个 m×n 的长方形矩阵;

当type=3时,比较复杂,这里不做讨论。

lmiterm的用法如下:

lmiterm(termID,A,B,flag),其中termID里面形式为[a,b,c,P],a可取数字1,2,3...表示序号,代表LMI的第几个式子,P代表变量,b,c代表变量P在这个式子中的位置;A,B表示变量P左右两边相乘的数或者矩阵;flag只能为‘s’,代表对称。举个例子如下:

           LMI工具箱求解线性矩阵不等式(1)_第1张图片

这个例子也是我们下一篇文章要写的内容,我们先讲如何构造其中的一小部分:

          

这里P,Q1,Q2为二阶对称正定矩阵,W1,M为二阶普通矩阵,所以,我们可以先定义这五个矩阵的形式:

P为对称正定矩阵,可以根据上面的方法写为:P=lmivar(1,[2,1]),Q1,Q2同理;

M为二阶普通矩阵,则比较简单:M=lmivar(2,[2,2]),W1同理。

定义完之后,接着就来表述A11的内容,首先是-2P,因为是第一个式子里面的第一行第一列,所以它的termID=[1 1 1 P],又因为变量P左乘-2,右乘1,所以a=-2,b=1,因为这里没有对称的情况,所以不用写‘s'。完整的结果为:lmiterm([1 1 1 P],-2,1);对于Q1,Q2,它们只是左右乘的数与P不一样,将a,b的值修改一下即可:lmiterm([1 1 1 Q1],1,1),lmiterm([1 1 1 Q2],1,1)

接着是W1,它也是第一个式子里面的第一行第一列,所以它的termID=[1 1 1 W1],又因为左右都乘以1,所以a,b均为1,但是这里的flag可以用上了,因为这里有W1的转置矩阵,所以最终的形式为:lmiterm([1 1 1 W1],1,1,'s'),M的形式与W1完全一致,为:lmiterm([1 1 1 M],1,1,'s')。

再接着回到第一个例题,写完所有的式子之后,运行程序,根据返回输出的值tmin判断不等矩阵是否有解,这道题的结果为:

       LMI工具箱求解线性矩阵不等式(1)_第2张图片

tmin>0,,表明 LMI 系统是不可行的,P无解,所以系统不稳定。当然,如果tmin<0的话,就可以接着调用dec2mat函数求解出P矩阵,这个也是下一篇文章要介绍到的内容。

第一次写这样的博文,难免格式上有些不太好看,请大家谅解啊,以后会慢慢进步的。

                                  

                                  完成于2018年1月17日0时2分 










你可能感兴趣的:(LMI工具箱求解线性矩阵不等式(1))