rubyで行列


整数の要素をもつ行列には注意が必要だ。
rubyでは行列も扱える。determinantや逆行列も簡単に求められるので、比較的便利である。しかし、注意が必要であることが分かった。例に次のコードを実行してみた。

require "matrix"
m=Matrix[[2,0],[0,2]]
p m.inv

結果は、零行列になってしまう。始めはなぜだか分からなかったが、実は整数の演算として計算するために起こることに気づいた。つまり、determinantを計算して、それが分母にくるので、すべて整数で計算した場合には、切り捨てられて0になってしまうのである。m.to_fとかのmethodが欲しいところであるが、それは無いようだ。/usr/lib/ruby/1.8/matrix.rbを見ると、collectはあるようなので、

m=m.collect{|e| e.to_f}

とすれば良いようだ。