GFD Dennou Club / Dennou Ruby / Tutorials

Title: Ruby/GSL


    Contents


1 Ruby/GSL とは

GSL(GNU Scientific Library) はその名の通り科学技術計算ライブラリで さまざまな数値計算法の関数がたくさん集められています.<URL:http://www.gnu.org/software/gsl/> ANSI C で記述されていて,C や C++ から呼び出せます.

Ruby/GSL は国立天文台の常定さんがメンテナンスしておられる GSL の Ruby ラッパーです. 最新版(2006/03/08 現在) 1.7 では GSL 1.7 の全ての関数を網羅しています. <URL:http://rb-gsl.rubyforge.org>

このチュートリアルでは Ruby/GSL の使用例をお見せします.

2 バイナリパッケージでインストール

ruby-gsl というパッケージが電脳Ruby プロジェクトから提供されています。詳しくはこちら

3 ソースコードからインストール

3.1 plotutils のインストール

まずは gsl で使われている描画ライブラリをインストールします. (rb-gsl に必須ではないらしいのですが, インストールでこけるので一応.) Plotutils 公式ページ(GNU)から

をダウンロードします.

展開した後に, 展開されたディレクトリに移ります. そして

% ./configure

で Makefile を生成します. この時デフォルトのインストールパス(/usr/local/) 以外の場所にインストールしたい場合は

% ./configure --prefix=<インストール先のパス>

などとしましょう. configure が終わったら

% make

します. 時間がかかるので紅茶でも飲んで待ちましょう. 終わったら

# make install

します(場合によってスーパーユーザになってください). 簡単ですね.

3.2 GSL のインストール

GSL 公式ページ(GNU)から

をダウンロードしましょう.

展開した後に, 展開されたディレクトリに移ります. そして plotutils 同様に

% ./configure or ./configure --prefix=<インストール先のパス>
% make
# make install

とします. これで終了です.

3.3 rb-gsl のインストール

次に Ruby/GSL をインストールします. RubyGSL 公式ページの 3. Installation, 2 の Download から <URL:http://rubyforge.org/frs/?group_id=285>に飛びます. ここから

をダウンロードしましょう.

落とした資源を展開して, 展開したディレクトリに移ります.

まずは設定します. NArray を gsl で利用できるようにするには

% ruby setup.rb config -- --with-narray-include=<narray.h's path>

とします. この時 narray.h のパスを陽に指定しなくてはなりません. また plotutils や gsl のインストール先がデフォルトのロードパスにない場合は 以下の様に設定してやらなければなりません.

% export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<インストール先のパス>/lib
% export C_INCLUDE_PATH=$C_INCLUDE_PATH:<インストール先のパス>/include

実行した際に, narray.h がロードされたことを確認したら

% ruby setup.rb setup

とします. 無事終了したら

# ruby setup.rb install

します. ただし, rb_gsl.so が取り残されるかもしれません. その時は手動で

# cd ext; install rb_gsl.so <インストール先のパス>

と実行して移してやります. 以上でインストールは終了です.

それではサンプルを実行してみましょう. サンプルは展開したディレクトリの samples/ 以下にあります. リファレンスマニュアル を眺めつつお好みのプログラムを実行してみましょう.

4 使用例

4.1 EOF 解析

Ruby/SSL2 の例題スクリプトを参考にしています. ただし欠損値は考慮してません.

eof_gsl.rb: GSL::Eigen::symmv(実対称行列の固有値固有ベクトルを求める) の利用

eof.rbeof_gsl.rb で定義した Analysis::eof を呼ぶスクリプト.

eof.rb の実行結果