转载自 link
矩阵的分解
矩阵的分解非常重要,很多时候我们都需要使用到矩阵的分解,这会给我们提供极大的方便,笔者学习这一类问题花费了很多时间,想要看懂这一章,需要先看{% post_link 矩阵的类型及性质 %}
矩阵的特征值分解
要求n∗n矩阵拥有n个线性无关的特征向量
矩阵的特征值分解指的是利用特征值构造的矩阵进行分解。特征值与特征向量是这样定义的
若矩阵A,列向量X,常数λ满足AX=λX则X为A的特征向量,λ为A的特征值
这里我们注意到如果n∗n的矩阵A拥有n个线性无关的特征向量,我们很容易就可以列出下面的式子:
AX1=λ1X1AX2=K2X2AXn=λnXn每个式子都是列向量,我们把这些式子横着排列成矩阵[AX1,AX2...AXn]=[λ1X1,λ2X2...λnXn]提取A[X1,X2...Xn]=[X1,X2...Xn]⎣⎡λ1,,,,,λ2,,............,,,λn⎦⎤A=[X1,X2...Xn]⎣⎡λ1,,,,,λ2,,............,,,λn⎦⎤[X1,X2...Xn]−1
这就是矩阵的特征值分解了
矩阵的QR分解
要求矩阵列满秩
我们通过Gram-Schmidt正交化手段,可以得到一个所有列向量正交的矩阵,这个过程叫矩阵的正交化
Gram-Schmidt在正交化矩阵A第i个列向量的时候,使用前i-1个已经正交化了的列向量对其进行消除分量,这个过程逆过来看待就是从正交化矩阵到原始矩阵的过程,原始矩阵到正交化矩阵的时候,原始矩阵的前i个列向量线性组合能够得到正交矩阵的第i个列向量,那么,正交矩阵的前i个向量线性组合能够得到原始矩阵的第i个列向量,我们把正交矩阵得到原始矩阵的组合方式用矩阵来表示的话,这个矩阵显然是一个上三角矩阵。那个正交矩阵叫做Q,上三角矩阵叫做R,我们就有了A=QR,Q其实就是Gram-Schmidt的结果,R不好计算,但是原理都懂,不好模拟,但是在A是方阵的时候,R我们偷个懒,我们可以这样得到R=Q−1A=QTA
矩阵的LU分解
矩阵的LU分解要求,可逆方阵
即将矩阵A分解为LU,L是下三角矩阵,U是上三角矩阵,大家手动模拟一下就知道怎么处理了,这里开个头,A(0,0)只能有L(0,0)*U(0,0)得到,通常我们假设L(0,0)=1,然后类似于这种,再考虑L的第二行和R的第二列,这时候,所有的值都是固定的了。。。这个过程中如果A对角线出现了0,记录初等行互换就行了,这时候我们的行互换会构成一个矩阵P,即PA=LU , 即A=PTLU
矩阵的LR分解
无要求
通过初等行变化,将矩阵A变为Hermite型(阶梯矩阵)R,这个过程中,我们可以在A右边增广一个单位阵L,当算法结束的时候R是阶梯型,L也是,我们只保留R的非零行和L相应的列即可,最终A=LR,且L为列满秩,R为行满秩
矩阵的SVD分解
现在有个n\*m的矩阵A,注意到矩阵AHA是一个厄米特矩阵,且是半正定矩阵,由正规矩阵的性质我们不难得出一个式子VHAHAV=D2,其中V是AHA的特征向量构成的酉矩阵,D2是对角矩阵,根据半正定矩阵的性质,我们得出D2中的元素非负,进而我们可以构建n\*m矩阵D,D只在对角线上的值非零,且D(i,i)=D2(i,i),使得的D\*DH=D2,进而我们得到了分解VHAHAV=DHD,对AV来说他的前r个列向量间正交,取出他们{v1,v2...,vr},这些其实就是AHA的特征向量,对应的特征值是σi2,我们构造ui=σiAvi得到了{u1,u2,...ur}加0扩充为{u1,u2,...un}这就是一个酉矩阵U,不难发现AV=UD,即我们得到了分解A=UDVH,这就是SVD分解。
方阵的极分解
根据矩阵的SVD分解我们不妨设P=UDUH和Q=UVH,不难发现,现在A=PQ,这是一个非常好的性质,P是半正定矩阵,Q是酉矩阵。
其实矩阵还有很多很多其他的分解,这里先留一个坑