inverse」タグアーカイブ

小さなサイズのEigen::MatrixXfのinverse()が遅い

c++の線形代数ライブラリのEigenをよく使うのですが,前々から小さなサイズの動的行列の逆行列を求める処理が重いことが気になっていました.
以下のページを見て,てっきり動的行列でもサイズが小さければ公式を使って逆行列を求めるのかと思っていたのですが,よくよく見ると固定サイズでないと公式を使った計算は行わないと書いていて,実装を見てみると動的行列では必ず(1×1を除いて) partialPivLu を使って逆行列を求めているようでした.
http://eigen.tuxfamily.org/dox/group__TutorialLinearAlgebra.html

LinearSolverのsolve()を使えとか,サイズが小さい時は固定サイズを使えということなんでしょうが,やっぱりプログラム上どうしても動的行列の逆行列が欲しい場面はあるわけで,そのようなケースのために次のようなコードを書いてみました.

続きを読む