我需要将MATLAB代码转换为C ++,我仍然坚持使用这条指令:
a = K\F
,其中K
是大小为n x n的稀疏矩阵,F
是大小为n的列向量。
我知道使用Eigen库很容易解决 - 我尝试了fullPivLu()
方法,并且我已经能够使用Matrix和Vector构建一个工作片段。
但是,我的K
是SparseMatrix<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>'
的成员
所以,我问:有没有办法解决线性方程组(MATLAB的mldivide,或'\'),使用Eigen for C ++,K是稀疏矩阵?
感谢您的帮助。
答案 0 :(得分:3)
Eigen :: SparseLU会为你工作吗?