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.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¶
使用自适应 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),分别给出积分值和误差估计。