0

MATLAB コードを C++ に変換する必要があり、次の手順で行き詰まっています。

a = K\F

ここで、Kはサイズ nxn のスパース行列、 はサイズ nFの列ベクトルです。

Eigen ライブラリを使用して簡単に解決できることはわかっています。このfullPivLu()方法を試してみたところ、Matrix と Vector を使用して、機能するスニペットを作成できました。

ただし、 myKSparseMatrix<double>(whileFVectorXd) です。私の宣言:

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

SparseMatrix にはfullPivLu()メソッドもメソッドもないようlu()です。

実際、ドキュメントから取得したこれら2つの異なるアプローチを試しました。

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

とのメンバーではないため、それらは機能しませfullPivLu()lu()'Eigen::SparseMatrix<_Scalar>'

それで、私は尋ねています:Kが疎行列であるC ++のEigenを使用して、線形方程式系(MATLABのmldivide、または「\」)を解く方法はありますか?

助けてくれてありがとう。

4

1 に答える 1

3

Eigen::SparseLU は役に立ちますか?

于 2013-09-16T15:31:02.267 に答える