[前][次][番号順一覧][スレッド一覧]

ruby-reference-manual:3418

From: "5.5 (5 5)" <redmine@r...>
Date: Tue, 27 Nov 2012 11:14:12 +0900
Subject: [ruby-reference-manual:3418] [るりまプロジェクト - Bug #7433] bigdecimal のレビュー


Issue #7433 has been updated by 5.5 (5 5).


=begin
bigdecimal のニュートン法について,修正案を考える余裕がないので,問題提起だけしてみます。

= 一変数か多変数か
最初に「ニュートン法を用いて非線形方程式 f(x) = 0 の解 x を求める機能を提供します。」とあります。

ライブラリーのコメントでは「Solves the nonlinear algebraic equation system f = 0 by Newton's method.」のように「system」と入っていて,方程式系(=連立方程式)であることが明示されていますが,るりまでは分かりません。

ユーザーの最初の関心は,一変数限定なのか多変数なのかだと思うので,最初にそれを謳うのがいいと思います。

また,(多変数のニュートン法が分かっていれば自明ですが念のため)f が N 変数の場合,f の戻り値も N 次元になるように作るということを一言入れてはどうかと思います。

= BigDecimal 依存性

「本サブライブラリは [[c:BigDecimal]] に依存しません。」とありますが(ライブラリーのコメントにもそうある),どういう意味でしょうか。

nlsolve で使っている LUSolve モジュールは BigDecimal を使っています。

= 実行例
「実行例の詳細については、Ruby のソースコード中の以下のパスからサンプルスクリプトを参照してください。」とあるのですが,コンパイル済み Ruby のユーザーにソースを取ってこいというのは不親切です。

ext/bigdecimal/sample/nlsolve.rb は実質 30 行くらいなので,現行の実行例をこれに変えればいいと思います。

その際,1 行くらいの解説(何を初期値にして何を解こうとしているのか)を付け,解を表示するところは BigDecimal のままじゃなくて to_f してあげるといいと思います。

= norm メソッドとε値

norm メソッドは,成分の自乗和を計算しているので,実際にはノルムではなくノルムの 2 乗を返すようです。

nlsolve メソッドに与える〈関数〉が持つ eps の値は,nlsolve の内部で norm の戻り値と比較されているようです。

ということは,f.eps の説明に書かれている収束判定条件 |a - b| < f.eps は間違いで,正しくは |a - b|^2 < f.eps ではないでしょうか。
「収束の基準になる epsilon 値」という表現も紛らわしいので「の 2 乗」を付けるなどしたほうがいいと思います。

= 初期値依存性

引数 x の説明に「指定する値によって、解の収束点が変化する場合や解が求まらずに RuntimeError が発生する場合があります」とあります。

まず,「解の収束点」という表現は変です。収束点が解だからです。
また,これ自体は望ましいことですが,収束しないことは望ましくないことなので,切り離した方がいいと思います。

つまり「解が複数ある場合,初期値によって得られる解が異なります。」と「また,初期値によっては収束せずに RuntimeError が発生する場合があります。」に分けたほうがいいかと思います。

= f.values
「全ての x に対する f(x) の値を返します。」とありますが,これはライブラリーのコメントにある「returns the values of all functions at x」の誤訳ではないでしょうか。

「点 x における関数の値を数値の配列で返します」とかなんとか。

= 解

nlsolve のパラーメーター x の説明に「実行後は解を表す値が代入されています」とありますが,「代入」と言っちゃうと,変数 x に(初期値とは別の)配列オブジェクトが代入されるように読めます。実際には同じオブジェクトの中身が変化して解が与えられます。

= f.zero 等
f.zero などの説明として,「0.0 を返します」などとありますが,これだと Float を返せばよいように読めてしまいます。必要に応じて適切な BigDecimal 値を返すことが分かるような書き方があればいいと思います。
=end

----------------------------------------
Bug #7433: bigdecimal のレビュー

https://bugs.ruby-lang.org/issues/7433#change-34000

Author: sho-h (Sho Hashimoto)
Status: Open
Priority: Normal
Assignee: 
Category: doc:review
Target version: 
reporter: 
ruby_version: 


bigdecimal のレビューをお願いします。

やり方は http://redmine.ruby-lang.org/wiki/rurema/Phase3ReviewProcess1 を参照してください。


-- 
http://bugs.ruby-lang.org/

--
ML: ruby-reference-manual@m...
Info: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

      3413 2012-11-25 12:40 [sho-h@n...          ] [るりまプロジェクト - Bug #7433][Open] bigdecimal のレビュー
      3414 2012-11-26 16:33 ┣[redmine@r...        ] [るりまプロジェクト - Bug #7433] bigdecimal のレビュー
      3415 2012-11-26 23:08 ┣[redmine@r...        ] [るりまプロジェクト - Bug #7433] bigdecimal のレビュー
      3416 2012-11-27 01:35 ┣[redmine@r...        ] [るりまプロジェクト - Bug #7433] bigdecimal のレビュー
      3417 2012-11-27 01:41 ┣[redmine@r...        ] [るりまプロジェクト - Bug #7433] bigdecimal のレビュー
->    3418 2012-11-27 03:14 ┣[redmine@r...        ] [るりまプロジェクト - Bug #7433] bigdecimal のレビュー
      3419 2012-11-27 11:10 ┣[redmine@r...        ] [るりまプロジェクト - Bug #7433] bigdecimal のレビュー
      3422 2012-11-27 11:37 ┣[redmine@r...        ] [るりまプロジェクト - Bug #7433] bigdecimal のレビュー
      3424 2012-11-27 11:56 ┣[redmine@r...        ] [るりまプロジェクト - Bug #7433] bigdecimal のレビュー
      3425 2012-11-27 16:31 ┣[redmine@r...        ] [るりまプロジェクト - Bug #7433] bigdecimal のレビュー
      3426 2012-11-27 17:24 ┣[sho-h@n...          ] [るりまプロジェクト - Bug #7433] bigdecimal のレビュー
      3427 2012-11-27 17:53 ┣[redmine@r...        ] [るりまプロジェクト - Bug #7433] bigdecimal のレビュー
      3444 2012-12-15 09:45 ┣[redmine@r...        ] [るりまプロジェクト - Bug #7433] bigdecimal のレビュー
      3460 2013-01-03 06:44 ┗[sho-h@n...          ] [るりまプロジェクト - Bug #7433] bigdecimal のレビュー