jax.scipy.integrate.trapezoid#

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

使用複合梯形法則沿給定軸積分。

scipy.integrate.trapezoid() 的 JAX 實作

梯形法則通過對相鄰數據點之間形成的梯形面積求和,來近似曲線下的積分。

參數:
  • 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)