要約
ニュートン法を用いて非線形方程式 f(x) = 0 の解 x を求める機能を提供します。
本サブライブラリは BigDecimal に依存しません。
実行例:
require "bigdecimal" require "bigdecimal/newton" ... n = Newton.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 には探索を開始する点を数値の配列で指定します。解が複数ある場合、初期値によって得られる解が異なります。また,初期値によっては収束せずに RuntimeError が発生する場合があります。実行後は引数 x は破壊的に変更されます。x から解を取得します。
戻り値 n は計算した回数を整数で返します。
Ruby のソースコード中の以下のサンプルスクリプトも参考にしてください。
モジュール
Newton | ニュートン法を用いて非線形方程式 f の解 x を求める機能を提供するモジュールです。 |
同時にrequireされるライブラリ
bigdecimal | bigdecimal は浮動小数点数演算ライブラリです。任意の精度で 10 進表現された浮動小数点数を扱えます。 |
bigdecimal/jacobian | ヤコビ行列を計算する機能を提供します。 |
bigdecimal/ludcmp | LU 分解を用いて、連立1次方程式 Ax = b の解 x を求める機能を提供します。 |