我需要将 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 是稀疏矩阵?
感谢您的任何帮助。