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)求积法对 fab 积分。这是推荐的通用积分器。

参数:
  • 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 方法对 fab 积分,该方法是一种 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 法则对 fab 积分。与 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(双指数)求积族对 fab 积分。当被积函数在端点处具有奇点或无穷导数时应使用此例程,且它是本子模块中唯一接受无穷积分限(例如 -np.infnp.inf)的例程。

参数:
  • f -- 可调用对象,接受单个 float 并返回一个 float

  • a -- 积分下限;可以为 -np.inf

  • b -- 积分上限;可以为 np.inf

  • levels -- 细化层数(默认 6)。

  • eps -- 误差容限(默认 etolerance)。

返回:

由浮点数组成的二元元组 (result, error),分别给出积分值和误差估计。