QR分解将一个m x m的矩阵A分解为一个正交矩阵Q与一个上三角阵R之积。常常利用Householder变换来进行QR分解的计算。
Householder变换可以将一个向量某一维度之外的其他维度化为0.以一个3 x 3的矩阵A为例。为了便于描述,假定*代表没有变化的元素,+为变换的元素,带有下标的H代表一个Householder变换。
则
H为一正交矩阵,,令,
得到:
RQ分解将m x m的矩阵A分解为一个上三角阵R与一个正交矩阵Q之积。通过一定的变换,RQ分解可以由QR分解得到。同样以3 x 3的矩阵A为例。
实际上,将一个矩阵左乘P相当于将矩阵上下颠倒,将一个矩阵右乘P相当于将矩阵左右颠倒。以3x3的矩阵M为例,分别左乘P和右乘P:
RQ分解可以按照以下步骤进行计算:
Step1 计算
Step2 对进行QR分解,得到
将Step1中的式子代入Step2中,得到
那么
那么
那么
但是,注意是一个上三角阵,则变为一个下三角阵。此时P矩阵又可以发挥作用了,对一个下三角阵,先左右翻转,再上下翻转就可以得到一个上三角阵。大家可以以3x3的情况为例,尝试推导一下是一个上三角矩阵。
同时,,那么
则,。顺利将A矩阵分解成一个上三角矩阵R与一个正交矩阵Q。
SVD分解将m x n的矩阵A分解为一个m阶的正交矩阵U、一个非负对角阵Σ和一个n阶的正交矩阵VT。用式子表示:
SVD分解的步骤总结如下:
Step1 计算并进行特征分解,得到特征值和对应的特征向量,按特征值从大到小的顺序将特征向量组合成U矩阵。
Step2 计算并进行特征分解,得到特征值和对应的特征向量,按特征值从大到小的顺序将特征向量组合成矩阵。
Step3 将Step1或Step2中的特征值从大到小排序,并开方,依次填入。
计算的例子参考参考中的例子。
RQ分解可以用于从相机矩阵P分解出内外方位元素。
SVD可以用来做压缩和信息提取,也可以用来进行最小二乘问题的求解。对于近病态的矩阵,直接求逆的结果极不稳定,这对于我们处理问题是极其不利的,而SVD可以解决这一个问题。
利用QR分解做RQ分解:https://math.stackexchange.com/questions/1640695/rq-decomposition
SVD分解的例子https://byjiang.com/2017/11/18/SVD/