From: keiju@... (Keiju ISHITSUKA) Date: 1998-04-03T11:27:26+09:00 Subject: [ruby-dev:2034] miner matrix [ Re: new coerce ] けいじゅ@日本ラショナルソフトウェアです. In [ruby-dev :2006 ] the message: "[ruby-dev:2006] Re: new coerce ", on Mar/31 19:25(JST) Toyofuku writes: > 豊福@パパイヤです。 > 要素が左右可換なら > return self, other, :* >でもできるけど可換じゃない場合もあるなと思って >matrix の matrix の掛け算を試したら > > require "matrix.rb" > x = Matrix[[0, 1], [1, 0]] > z = Matrix[[0, 0], [0, 0]] > a = Matrix[[x, z], [z, x]] > b = a * a > >の b[0, 0]を求める 0 + x * x + z * z の計算のところで >0 + Matrix がエラーになりました。 > def +(other); other; end となるゼロオブジェクトなら >いいのかな。 うーん. 全然考えていませんでした. この場合どうして欲しいですか? 1. 上記, aは小行列を使って行列を構成していますが, きっと, 行列を要素とす る行列を作っているのではなくて, 展開された行列のつもりである. 2. それとも, 行列を要素としたまま計算したいんですかね? で, 展開する場合 はそれなりのメソッドを呼んであげると... 私は最初(1)かなと思いましたが, (2)の方が計算効率は良くなるような気もす るし... __ ................................石塚 圭樹@日本ラショナルソフトェア... ----------------------------------->> e-mail: keiju@rational.com <<---