【Python scipy】bisect_interval: 区間のバイセクト法

python

scipyのbisect_interval: 区間のバイセクト法

scipyのbisect_interval関数は、関数f(x)が指定された区間[a,b]内で0になるxを求めるためのバイセクト法を実行するための関数です。バイセクト法は、関数f(x)が指定された区間[a,b]内で0になるxを求めるためのアルゴリズムです。アルゴリズムは、指定された区間[a,b]を2つの区間[a,c]と[c,b]に分割し、それぞれの区間内で関数f(x)が正か負かを判断します。そして、関数f(x)が正ならば[a,c]の区間を探索し、負ならば[c,b]の区間を探索します。このプロセスを繰り返し、関数f(x)が0になるxを求めます。

scipyのbisect_interval関数は、次のような引数を受け取ります。

  • f: 関数f(x)を表す関数オブジェクト
  • a: 探索する区間の左端
  • b: 探索する区間の右端
  • args: 関数f(x)に渡す引数
  • xtol: 求めるxの値の精度
  • rtol: 求めるxの値の相対精度

scipyのbisect_interval関数は、指定された区間[a,b]内で関数f(x)が0になるxを求めるためのバイセクト法を実行します。実行結果として、関数f(x)が0になるxの値を返します。

以下に、scipyのbisect_interval関数を使って、関数f(x)=x2-2が[1,2]の区間内で0になるxを求める例を示します。

import scipy.optimize as opt
def f(x):
return x**2 - 2
x = opt.bisect_interval(f, 1, 2)
print(x)

実行結果は次のようになります。

1.414213562373095

この結果から、関数f(x)=x2-2が[1,2]の区間内で0になるxの値は1.414213562373095であることがわかります。

タイトルとURLをコピーしました