けいじゅ@日本ラショナルソフトウェアです.

In [ruby-list :9124 ] the message: "[ruby-list:9124] Re: irb -m ", on
Aug/17 10:13(JST) GOTO Kentaro writes:

>ごとけんです

>>Matrix#to_iなどは各要素に対してto_iしていますよね. で, 各要素がto_iを
>>知っているのでうまく動作しています. 今度は, そうもいかなくなるわけです
>>よね...
>>
>>Matrix#to_mofで各要素に対して, to_mofを呼ぶというわけにもいかないです
>>しね.
>>
>>ということで, 他に反対がないならmap_to_*がよいんじゃないでしょうか?
>
>なるほど、実装みてなかったのですが、collect が
>そういう再定義になってたんでしたか。
>あと、行列と言っても形式的なモノだったんですね。
>ま、厳格(中身がNumeric)な行列より使いやすいかも知れません。
>Jacobian とか扱えるんですね。

うーん. 少なくともComplexとかは入りますよね.

>うーん、どうでしょう、僕はやっぱり to_mof とかにして
>
>class Matrix
>  def to_mof
>    collect{|e| 
>      case e.type
>      when Matrix
>        e.to_mof
>      when Vector
>        e.to_vof
>      else
>        e.to_f
>    }
>  end
>end
>
>などかなぁと思うのです。
>まぁ、めんどうなら map_to_* でも良いです。

上記の方法で問題になるのはさらに新しい数値クラスが出てきた場合なんです
よね.... たとえば, 上記の方法は, 今でもComplexに対応できていませんよね.
で, Complexに対応しようとおもったらメソッドを再定義しないとならないで
すよね. メソッド名が全部同じならそういう問題はなくなります.

使うことないからいっそのことなくせば? というのもありそうですが,
Matrix#to_fなんかはRubyの仕様からいってないと困るんですよね...

>>>ところで対角化や各種分解や固有値が matrix.rb や
>>>拡張モジュールで実装される予定はありますか? 
>>あるといいですよね(^^;;; 
>
>ですよね (^^;;;;;
>では暇をみて作る事にします。
>やっぱり拡張モジュールかなぁ。

でしょうね... Rubyで組むには無理がありそうですよね...

__
................................石塚 圭樹@日本ラショナルソフトェア...
----------------------------------->> e-mail: keiju / rational.com <<---