行列計算様ライブラリ Eigen

行列の固有値を求めるためのライブラリーが欲しくて少し調べて見たのですが、
導入の簡単さからEigenを使うことにしました。
この記事はその時の覚え書きです。

gccの使用を前提にしています。

本家へのリンクは、
http://eigen.tuxfamily.org/index.php?title=Main_Pageから。

インストール

wget http://bitbucket.org/eigen/eigen/get/3.0.1.tar.bz2

とするか本家から本体をダウンロードしましょう。
あとは解凍して適当な場所に置けば準備完了です。

Eigenはc++のヘッダーファイルのみから構成されておりコンパイル時にこれをインクルードするだけで使うことができます。

コンパイルの仕方

置いた場所によっては、コンパイル時にパスを通す必要があります。
例えば、解凍したファイルが ~/Downloads/ にあって、eigen-eigen-599fcf7c736という名前でかつgccを使ってコンパイルするなら

gcc hoge.cpp -o hoge -I ~/Downloads/eigen-eigen-599cf736

とします。

テスト

本家のドキュメントhttp://eigen.tuxfamily.org/dox/で最初に紹介されているプログラムを試して見ます。

#include <iostream>
#include <Eigen/Dense>

using Eigen::MatrixXd;

int main()
{
  MatrixXd m(2,2);
  m(0,0) = 3;
  m(1,0) = 2.5;
  m(0,1) = -1;
  m(1,1) = m(1,0) + m(0,1);
  std::cout << m << std::endl;
}

これを例えば test.cpp という名前で保存して

g++ test.cpp -o test -I ~/Downloads/eigen-eigen-599fc4f7c736

コンパイル

./test

で実行されます。

  3  -1
2.5 1.5

と表示されれば成功です。
さっそチュートリアルhttp://eigen.tuxfamily.org/dox/TutorialMatrixClass.htmlをやって見ましょう!