参考资料:
- LU分解,维基百科
矩阵分解是指将一个矩阵表示为结构简单或具有特殊性质若干矩阵之积或之和。矩阵分解应用极广,常用来解决代数中解决各种复杂的问题。大体可以分为:
如果一个方阵 A A 可以表示为一个下三角矩阵 L L 和一个上三角矩阵 U U 的乘积,即
则称 A A 可做三角分解。 LU L U 分解在本质上是高斯消元法的一种表达形式。实质上是将 A A 通过初等行变换变成一个上三角矩阵,其变换矩阵就是一个单位下三角矩阵。这正是所谓的杜尔里特算法(Doolittle algorithm)
从下至上地对矩阵 A A 做初等行变换,将对角线左下方的元素变成零,然后再证明这些行变换的效果等同于左乘一系列单位下三角矩阵,这一系列单位下三角矩阵的乘积的逆就是L矩阵,它也是一个单位下三角矩阵。
对给定的 N×N N × N 矩阵 A A
初始化: A0=(an,n)=A A 0 = ( a n , n ) = A
然后定义对于 n=1,⋯,N−1 n = 1 , ⋯ , N − 1 的情况,每一次都消去矩阵 An−1 A n − 1 的第 n n 列主对角线下的元素,每消一个元相当于左乘了一个初等矩阵,消完第 n n 列主对角线下 元素相当于左乘了一个下述单位下三角矩阵:
于是,定义: An=LnAn−1 A n = L n A n − 1 ,其中
经过 N−1 N − 1 轮操作后,所有在主对角线下的系数都为 0 了,于是我们得到了一个上三
角矩阵: AN−1 A N − 1 ,这时就有:
令 L=L−11⋯L−1N−1,U=AN−1 L = L 1 − 1 ⋯ L N − 1 − 1 , U = A N − 1 ,则分解得证。显然能正常分解一般要求
即前 N−1 N − 1 个顺序主子式不等于零(否则消元后主对角还为零则需要交换两行——对应
着另外一种置换初等矩阵,这种初等矩阵可不是下三角的哦~)
这类算法的复杂度一般在 2n33 2 n 3 3 左右,对充分消元的分解则不然。
首先最为简单直白的遍历自然是行列式的求解:
实际上还可以引申出高斯约当消去法来求解矩阵的逆,实际上 matlab 就是利用这个原理来求解大部分矩阵的逆的。
矩阵的 QR Q R 分解是指,如果实非奇异矩阵 A A 可以表示为
其中 Q Q 为正交矩阵, R R 为实非奇异上三角矩阵。其实际算法多种多样,有 Schmidt 正交方法,Givens 方法和 Household 方法,各有优劣。下面简单介绍Household 方法的 QR Q R 分解
此方法利用反射矩阵,即 Householder 矩阵
其中 u u 是单位向量, H H 是正交矩阵, det(A)=−1 d e t ( A ) = − 1 。可以证明两个 H H 矩阵的乘积就是 Givens 矩阵,并且任何实非奇异矩阵 A A 可以通过连乘 H H 阵化为上三角矩阵 R R 。则 A=QR A = Q R 。
矩阵的 QR Q R 分解可以用来解决线性最小二乘问题,也可以用来降低矩阵求逆的代价。因为正交矩阵的转置就是其逆 ,这是其他的矩阵分解无法比拟的。
可以看到上述两种分解都要求是方阵,这便使得下面的满秩分解与奇异值分解有了特殊的意义。
满秩分解也称为最大秩分解。满秩分解是指:把秩为 r r 的 m×n m × n 的矩阵 A A 分解为 A=FG A = F G ,其中 F F 为秩为 r r 的 m×r m × r 阶矩阵, G G 为秩为 r r 的 r×n r × n 阶矩阵。这由初等变换是很显然的。
其最有用的一个结论是:对于任意的非奇异矩阵 Q Q 和置换矩阵 P P ,使得
矩阵的奇异值分解是在线性代数中一种重要的矩阵分解,在最优化问题、特征值问题、最小二乘问题、广义逆问题以及统计学问题,中都有重要应用
对秩为 r r 的 m×n m × n 的矩阵 A A 进行奇异值分解的步骤依次是:
Step 1: 求得 ATA A T A 的特征值 γ1,γ2,⋯,γn γ 1 , γ 2 , ⋯ , γ n 及对应的特征向量并正交单位化得到矩阵 V V 使得
其中 M=diag(γ1,γ2,⋯,γn) M = d i a g ( γ 1 , γ 2 , ⋯ , γ n ) 。
一般矩阵 A A 做不到总是可逆,但是复矩阵 ATA A T A 总是可逆的,也可以做特征值分解。可以说奇异值分解一定程度上推广了特征值分解
Step 2: 将 V V 的前 r r 列作为 V1 V 1 ,令 U=A(VT1)−1 U = A ( V 1 T ) − 1 ,再扩张 U1 U 1 成 m m 阶的矩阵 U U 。
Step 3: 那么
实例上线中,未完待续~