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)求積法將 f 從 a 積分到 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 方法將 f 從 a 積分到 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 法則將 f 從 a 積分到 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(雙指數)求積法系列將 f 從 a 積分到 b。當被積函式在端點處有奇異點或無窮導數時,應使用此常式;它也是本子模組中唯一接受無窮積分上下限(例如
-np.inf、np.inf)的常式。- 參數:
f -- 可呼叫物件,接受單一
float並回傳float。a -- 積分下限;可為
-np.inf。b -- 積分上限;可為
np.inf。levels -- 細化層級數(預設
6)。eps -- 誤差容限(預設
etolerance)。
- 回傳:
由浮點數組成的二元組
(result, error),分別給出積分值與誤差估計。