0

我需要将 MATLAB 代码转换为 C++,并且我坚持使用以下指令:

a = K\F

,其中K是大小为 nxn 的稀疏矩阵, 是大小为 nF的列向量。

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

但是, myK是 a SparseMatrix<double>(whileF是 a 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>'

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

感谢您的任何帮助。

4

1 回答 1

3

Eigen::SparseLU 会为你工作吗?

于 2013-09-16T15:31:02.267 回答