c++ - 稀疏矩阵乘积的特征求解器

标签 c++ linear-algebra eigen3

我想使用 Eigen 来计算 L_1^{-1}L_2,其中 L_1 和 L_2 都是下三角矩阵,并且在 Eigen 中存储为面向列的稀疏矩阵。 我尝试了 Eigen 三角求解器。但是,这需要 L_2 是密集的。

最佳答案

solve 方法实际上并没有为稀疏 rhs 重载,但是您可以像这样使用 solveInPlace 方法(我实际上并没有尝试这个):

Eigen::SparseMatrix<double> foo(Eigen::SparseMatrix<double> const& L1, Eigen::SparseMatrix<double> const& L2)
{
    Eigen::SparseMatrix<double> res = L2;
    L1.triangularView<Eigen::Lower>().solveInPlace(res);
    return res;
}

您仍然应该考虑是否真的需要完整的矩阵。

关于c++ - 稀疏矩阵乘积的特征求解器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53290521/

相关文章:

c++ - 无法在列表 vector 中使用列表

c++ - 重载分辨率 : assignment of empty braces

python - 如何在没有 numpy 和 scipy 的情况下找到特征向量和特征值?

python - 如何将 np.linalg.solve 映射到矩阵数组并保持速度?

C++ Eigen : How to write a function that can both take a regular (dense) Matrix, 还是 DiagonalMatrix?

c++ - 写入文件,st_mtime 不变

c++ - 当我尝试使用 sstream 和 facet 将 Boost Time_duration 转换为字符串时,我没有得到所需的格式

c++ - 使用 Eigen3 实现 C++ 的最大精度

c++ - numpy 比 eigen 这样的 c++ 线性代数库慢吗?

c++ - 具有 mkl 后端的特征库的系数数组操作的性能