matlab求lypunov,【原创】Lyapunov、Sylvester和Riccati方程的Matlab求解

Lyapunov、Sylvester和Riccati方程是控系统常用到的几个方程,应用和计算比较广泛

在这里我们只要讨论下Lypunov方程的连续方程、离散方程的数值和解析解法,其中数值解法MATLAB提供的直接的lyap()和dlyap()函数

一、连续Lyapunov方程

连续Lyapunov方程可以表示为

324619ae995a043bc12bde7d078becb8.gif

1.gif (936 Bytes, 下载次数: 24)

2009-1-12 10:17 上传

Lyapunov方程来源与微分方程稳定性理论,其中要求C为对称正定的n×n方阵,从而可以证明解X亦为n×n对称矩阵,这类方程直接求解比较困难,不过有了Matlab中lyap()函数,就简单多了。

>> A=[1 2 3;4 5 6;7 8 0]

A =

1     2     3

4     5     6

7     8     0

>> C=-[10 5 4;5 6 7;4 7 9]

C =

-10    -5    -4

-5    -6    -7

-4    -7    -9

>> X=lyap(A,C)

X =

-3.9444    3.8889    0.3889

3.8889   -2.7778    0.2222

0.3889    0.2222   -0.1111复制代码二、Lyapunov方程的解析解

利用Kroncecker乘积的表示方法,可以将Lyapunov方程写为

324619ae995a043bc12bde7d078becb8.gif

2.gif (1.06 KB, 下载次数: 12)

2009-1-12 10:17 上传

可见,方程有唯一解的条件并不局限与C对称正定,只要满足 非奇异即可保证方程唯一解。同时也打破了传统观念,C必须对称正定的。

function x=lyap2(A,C)

%Lyapunov方程的符号解法

n=size(C,1);

A0=kron(A,eye(n))+kron(eye(n),A);

c=C(:);

x0=-inv(A0)*c;

x=reshape(x0,n,n)复制代码恩下面看一个示例,体会下符号解法

>>A=[1 2 3;4 5 6;7 8 0];

>>C=-[10 5 4;5 6 7;4 7 9];

>>x=lyap2(sym(A),sym(C))

x =

[ -71/18,   35/9,   7/18]

[   35/9,  -25/9,    2/9]

[   7/18,    2/9,   -1/9]复制代码三、离散Lyapunov方程

离散Lyapunov方程的一般形式为

324619ae995a043bc12bde7d078becb8.gif

3.gif (987 Bytes, 下载次数: 12)

2009-1-12 10:27 上传

Matlab中直接提供了dlyap()函数求解该方程:X=dlyap(A,Q)

其实,如果A矩阵非奇异,则等式两边同时右乘

324619ae995a043bc12bde7d078becb8.gif

4.gif (904 Bytes, 下载次数: 6)

2009-1-12 10:27 上传

得到

324619ae995a043bc12bde7d078becb8.gif

5.gif (1.39 KB, 下载次数: 6)

2009-1-12 10:27 上传

就可以将其变换成连续的Sylvester方程

324619ae995a043bc12bde7d078becb8.gif

6.gif (1.99 KB, 下载次数: 8)

2009-1-12 10:27 上传

而Sylvester方程是广义Lyapunov方程,故离散的Lyapunov方程还可以使用下面的方法求解

B=-inv(A’)

C=Q*inv(A’)

X=lyap(A,B,C)复制代码下面总结下我们上面的讲到的知识点:

X=lyap(A,C)                                 连续Lyapunov方程数值解法

X=lyap2(A,C)                               连续Lyapunov方程符号解法

X=lyap(A,B,C)                                广义Lyapunov方程,即Sylvester方程

X=dlyap(A,Q)或者X=lyap(A,-inv(A’),Q*inv(A’))    离散Lyapunov方程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值