1
4—6 矩阵分解的Matlab 命令
2
(1)矩阵的LU 分解
(2)矩阵的QR 分解(3 )矩阵的Cholesky 分解(4) 矩阵的奇异值分解(5)矩阵的特征值分解(6) 矩阵的Schur 分解(7) 矩阵的Jordan 标准型分解
3(1)矩阵的LU 分解
在Matlab 中用函数lu 来实现矩阵的LU 分解,其命令格式为:[L, U]=lu(X)
说明:U 矩阵为上三角矩阵,满足X=L*U.
4
[L,U,P]=lu(X)
说明:返回的P 矩阵是置换矩阵,矩阵U 是上三角矩阵,矩阵L 满秩矩阵,满足L*U=P*X.
5例4.1
>>a=[1,2,4;2,-1,5;-1,10,4];>> [b,c,p]=lu(a)运行结果:b =
1.0000 0 0-0.5000 1.0000 00.5000 0.2632 1.0000
6
c =
2.0000 -1.0000 5.00000 9.5000 6.50000 0 -0.2105p =0 1 00 0 11 0 0
7
(2)矩阵的QR 分解
在Matlab 中,矩阵的QR 分解可由函数qr 来实现,其常用的调用格式如下:①[B,C]=qr(A)
说明:返回的C 矩阵为上三角矩阵,矩阵B 为满秩矩阵。
[Q,R,E]=qr(A)
说明:返回的矩阵E 是置换矩阵,矩阵R 是上三角矩阵,矩阵Q 是满秩矩阵,上述矩阵满足关系A*E=Q*R.
8
例4.2
>> a=[1,2,4;2,-1,5;-1,10,4];>> [b,c,e]=qr(a)运行结果:b =
-0.1952 -0.5068 -0.83970.0976 -0.8619 0.4976-0.9759 0.0152 0.2177
9
c =
-10.2470 -4.1964 0.9759
0 -6.2762 -2.24580 0 -0.0622e =0 0 11 0 00 1 0
10
(3 )矩阵的Cholesky 分解
在Matlab 中用函数chol 对矩阵进行Cholesky 分解,函数chol 的调用格式为:1.R=chol(X)
说明:矩阵X 必须是正定矩阵,否则会返回错误信息,返回的矩阵R 是上三角矩阵。
2.[R,p]=chol(X)
说明:此调用格式不管矩阵X 是否正定,都不会返回错误信息。
如果矩阵X 正定,则返回上三角矩阵R, p 为零;如果矩阵X 非正定,则返回的矩阵R 也是上三角矩阵,但p 为正数。
11例4.4
>> a=[3,-1,1;-1,5,2;1,2,4];>> b=chol(a)运行结果:b =
1.7321 -0.5774 0.57740
2.1602 1.08010 0 1.5811
12
(4) 矩阵的奇异值分解
在Matlab 中,矩阵的奇异值分解则由函数svd 来实现,其调用格式为:[b,c,d]=svd(A)
说明:返回的矩阵b 为左奇异矩阵,矩阵d 为右奇异矩阵,矩阵c 为奇异值矩阵。
例4.5
>> a=[1,2,4;2,-1,5;-1,10,4];>> [b,c,d]=svd(a)
13运行结果:b =
0.3249 0.4385 -0.83800.1393 0.8542 0.50100.9354 -0.2795 0.2164c =
11.4170 0 00 6.1359 00 0 0.0571
14
d =
-0.0291 0.3954 -0.91800.8640 -0.4518 -0.22200.5026 0.7997 0.3285
15
(5) 矩阵的特征值分解
Matlab 中求矩阵的特征值的函数是eig 和eigs ,其中函数eigs 主要用于稀疏矩阵。
函数eig 主要有以下几种调用格式:1.D=eig(A)
说明:矩阵D 为矩阵A 的特征向量矩阵。
2.D=eig(A,B)
说明:矩阵D 为矩阵A,B 的广义特征向量矩阵。
3.[V,D]=eig(A)
说明:矩阵V,D 为矩阵A 的特征值矩阵和特征向量矩阵。
16
4.[V,D]=eig(A ,‘nobalance’)
说明:‘nobalance’表示在求矩阵A 的特征值矩阵和特征向量矩阵时禁止“平衡”程序的运行。
当矩阵A 中有元素小到与截断误差相当时,这样做可以减少计算的误差。
5.[V,D]=eig(A,B)
说明:矩阵V,D 为矩阵A,B 的广义特征值矩阵和特征向量矩阵,满足A*V=B*V*D.
17
6.[V,D]=eig(A,B,flag)
说明:使用某种确定的分解算法来计算矩阵的特征值和特征向量,参数flag 可以取”chol”或”qz”。
当参数flag 取”chol”时,表示对B 使用乔累斯基分解算法来计算矩阵A,B 的特征值和特征向量,若矩阵A 为对称矩阵,矩阵B 为对称正定矩阵,此算法为默认算法;当参数flag 取”qz”时,则忽略对称性。
18
例4.6
>> B=[3,-2,-0.9,2*eps;-2,4,-1,-eps;-eps/4,eps/2,-1,0;-0.5,-0.5,0.1,1];>> [VB,DB]=eig(B)运行结果:VB =
0.6153 -0.4176 -0.0000 -0.3305-0.7881 -0.3261 -0.0000 -0.2949-0.0000 -0.00000.0000 -0.81360.0189 0.8481 1.0000 -0.3765
19DB =
5.5616 0 0 00 1.4384 0 00 0 1.0000 00 0 0 -1.0000
20
(6) 矩阵的Schur 分解
Matlab 中矩阵的Schur 分解用函数schur 来实现,其调用格式为:[b,c]=schur(A)
说明:矩阵c 为Schur 矩阵。
例4.7
>> a=[1,2,4;2,-1,5;-1,10,4];>> [b,c]=schur(a)
21
运行结果:b =
-0.2204 -0.9719 0.0821-0.6821 0.2138 0.69940.6973 -0.0981 0.7100c =
-5.4654 3.9074 3.79090 0.0780 -4.51230 0 9.3874
22
(7) 矩阵的Jordan 标准型分解
Matlab 中矩阵的jordan 标准型分解用函数jordan 来实现,其调用格式为:[V,J]=jordan(A)
说明:返回的矩阵V 为矩阵A 的相似变换矩阵,矩阵J 为矩阵A 的jordan 标准型。
>> a=[1,2,4;2,-1,5;-1,10,4];>> [V,J]=jordan(a)
23
运行结果:V =
0.0431 + 0.0000i -0.0939 -0.0000i 1.0508 -0.0000i 0.0418 -0.2907 + 0.0000i 0.2489 + 0.0000i 0.0695 -0.0000i 0.2971 -0.0000i -0.3667 + 0.0000i J =
9.3874 0 0 0 -5.4654 -0.0000i
0 0 0.0780 + 0.0000i。