c++ - 我可以使用 Eigen 求解线性方程组,形式为 Ax = b,A 是稀疏的吗?

标签 c++ linear-algebra sparse-matrix eigen

我需要将 MATLAB 代码转换成 C++,但我坚持使用这条指令:

a = K\F

,其中 K是一个大小为 n x n 的稀疏矩阵,F是大小为 n 的列 vector 。

我知道使用 Eigen 库很容易解决这个问题 - 我试过 fullPivLu()方法,我已经能够使用 Matrix 和 Vector 构建一个工作片段。

但是,我的KSparseMatrix<double> (而 F 是一个 VectorXd )。我的声明:

SparseMatrix<double> K(nec, nec);   
VectorXd F(nec);

似乎 SparseMatrix 没有 fullPivLu()方法,也不是 lu()一个。

事实上,我已经尝试了这两种不同的方法,取自文档:

//1.
MatrixXd x = K.fullPivLu().solve(F);
//2.
VectorXf x;
K.lu().solve(F, &x);

它们不起作用,因为 fullPivLu()lu()不是 'Eigen::SparseMatrix<_Scalar>' 的成员

所以,我想问:有没有办法使用 C++ 的 Eigen 求解线性方程组(MATLAB 的 mldivide,或“\”),其中 K 是一个稀疏矩阵?

感谢您的帮助。

最佳答案

Eigen::SparseLU 适合你吗?

关于c++ - 我可以使用 Eigen 求解线性方程组,形式为 Ax = b,A 是稀疏的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18831716/

相关文章:

c++ - CUDA:同步全局内存读写与计算能力 1.1

c++ - 将 float 写入和读取二进制文件时的不同值

python - 稀疏与密集向量 PySpark

c++ - boost multi_index_container中modify和modify_key的区别

python - 使用python增加数组的维数

opencv - 3D 相机坐标到世界坐标(改 rebase 础?)

sql - 使用 SQL 获取表的 "transpose"

matrix - 在非常大的稀疏矩阵上聚类?

scipy - 如何使用 Scipy 处理巨大的稀疏矩阵构造?

c++ - Win32 API : Creating file public for current user but private for everyone else