MATLAB コードを C++ に変換する必要があり、次の手順で行き詰まっています。
a = K\F
ここで、K
はサイズ nxn のスパース行列、 はサイズ nF
の列ベクトルです。
Eigen ライブラリを使用して簡単に解決できることはわかっています。このfullPivLu()
方法を試してみたところ、Matrix と Vector を使用して、機能するスニペットを作成できました。
ただし、 myK
はSparseMatrix<double>
(whileF
はVectorXd
) です。私の宣言:
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、または「\」)を解く方法はありますか?
助けてくれてありがとう。