けいじゅ@いしつかです. In [ruby-dev:27731] the message: "[ruby-dev:27731] Re: Matrix class is broken without mathn", on Nov/18 02:09(JST) Shin-ichiro HARA writes: >原です。 >>あと, Matrix#detだけでなく, Matirx#rankも同じ問題があるのですが, >>いくらなんでもこちらをFloatで計算しろとは言えないのではないかと? > >その主張は同意します。だからrationalをrequireして、Rational >で(quoで)計算しろ、ということなんです。 > >Float行列にしろInteger行列にしろrankを計算したい人がそもそも >非常に少ないのでまっいっかというのもあります(^^;。元々、 (^^;;; >Float行列のrankの値なんか信用できないので、Integer行列のrank >を知りたい人は、rational.rbをrequireする手間は惜しくないので >はないかと。逆に、quo式はrational.rbをrequireするだけで済む >だけ、更に各成分Rational()しなくてはならない現行よりアドバン >テージがある。 ですね. >さて、以下にInteger行列のrankを求める互除法版を載せます。 >(やはりRational との混交可です。) >ここで提案ですが、rankもquo式にし、このrank_e(名前は改めて >考えるとして)も取り込んで、マニュアルに > > 【整数行列を扱う場合の注意】 > 整数行列の階数を計算させるときは、Matrix#rank_eを使いましょ > う。rational.rbをrequireしている状態でMatrix#rankを使って > も正しい値が得られます。 > >としたらどうでしょうか。 detの原(新)案と対象性があるので, det原(新)案が採用されるなら, これでい いんじゃないでしょうか? >あ、そういえば matrix.rbのtypo見つけました。 > >--- matrix.rb~ 2005-11-17 01:10:30.000000000 +0900 >+++ matrix.rb 2005-11-17 10:57:56.000000000 +0900 >@@ -740,7 +740,7 @@ class Matrix > i = k > exists = true > begin >- if (i += 1) > a_row_size - 1 >+ if (i += 1) > a_column_size - 1 > exists = false > break > end ぐっ, すいません. __ ---------------------------------------------------->> 石塚 圭樹 <<--- ---------------------------------->> e-mail: keiju / ishitsuka.com <<---