まつもと ゆきひろです

In message "[ruby-math:00775] Re: Forward: matrix.rb bug"
    on 02/11/22, 石塚圭樹 <keiju / rational.com> writes:

|えー. これは例の, 1/2 = 0 の副作用ですね.

なるほど。でも、

  Matrix[[10.0, 5.0, 10.0], [10.0, 5.0, 0.0], [1.0, 1.0, 1.0]].det

も50.0になるんですが。彼が期待している(HP電卓の出した)結果は
-50.0ではないかと。私にはどちらが正しいと判断する能力はあり
ませんが。

|今のところ, 数学的に正しい結果がほしければ, すべてFloatに直して計算す
|るか, require "mathn"をしてください. となりますです...
|
|# 今の結果は, 一応ruby的には正しい結果だと思います. 

蒸し返すようで悪いんですが、以下の点について教えてくださいま
せんか?

  * Matrixってのは実数の行列とみなすのが正しいのか、それとも
    Ruby値の行列とみなすのが正しいのか(「正しい」が定義しに
    くいですが、matrix.rb的にどう見なしているかで良いです)。

  * もし、前者ならNumericに「より(数学的な)答えに近い除算」
    メソッドを導入してでも解決すべきではないか。

  * もし、後者なら今の挙動は「Ruby的に正しい」とみなすべきで
    しょう。しかし、その場合には(繰り返し質問が来るというこ
    とは)一般の期待とは違うと考えられるので、matrix.rbのドキュ
    メントにそう明確に記述すべきではないか。

Matrix[[false,false]]がエラーなく受け入れられるっていうのは
後者を意味しているようにも思えますが、Matrixクラスは結局暗黙
にエレメントに数クラスを要求している(よね)以上、前者でないと
納得してもらうのは難しいうえに実際にユーザに優しくないように
思います。

あと、to_f, to_i, to_rの名前が良くないって話には結論が出てま
したっけ。

というわけで、よろしく。

                                まつもと ゆきひろ /:|)