前回(といってもずいぶん前のことですが)は eigen の基本的な使い方について書きました。
Eigen ー C++で線形代数を!
Eigen ー C++で線形代数を!(2)
今回は連立方程式を解くための一つの方法である LU 分解を eigen から使う方法について書いてみたいと思います。
毎度のことですが、より詳細な情報についてはマニュアルを読んでください。英語ですがわかりやすく書いてあります。ちなみに今回使っている Eigen のバージョンは 3.0 です。
Eigen を使うと非常に簡単に LU 分解を計算することができます。余計なお世話かもしれませんが、こんなに簡単だとついついブラックボックスとして使いがちです。しかし、LU分解による求解は数値解析の観点からはベストの方法であるとは限りません。特に、疎行列のケースでは(CG法系列の)別の解法を使ったほうがよいでしょう。Eigen も sandbox レベルでは BiCG などの疎行列用の解法が存在しています。Eigen の疎行列ライブラリを使って自分で実装してもそんなに問題はないと思います。
いきなり御託を並べてしまいましたが、気を取り直して、先に進みましょう。
続きを読む