2004-06-28 [長年日記]

警告音

HDDから異音がする。容量も40GByteの小さいやつだし、そろそろ買い換えてもいいかなぁ。

行列式

雨谷の日和の行列式計算の色々なアルゴリズムで言及されているように、行列式の計算として掃き出し法が速度に対して有効なのは確かなのですが、精度が落ちる可能性があるというのが問題のような気がします。 例えば、

|7 2|
|3 4|

という行列の行列式は、7*4-3*2=22となりますが、これに対して掃き出しを行った場合、

|7       2      |   |7 2        |
|3-7*3/7 4-2*3/7| = |0 3.1428...|

となり、変数の精度のとりかたによっては、情報落ちして整数にならない可能性があります。 もちろんこれに対する解決方法はあって、先ほどの例では列を入れ替えて(注目列を変えて)、

|2 7|  |2     7    |  |2   7|
|4 3|=-|4-2*2 3-7*2|=-|0 -11|=22

計算すればいいわけですが、そもそも計算量が少ないアルゴリズムを選択したつもりが、そのために何かしらのコストを支払うのは本末転倒チックです。 ということで、割り算をしない、情報落ちを心配しなくていいそれなりに速いアルゴリズムにもそれなりの需要はあるんじゃないでしょうか。