在这个 StackOverflow 答案中,@Gokul 展示了如何借助“特征”函数获得矩阵内核的基础 CompleteOrthogonalDecomposition。矩阵的完全正交分解与该矩阵的所谓URV 分解有关。我不知道这个话题。我在某处读到 URV 分解还允许获取矩阵的图像(范围或跨度)。我想知道如何使用Eigen::CompleteOrthogonalDecomposition来获得矩阵图像的基础。
矩阵完全正交分解的范围
计算科学
线性代数
C++
矩阵分解
本征
2021-12-16 07:16:12
1个回答
我知道了。
template <typename Number> // e.g. double or complex
Eigen::Matrix<Number, Eigen::Dynamic, Eigen::Dynamic> image_COD(
const Eigen::Matrix<Number, Eigen::Dynamic, Eigen::Dynamic>& M) {
Eigen::CompleteOrthogonalDecomposition<
Eigen::Matrix<Number, Eigen::Dynamic, Eigen::Dynamic>> cod(M);
const Eigen::Matrix<Number, Eigen::Dynamic, Eigen::Dynamic> Q =
cod.householderQ();
return Q.leftCols(cod.rank());
}
它比 QR 方法稍慢,但优点是可以从这种分解中获得内核和范围。LU 方法更快,但不返回正交基。
其它你可能感兴趣的问题