之前介绍的矩阵的三角分解系列介绍了利用矩阵初等变换解决了矩阵三角化问题以及具体的三角分解。但是以初等变换工具的三角分解方法并不能消除病态线性方程组不稳定问题,而且有时候对于可逆矩阵有可能也不存在三角分解。所以后面为了解决这里问题,发展出来了以正交(酉)变换的矩阵的QR(正交三角)分解,矩阵的正交三角分解是一种对任何可逆矩阵均存在理想分解。进行QR分解需要用到施密特(Schmidt)正交规范化,吉文斯(Givens)变换和豪斯霍尔德(Householder)变换等。这里矩阵的QR分解系列教程主要是针对在学习QR分解时候的涉及到的一些细节,包括很多方法的来源和证明等,以及其中用到的一些矩阵操作的基础知识,主要包括:
- [矩阵的QR分解系列一] 施密特(Schmidt)正交规范化
- [矩阵的QR分解系列二] 吉文斯(Givens)变换
- [矩阵的QR分解系列三] 豪斯霍尔德(Householder)变换
- [矩阵的QR分解系列四] QR(正交三角)分解
- [矩阵的QR分解系列五] Eigen中的QR分解
这个系列后面文章会用到前面文章的理论和技术,所以建议按照顺序查看。
简介
上面介绍的都是QR分解的基础知识,可以了解每种QR分解方法具体含义,推导的过程以及适用的范围,有了前面的介绍其实自己去实现相应的QR分解方法也变得非常的简单。但在实际使用过程中,很少自己去实现这种复杂的矩阵QR分解,大部分情况下都是调用现成的矩阵运算的算法库。这里介绍比较常用的矩阵运算库Eigen的QR分解的一些使用方法。
QR分解函数
Eigen库中主要包含下面这些QR函数
分解方法 | Eigen函数 | 适用矩阵 | 分解公式 |
---|---|---|---|
HouseholderQR | Eigen::HouseholderQR | 任意矩阵 | A = Q R A=QR A=QR |
ColPivHouseholderQR | Eigen::ColPivHouseholderQR | 任意矩阵 | A = Q R A=QR A=QR |
FullPivHouseholderQR | Eigen::FullPivHouseholderQR | 任意矩阵 | A = Q R A=QR A=QR |
使用范例
待续~~~