library bigdecimal/newton

[edit]

要約

ニュートン法を用いて非線形方程式 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 を求める機能を提供します。