我能解决一个线性方程组,形式为Ax = b,A是稀疏的,使用Eigen?

时间:2013-09-16 15:25:32

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

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

a = K\F

,其中K是大小为n x n的稀疏矩阵,F是大小为n的列向量。

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

但是,我的KSparseMatrix<double>(而FVectorXd)。我的声明:

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是稀疏矩阵?

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

Eigen :: SparseLU会为你工作吗?