矩阵方程的计算求解(Matlab实现)

摘要:
该方程又称为广义的Lyapunov方程。仍然可以用Matlab中控制系统工具箱中的lyap函数直接求解该方程。matlab代码:A=[123;241;461];B=[235;275;543];C=-[342;324;209];X=lyapnorm%结果:X=-9.565110.3207-4.32181.4515-1.71021.38439.9199-9.72104.2467ans=3.9005e-1412345678910111213141516171819三、Riccati方程的计算求解Riccati方程是一类很著名的二次型矩阵方程式,其一般形式为:A*X+XA-XBX+C=0%A*是A的转置矩阵1由于含有未知矩阵X的二次项,所以Riccati方程的求解数学上要比Lyapunov方程更难。

一、Lyapunov方程的计算求解
1、连续Lyapunov方程
连续Lyapunov方程可以表示为:

AX + XA* = -C % 其中A*是A的转置
1
Lyapunov方程源于微分方程稳定性理论,其中要求-C为对称正定的nxn矩阵,从而可以证明解X亦为nxn对称矩阵。Lyapunov类的方程求解是很困难的,可以利用Matlab控制系统工具箱中提供的lyap函数求解,调用格式为

X = lyap(A, C)
1
matlab代码:

A = [1 2 3;4 5 6;7 8 0]; C = -[10 5 4;5 6 7;4 7 9];
X = lyap(A, C)
norm(A*X + X*A' + C) % 验证解的情况

% 结果:
>> Matrix_equation

X =

-3.9444 3.8889 0.3889
3.8889 -2.7778 0.2222
0.3889 0.2222 -0.1111

ans =

2.3211e-14

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2、Lyapunov方程的解析解

3、离散 Lyapunov方程
离散Lyapunov方程可以表示为:

AXA* - X + Q = 0 % 其中A*是A的转置矩阵
1
该方程可以由MATLAB控制系统工具箱的dlyap函数直接求解。该函数的调用格式为:

X = dlyap(A, Q)
1
matlab代码为:

A = [1 2 3;4 5 6;7 8 0]; Q = -[10 5 4;5 6 7;4 7 9];
X = dlyap(A, Q)
norm(A*X*A'- X + Q) % 精度验证

% 结果:

X =

-2.8439 3.2500 -3.0501
3.2500 -3.3780 2.8107
-3.0501 2.8107 -0.5462

ans =

7.6172e-14

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
二、Sylvester方程的计算求解
Sylvester方程的一般形式为:

AX + XB = -C
1
其中,A为nxn矩阵,B为mxm矩阵,C和X均为nxm矩阵。该方程又称为广义的Lyapunov方程。仍然可以用Matlab中控制系统工具箱中的lyap函数直接求解该方程。函数的一般调用格式为:

X = lyap(A,B,C)
1
该函数采用的是Schur分解的数值解法求解方程。
matlab代码:

A = [1 2 3;2 4 1;4 6 1];
B = [2 3 5;2 7 5;5 4 3];
C = -[3 4 2;3 2 4;2 0 9];
X = lyap(A, B, C)
norm(A*X + X*B + C )

% 结果:

X =

-9.5651 10.3207 -4.3218
1.4515 -1.7102 1.3843
9.9199 -9.7210 4.2467

ans =

3.9005e-14

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
三、Riccati方程的计算求解
Riccati方程是一类很著名的二次型矩阵方程式,其一般形式为:

A*X + XA - XBX + C = 0 % A*是A的转置矩阵
1
由于含有未知矩阵X的二次项, 所以Riccati方程的求解数学上要比Lyapunov方程更难。Matlab的控制系统工具箱提供了现成函数are,调用形式如下:

X = are(A, B, C)
1
matlab代码:

A = [1 2 3;2 4 1;4 6 1];
B = [-2 3 5;2 7 5;5 4 3];
C = [3 4 2;3 2 4;2 0 9];
X = are(A, B, C)
norm(A'*X + X*A - X*B*X + C)

% 结果:

X =

-0.1180 1.4662 -0.6059
0.4316 1.4014 0.0150
0.9982 -0.4684 2.0600

ans =

3.2899e-14
————————————————
版权声明:本文为CSDN博主「Alicewhale」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yuanchengzhizuishuai/java/article/details/99547923

免责声明:文章转载自《矩阵方程的计算求解(Matlab实现)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇python(数字Number)thinkphp5 连接SQLserver下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

win10系统matlab64位环境下安装libsvm工具箱

1. 前言 之前在win10系统matlab64环境下环安装libsvm工具箱安装了好久都没有成功,今天通过阅读牛人的一些博客,终于配置成功并且可以顺利使用,所以特写博客分享之。 2. 工具准备 所需要安装的软件:matlab R2014a , SDK7.1(GRMSDKX_EN_DVD),VC-Compiler-KB2519277 matlab安装这里就...

【试题汇总】图像处理职位面试题汇总(1)

Matlab编程部分 1. Matlab 中读、写及显示一幅图像的命令各是什么? 解:第一、Matlab中读图像函数是imread( )。imread 函数用于读入各种图像文件,其一般的用法为:[X,MAP]=imread(‘filename’,‘fmt’) 其中,X,MAP分别为读出的图像数据和颜色表数据,fmt为图像的格式,filename为读取的...

mysql(2)—— 由笛卡尔积现象分析数据库表的连接

首先,先简单解释一下笛卡尔积。 现在,我们有两个集合A和B。 A = {0,1}     B = {2,3,4} 集合 A×B 和 B×A的结果集就可以分别表示为以下这种形式: A×B = {(0,2),(1,2),(0,3),(1,3),(0,4),(1,4)}; B×A = {(2,0),(2,1),(3,0),(3,1),(4,0),(4,1)};...

python科学计算_numpy_线性代数/掩码数组/内存映射数组

1. 线性代数 numpy对于多维数组的运算在默认情况下并不使用矩阵运算,进行矩阵运算可以通过matrix对象或者矩阵函数来进行; matrix对象由matrix类创建,其四则运算都默认采用矩阵运算,和matlab十>分相似: a = np.matrix([[1,2,3],[4,5,6],[7,8,9]]) matrix([[1, 2, 3],[4,...

matlab中plot使用方法

MATLAB有非常强的图形功能,能够方便地实现数据的视觉化。强大的计算功能与图形功能相结合为MATLAB在科学技术和教学方面的应用提供了更加广阔的天地。以下着重介绍二维图形的画法,对三维图形仅仅作简单叙述。 5.1 二维图形的绘制 5.1.1 基本形式 二维图形的绘制是MATLAB语言图形处理的基础,MATLAB最经常使用的画二维图形的命令是p...

字符串与模式匹配算法(六):Needleman–Wunsch算法

一、Needleman-Wunsch 算法尼德曼-翁施算法(英语:Needleman-Wunsch Algorithm)是基于生物信息学的知识来匹配蛋白序列或者DNA序列的算法。这是将动态算法应用于生物序列的比较的最早期的几个实例之一。该算法是由 Saul B. Needlman和 Christian D. Wunsch 两位科学家于1970年发明的。本算...