scipy.integrate --- 数値積分

scipy.integrate サブモジュールは、実数値の単変数関数に対する数値積分ルーチンを提供します。これらのアルゴリズムは CPython の scipy.integrate から移植されたものではなく、https://www.genivia.com/qthsh.html にあるリファレンス実装に由来しています。

数値積分は float64 演算を有効にした状態で最も良好に動作します。float32 演算でもルーチンは動作しますが、精度は低下します。要求する誤差許容値は eps キーワード引数で指定できます。既定値はコンパイル時の etolerance 値(fp64 では 1e-14、fp32 では 1e-8)です。複素数はサポートされていません。

関数

scipy.integrate.quad(f: Callable[[float], float], a: float, b: float, *, order: int = 5, eps: float = etolerance) tuple[float, float]

適応ガウス・クロンロッド(G10, K21)求積法を用いて、fa から b まで積分します。これは推奨される汎用積分器です。

パラメータ:
  • f -- 単一の float を取り float を返す呼び出し可能オブジェクトです。

  • a -- 積分の下限です。

  • b -- 積分の上限です。

  • order -- 積分の次数です(既定値 5)。

  • eps -- 誤差許容値です(既定値 etolerance)。

戻り値:

積分の値と誤差推定値を与える、float の2要素タプル (result, error) です。

scipy.integrate.romberg(f: Callable[[float], float], a: float, b: float, *, steps: int = 100, eps: float = etolerance) float

ニュートン・コーツの公式の一種であり等間隔の点で被積分関数を評価するロンバーグ法を用いて、fa から b まで積分します。連続な導関数を持つ被積分関数に最も適しています。なお、scipy.integrate.romberg は SciPy 1.12.0 以降の CPython では非推奨です。新しいコードでは quad() を優先してください。

パラメータ:
  • f -- 単一の float を取り float を返す呼び出し可能オブジェクトです。

  • a -- 積分の下限です。

  • b -- 積分の上限です。

  • steps -- ステップ数です(既定値 100)。

  • eps -- 誤差許容値です(既定値 etolerance)。

戻り値:

積分の値を float として返します。

scipy.integrate.simpson(f: Callable[[float], float], a: float, b: float, *, steps: int = 100, eps: float = etolerance) float

適応シンプソン法を用いて、fa から b まで積分します。CPython の scipy.integrate.simpson とは異なり、この関数は事前に計算された関数値の配列ではなく呼び出し可能オブジェクトを取り、サンプル間隔を内部で選択します。

パラメータ:
  • f -- 単一の float を取り float を返す呼び出し可能オブジェクトです。

  • a -- 積分の下限です。

  • b -- 積分の上限です。

  • steps -- ステップ数です(既定値 100)。

  • eps -- 誤差許容値です(既定値 etolerance)。

戻り値:

積分の値を float として返します。

scipy.integrate.tanhsinh(f: Callable[[float], float], a: float, b: float, *, levels: int = 6, eps: float = etolerance) tuple[float, float]

Tanh-Sinh、Sinh-Sinh、Exp-Sinh(二重指数)求積法ファミリを用いて、fa から b まで積分します。これは被積分関数が端点で特異点や無限大の導関数を持つ場合に使用するルーチンであり、このサブモジュール内で無限の積分限界(例: -np.infnp.inf)を受け付ける唯一のルーチンです。

パラメータ:
  • f -- 単一の float を取り float を返す呼び出し可能オブジェクトです。

  • a -- 積分の下限です。-np.inf でも構いません。

  • b -- 積分の上限です。np.inf でも構いません。

  • levels -- 細分化レベルの数です(既定値 6)。

  • eps -- 誤差許容値です(既定値 etolerance)。

戻り値:

積分の値と誤差推定値を与える、float の2要素タプル (result, error) です。