A = LU
这实际上就是我们解矩阵方程组一般使用的方式,比如方程组是:
我们一般把它写成增广矩阵:
然后化简成阶梯型矩阵的形式,这个时候可以方便的算出
如果我们实际来 coding,可能会出现的问题:
解决的办法就是行交换,把比较大的pivot放在前面。其实这个我们手动解
这个方法叫做 Gaussian elimination with partial pivoting (GEPP). 实际上 Matlab 中用的一般也就是这个办法来解
比如矩阵:
>>
A = QR
Q 代表的是正交矩阵,这里的 R 是 upper triangle 矩阵:
>>
我们可以通过 Gram–Schmidt 完成 QR 分解。
正交矩阵当然是具有很多很好特性的矩阵,比如:
-
- det(Q) = ±1, 如果 det(Q) = 1 则为旋转变换,说起旋转变换又会想到SO(n) 李群和李代数
- 可以给我们提供一组正交基
当矩阵是一个实对称矩阵S(symmetric)的时候,我们可以把它分解成:
正交矩阵Q、 对角矩阵Λ(特征值)、正交矩阵的转置
这个分解叫特征分解(Eigendecomposition),又称谱分解(Spectral decomposition),因为 Q 中是特征向量, Λ 中是特征值,
当然在 Matlab中我们还是用 [V, D] = eig(S) 可以得到它的对应矩阵 Q 和 Λ.
>>
SVD - 奇异值分解(singular value decomposition),之前写过PCA(主成分分析) 和 SVD (奇异值分解)。
Matlab 中使用:
>>
Cholesky分解,当 A 是一个SPD (real Symmetric positive definite matrix)的时候,我们可以把它分解成 lower triangle 矩阵 L 和它的转置也就是 upper triangle
>>
如果 A 可以对角化,那么 A 可以分解成