枕草子 (My Favorite Things)

【第461回】 数値演算ライブラリ(2001年1月5日)

6:00に起きて妻が購入を予定している実験器具の相談に乗ってから,子どもたちを起こして一緒に食事をし,正月休みの間に溜まった可燃ゴミ2袋を出してから家を発った。相変わらず小雪が舞っていた。長野電鉄で長野駅へ出て,あさま504号には7分間の乗り換え時間があり,ちょうど良かった。この行き方は楽だし時間もかからないが,やはり雪でなければ自転車で行きたいと思う。

今日は,数値演算ライブラリを探索する予定である。シミュレーションなどのプログラムをCで書くとき,既に確立した数値演算ルーチンについては,車輪の再発明をするのも嫌なので,ライブラリを利用したいと思うわけだが,フリーで安心できるものはなかなか見つからない。後で役に立つだろうと思い,検索結果をまとめておくことにした。今回探しているのは,尤度関数が微分不可能なときの最尤法のルーチン,あるいは2変数関数の最小値を与えるパラメータを求める滑降シンプレックス法かPowellの方法のルーチンでもいいのだが,実は今月届くはずの人口学研究に掲載される結果では試行錯誤して得た尤度曲面を目で見て求めたパラメータを,自動的に求めるプログラムを作って公開するためのものである。公開に当たっては,データの形式や使い方も書かねばならないが,小集団での出産間隔データからの出生力の分析には役に立つと思われるので,作る価値はあるだろう。ついでにカプラン=マイヤ法もやらせれば(グリーンウッドの公式で標準誤差も求める),もっと役に立つだろう。学生に実習させるため,15日の講義までには完成させたいと思っているが,間に合うかどうかは微妙なところかもしれない。以下,探索結果を列挙する。

Numerical Recipesのライブラリ(ソースコードは有料)
本の原文はフルテキスト公開されているらしい。Cの他,Fortranのルーチンもある。Cのソースはオンラインで購入可能だが,再配布できるのはそれを組み込んでコンパイルしたユーザーアプリのみ。ソースは,自分で手入力しても再配布できないようなのがネックだと思う。
netlib
使用条件はディレクトリごとに異なると書かれている。ソフトウェアだけでなく,データやドキュメントも含まれている,世界最大の数学ライブラリらしい。問題は,多くのルーチンがFortranで書かれていることである。ライブラリをFortranでコンパイルして,Cのソースにリンクすればいいのかもしれないが,面倒である。
HOOKE
最小二乗法でパラメータを当てはめるだけなら,Cで書かれていてソースが公開されているHookeというものを見つけたのだが,今回の目的には向いていないような気がする。

商用はたくさんあるし,Fortranで書くならnetlibでいいのだが,Cで書かれたライセンスフリーのソース公開のものはほとんど見つからなかったので,馬鹿馬鹿しいが,車輪の再発明みたいなことをしようと思う。といっても,アルゴリズムはより単純なものということで滑降シンプレックス法を使おうと思っているので,やるのはインプリメントだけだから,たいしたことはないが。


関係ないが,今夜はジュラシックパークの続編,ロストワールドのノーカット版が放映されるらしいので,録画しておくといいんじゃないかなと思っている。放映される時間帯には新幹線に乗っている確率が一番高いので,電話で録画を頼まねばならないかもしれない。ジュラシックパークが放映されたときは子どもたちが熱中してみていたので,録画しておけば子守りのときに役に立ちそうな気がするし,きっとやってくれるだろう。さらに関係ないが,昨夜はテレビ東京系でコンタクトが放送されたらしいのを見逃したのだが,先日上野のCDショップでDVDが2000円だったので衝動買いしてしまっており,別に悔しくはない。

夜までかかって最適化以外の部分を1つの関数に書き直すことはできたのだが,最適化のインプリメントができないままに終わった。新年会にも出ずにやったのにケリがつかなかったのは,今ひとつ気分が良くない。長野電鉄に乗るため,今日も21:30の直前にホームに着くように大学を出た。今日はダイヤ通りだった。藤原正彦「心は孤独な数学者」(新潮文庫)を読み進め,読了。本書はニュートン,ハミルトン,ラマヌジャンという3人の大数学者を生み出した風土を数学者藤原正彦が訪ねる旅である。優れた評伝となっているばかりでなく,紀行文としてもすばらしい。


前【460】(仕事始めは(長野では)大雪の日(2001年1月4日) ) ▲次【462】(新年最初の週末(2001年1月6日〜9日) ) ●枕草子トップへ