【MATLAB】矩阵运算之矩阵分解

矩阵分解:把一个矩阵分解成为矩阵连乘的形式。


矩阵的分解函数
chol Cholesky分解
cholinc 稀疏矩阵的不完全Cholesky分解
lu 矩阵LU分解
luinc 稀疏矩阵的不完全LU分解
qr 正交三角分解
svd 奇异值分解
gsvd 一般奇异值分解
schur 舒尔分解

在MATLAB中线性方程组的求解主要基于四种基本的矩阵分解。

1、对称正定矩阵的Cholesky分解

用chol()函数实现

1)R=chol(X):其中X是对称正定矩阵,R是上三角矩阵,使得X=R' * R。如果X是非正定矩阵,则结果将返回出错信息。

2)[R,p]=chol(X):返回两个参数,并不会返回错误信息。

     当X是正定对称矩阵时,返回的上三角矩阵R满足X=R' * R,且p=0;

     当X是非正定矩阵时,返回p是正整数,R是上三角形矩阵,其阶数为p-1,并满足X(1:p-1,1:p-1)=R' * R。

考虑线性方程组Ax=b时,可以做Cholesky分解,使得A=R' * R,R' * R*x=b,得到x=R\(R'\b)

>> clear all
>> a=pascal(5)

a =

     1     1     1     1     1
     1     2     3     4     5
     1     3     6    10    15
     1     4    10    20    35
     1     5    15    35    70

>> eig(a)%【对称阵A是正定矩阵的充分必要条件是A的特征值全为正】

ans =

    0.0108
    0.1812
    1.0000
    5.5175
   92.2904

>> R=chol(a)

R =

     1     1     1     1     1
     0     1     2     3     4
     0     0     1     3     6
     0     0     0     1     4
     0     0     0     0     1

>> R'*R

ans =

     1     1     1     1     1
     1     2     3     4     5
     1     3     6    10    15
     1     4    10    20    35
     1     5    15    35    70

2、一般方程的高斯消去法分解(LU分解)

将任意一个方阵分解成一个下三角矩阵L和一个上三角矩阵U的乘积,A=LU,MATLAB中用lu()实现。

[L,U]=lu(X)     (X是一个方阵,L为“心理”下三角矩阵,U为上三角矩阵)

[L,U,P]=lu(X)    (X是一个方阵,L为下三角矩阵,U为上三角矩阵,P为置换矩阵,PX=LU)

Y=lu(X)     (X是一个方阵,把上三角矩阵和下三角矩阵合并在矩阵Y中给出,Y的对角元素为上三角矩阵的对角元素,Y=L+U-I)

考虑线性方程组Ax=b时,可以做LU分解,使得A=LU,L* U*x=b,得到x=U\(L\b)

det(A)=det(L)*det(U)  (det为求行列式命令)

inv(A)=inv(U)*inv(L)    (inv为求匿命令)

>> clear all
>> a=[2 4 5;8 9 6;1 3 5]

a =

     2     4     5
     8     9     6
     1     3     5

>> [l1 u1]=lu(a)

l1 =

    0.2500    0.9333    1.0000
    1.0000         0         0
    0.1250    1.0000         0


u1 =

    8.0000    9.0000    6.0000
         0    1.8750    4.2500
         0         0   -0.4667

>> [l2 u2 p]=lu(a)

l2 =

    1.0000         0         0
    0.1250    1.0000         0
    0.2500    0.9333    1.0000


u2 =

    8.0000    9.0000    6.0000
         0    1.8750    4.2500
         0         0   -0.4667


p =

     0     1     0
     0     0     1
     1     0     0

>> y1=lu(a)

y1 =

    8.0000    9.0000    6.0000
    0.1250    1.8750    4.2500
    0.2500    0.9333   -0.4667

>> l1*u1==a

ans =

     1     1     1
     1     1     1
     1     1     1

>> p*a==l2*u2

ans =

     1     1     1
     1     1     1
     1     1     1


>> l2+u2-eye(3)==y1

ans =

     1     1     1
     1     1     1
     1     1     1

3、舒尔分解

A=U*S*U',用schur()函数实现

U是一个酉矩阵(n阶复方阵U的n个列向量是U空间的一个标准正交基,则U是酉矩阵。显然酉矩阵是正交矩阵往复数域上的推广)

特征值可以由矩阵S的对角块给出,U给出比特征向量更多的数值特征。

>> a=pascal(5)

a =

     1     1     1     1     1
     1     2     3     4     5
     1     3     6    10    15
     1     4    10    20    35
     1     5    15    35    70

>> [u ,s]=schur(a)

u =

    0.1680   -0.5706   -0.7660    0.2429    0.0175
   -0.5517    0.5587   -0.3830    0.4808    0.0749
    0.7025    0.2529    0.1642    0.6110    0.2055
   -0.4071   -0.5179    0.4377    0.4130    0.4515
    0.0900    0.1734   -0.2189   -0.4074    0.8649


s =

    0.0108         0         0         0         0
         0    0.1812         0         0         0
         0         0    1.0000         0         0
         0         0         0    5.5175         0
         0         0         0         0   92.2904


>> u*s

ans =

    0.0018   -0.1034   -0.7660    1.3404    1.6143
   -0.0060    0.1013   -0.3830    2.6528    6.9142
    0.0076    0.0458    0.1642    3.3711   18.9633
   -0.0044   -0.0939    0.4377    2.2789   41.6726
    0.0010    0.0314   -0.2189   -2.2476   79.8179

>> ans*u'

ans =

    1.0000    1.0000    1.0000    1.0000    1.0000
    1.0000    2.0000    3.0000    4.0000    5.0000
    1.0000    3.0000    6.0000   10.0000   15.0000
    1.0000    4.0000   10.0000   20.0000   35.0000
    1.0000    5.0000   15.0000   35.0000   70.0000

4、矩形矩阵的正交分解(QR分解)

把一个mxn的矩阵分解为正交矩阵Q和上三角矩阵R的乘积,A=Q*R

QR分解用函数qr()实现

[Q,R]=qr(A)    (适用于满矩阵和稀疏矩阵)

[Q,R,E]=qr(A)     (R是上三角矩阵,Q是正交矩阵,E为置换矩阵,AE=QR)

R=qr(A)    (返回上三角矩阵R,R=chol(A'*A)) 

猜你喜欢

转载自blog.csdn.net/csdn___csdn/article/details/81052054