requires=bigdecimal.jacobian,bigdecimal.ludcmp
classes=Newton
methods=
sublibraries=
is_sublibrary=true
category=

ニュートン法を用いて非線形方程式 f(x) = 0 の解 x を求める機能を提供しま
す。

本サブライブラリは [[c:BigDecimal]] に依存しません。

実行例:

  require "bigdecimal"
  require "bigdecimal/newton"
  include Newton

  ...

  n = nlsolve(f, x)

引数 f には関数を表すオブジェクトを指定します。以下のメソッドに応答でき
る必要があります。

: f.values(x)

  点 x における関数の値を数値の配列で返します。

: f.zero

  0.0 を示す値を返します。

: f.one

  1.0 を示す値を返します。

: f.two

  2.0 を示す値を返します。

: f.ten

  10.0 を示す値を返します。

: f.eps

  収束の基準になる epsilon 値を返します。2 つの値が異なる値かどうかを比
  較するのに使用されます。|a - b| < f.eps となる 2 つの値は同じ値である
  とみなされます。

引数 x には探索を開始する点を数値の配列で指定します。解が複数ある場合、
初期値によって得られる解が異なります。また，初期値によっては収束せずに
[[c:RuntimeError]] が発生する場合があります。実行後は引数 x は破壊的に
変更されます。x から解を取得します。

戻り値 n は計算した回数を整数で返します。

Ruby のソースコード中の以下のサンプルスクリプトも参考にしてください。

 * [[url:http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/bigdecimal/sample/nlsolve.rb?view=markup]]
