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]

使用自適應 Gauss-Kronrod(G10、K21)求積法將 fa 積分到 b。這是建議的通用積分器。

參數:
  • f -- 可呼叫物件,接受單一 float 並回傳 float

  • a -- 積分下限。

  • b -- 積分上限。

  • order -- 積分階數(預設 5)。

  • eps -- 誤差容限(預設 etolerance)。

回傳:

由浮點數組成的二元組 (result, error),分別給出積分值與誤差估計。

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

使用 Romberg 方法將 fa 積分到 b,這是一種在等間距點上計算被積函式的 Newton-Cotes 公式。最適合用於導數連續的被積函式。請注意,自 SciPy 1.12.0 起 scipy.integrate.romberg 在 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

使用自適應 Simpson 法則將 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)。

回傳:

由浮點數組成的二元組 (result, error),分別給出積分值與誤差估計。