jax.scipy.integrate.trapezoid

目录

jax.scipy.integrate.trapezoid#

jax.scipy.integrate.trapezoid(y, x=None, dx=1.0, axis=-1)[源代码][源代码]#

使用复合梯形法则沿给定轴进行积分。

JAX 实现的 scipy.integrate.trapezoid()

梯形法则通过求和相邻数据点之间形成的梯形面积来近似曲线下的积分。

参数:
  • y (ArrayLike) – 要整合的数据数组。

  • x (ArrayLike | None) – 对应于 y 值的样本点可选数组。如果未提供,x 默认为等间距,间距由 dx 给出。

  • dx (ArrayLike) – 当 x 为 None 时,样本点之间的间距(默认值:1.0)。

  • axis (int) – 要沿其进行积分的轴(默认:-1)

返回:

由梯形法则近似的定积分。

返回类型:

Array

参见

jax.numpy.trapezoid(): 梯形积分的 NumPy 风格 API

示例

在间距为1.0的规则网格上进行积分:

>>> y = jnp.array([1, 2, 3, 2, 3, 2, 1])
>>> jax.scipy.integrate.trapezoid(y, dx=1.0)
Array(13., dtype=float32)

在非规则网格上进行积分:

>>> x = jnp.array([0, 2, 5, 7, 10, 15, 20])
>>> jax.scipy.integrate.trapezoid(y, x)
Array(43., dtype=float32)

近似计算 \(\int_0^{2\pi} \sin^2(x)dx\),其结果等于 \(\pi\)

>>> x = jnp.linspace(0, 2 * jnp.pi, 1000)
>>> y = jnp.sin(x) ** 2
>>> result = jax.scipy.integrate.trapezoid(y, x)
>>> jnp.allclose(result, jnp.pi)
Array(True, dtype=bool)