矩阵分解

163 阅读3分钟

转载自 link

矩阵的分解

矩阵的分解非常重要,很多时候我们都需要使用到矩阵的分解,这会给我们提供极大的方便,笔者学习这一类问题花费了很多时间,想要看懂这一章,需要先看{% post_link 矩阵的类型及性质 %}

矩阵的特征值分解

要求nnn*n矩阵拥有nn个线性无关的特征向量 矩阵的特征值分解指的是利用特征值构造的矩阵进行分解。特征值与特征向量是这样定义的

若矩阵A,列向量X,常数λ满足AX=λXXA的特征向量,λA的特征值\begin{aligned} &若矩阵A,列向量X,常数\lambda满足 \\&AX = \lambda X \\&则X为A的特征向量,\lambda为A的特征值 \end{aligned}

这里我们注意到如果nnn*n的矩阵AA拥有nn个线性无关的特征向量,我们很容易就可以列出下面的式子:

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\begin{aligned} \\&AX_1 = \lambda_1X_1 \\&AX_2 = K_2X_2 \\&AX_n = \lambda_nX_n \\&每个式子都是列向量,我们把这些式子横着排列成矩阵 \\&[AX_1,AX_2...AX_n] = [\lambda_1X_1,\lambda_2X_2...\lambda_nX_n] \\&提取 \\& A[X_1,X_2...X_n] = [X_1,X_2...X_n]\left[\begin{matrix} &\lambda_1,&,&...&, \\&,&\lambda_2&...&, \\&,&,&...&, \\&,&,&...&\lambda_n \end{matrix}\right] \\& A = [X_1,X_2...X_n]\left[\begin{matrix} &\lambda_1,&,&...&, \\&,&\lambda_2&...&, \\&,&,&...&, \\&,&,&...&\lambda_n \end{matrix}\right][X_1,X_2...X_n]^{-1} \end{aligned}

这就是矩阵的特征值分解了

矩阵的QR分解

要求矩阵列满秩 我们通过Gram-Schmidt正交化手段,可以得到一个所有列向量正交的矩阵,这个过程叫矩阵的正交化 Gram-Schmidt在正交化矩阵A第i个列向量的时候,使用前i-1个已经正交化了的列向量对其进行消除分量,这个过程逆过来看待就是从正交化矩阵到原始矩阵的过程,原始矩阵到正交化矩阵的时候,原始矩阵的前i个列向量线性组合能够得到正交矩阵的第i个列向量,那么,正交矩阵的前i个向量线性组合能够得到原始矩阵的第i个列向量,我们把正交矩阵得到原始矩阵的组合方式用矩阵来表示的话,这个矩阵显然是一个上三角矩阵。那个正交矩阵叫做QQ,上三角矩阵叫做RR,我们就有了A=QRA=QR,QQ其实就是Gram-Schmidt的结果,R不好计算,但是原理都懂,不好模拟,但是在A是方阵的时候,RR我们偷个懒,我们可以这样得到R=Q1A=QTAR=Q^{-1}A=Q^TA

矩阵的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=LUPA = LU , 即A=PTLUA = P^TLU

矩阵的LR分解

无要求 通过初等行变化,将矩阵A变为Hermite型(阶梯矩阵)R,这个过程中,我们可以在A右边增广一个单位阵L,当算法结束的时候R是阶梯型,L也是,我们只保留R的非零行和L相应的列即可,最终A=LRA=LR,且L为列满秩,R为行满秩

矩阵的SVD分解

现在有个n\*mn\*m的矩阵AA,注意到矩阵AHAA^HA是一个厄米特矩阵,且是半正定矩阵,由正规矩阵的性质我们不难得出一个式子VHAHAV=D2V^HA^HAV = D_2,其中VVAHAA^HA的特征向量构成的酉矩阵,D2D_2是对角矩阵,根据半正定矩阵的性质,我们得出D2D_2中的元素非负,进而我们可以构建n\*mn\*m矩阵DDDD只在对角线上的值非零,且D(i,i)=D2(i,i)D(i,i)=\sqrt{D_2(i,i)},使得的D\*DH=D2D\*D^H=D_2,进而我们得到了分解VHAHAV=DHDV^HA^HAV = D^HD,对AVAV来说他的前r个列向量间正交,取出他们{v1,v2...,vr}\{v_1,v_2...,v_r\},这些其实就是AHAA^HA的特征向量,对应的特征值是σi2\sigma_i^2,我们构造ui=Aviσiu_i = \frac{Av_i}{\sigma_i}得到了{u1,u2,...ur}\{u_1,u_2,...u_r\}加0扩充为{u1,u2,...un}\{u_1,u_2,...u_n\}这就是一个酉矩阵U,不难发现AV=UDAV=UD,即我们得到了分解A=UDVHA = UDV^H,这就是SVDSVD分解。

方阵的极分解

根据矩阵的SVDSVD分解我们不妨设P=UDUHP=UDU^HQ=UVHQ=UV^H,不难发现,现在A=PQA=PQ,这是一个非常好的性质,P是半正定矩阵,Q是酉矩阵。

其实矩阵还有很多很多其他的分解,这里先留一个坑