研究

ある種の計算で行き詰まっていたが、少しやり方を変えたら進み始めた。今まではMathematicaでしか計算していなかったが、Fortran77でやる事にした。結局やらなきゃいけないのは、行列の対角化・数値積分・多変数関数の最小値探しなのだ。むむむ、欲しいデータに辿り着くのにはもう暫くかかりそうだ。気分転換に相方がやっていた事のマネをするとサクサク進むしグラフも書けるので楽しい。ご利益の分からない物も有るけどね。

数値計算のライブラリはnetlib*1LAPACKの中からzheev.f*2を拾ってきます。これはエルミート行列の対角化をするライブラリだけど、三重帯行列の対角化の方が早いんでないの?あ、でもMathematicaでやった場合はそのまま対角化した方が早かったんだよなぁ。なんか無駄な計算がループの中に入ってる気がするんだよね。まあ、それでも高速化出来たから良いか。

少しだけ注意書き。zheev.fだけでは動かない。dependenciesも含める必要がある*3。しかしBLAS routinesはいらない*4。自前で呼び出し側のメインルーチンを書く必要がある。かと思っていたけどそうでもないかもしれない。ま、明日調べる事にしよう。

*1:http://phase.hpcc.jp/mirrors/netlib/

*2:http://phase.hpcc.jp/mirrors/netlib/lapack/complex16/zheev.f

*3:dependenciesに定義されている関数が沢山有る。

*4:これ自身がテストプログラムとなっている様だが良く分からんので削除した。