2008年
5月
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

setup diary

2007|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|06|08|11|
2015|01|02|03|04|05|06|07|08|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|

2008-05-22 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}
とすれば良いようだ。