numpy.trapezoid#

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

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

如果提供了 x,则沿其元素按顺序进行集成——它们不会被排序.

沿给定轴的每个1d切片积分 y (x),计算 \(\int y(x) dx\).当指定 x 时,这将沿参数曲线积分,计算 \(\int_t y(t) dt = \int_t y(t) \left.\frac{dx}{dt}\right|_{x=x(t)} dt\).

在 2.0.0 版本加入.

参数:
yarray_like

要积分的输入数组.

xarray_like, 可选

对应于 y 值的样本点.如果 x 为 None,则假设样本点均匀分布,间隔为 dx.默认值为 None.

dx标量,可选

x 为 None 时,样本点之间的间距.默认值是 1.

axisint, 可选

要沿其进行积分的轴.

返回:
trapezoid浮点数或ndarray

y 的定积分 = 通过梯形法则沿单一轴近似的多维数组.如果 y 是一个一维数组,那么结果是一个浮点数.如果 n 大于 1,那么结果是一个 n-1 维数组.

参见

sum, cumsum

备注

图像 [2] 说明了梯形法则——点的 y 轴位置将从 y 数组中获取,默认情况下点之间的 x 轴距离为 1.0,或者可以用 x 数组或 dx 标量提供.返回值将等于红色线条下的总面积.

参考文献

示例

>>> import numpy as np

在均匀分布的点上使用梯形法则:

>>> np.trapezoid([1, 2, 3])
4.0

样本点之间的间距可以通过 xdx 参数来选择:

>>> np.trapezoid([1, 2, 3], x=[4, 6, 8])
8.0
>>> np.trapezoid([1, 2, 3], dx=2)
8.0

使用递减的 x 对应于反向积分:

>>> np.trapezoid([1, 2, 3], x=[8, 6, 4])
-8.0

更一般地,``x`` 用于沿参数曲线进行积分.我们可以使用以下方法估计积分 \(\int_0^1 x^2 = 1/3\):

>>> x = np.linspace(0, 1, num=50)
>>> y = x**2
>>> np.trapezoid(y, x)
0.33340274885464394

或者估计一个圆的面积,注意我们重复了封闭曲线的样本:

>>> theta = np.linspace(0, 2 * np.pi, num=1000, endpoint=True)
>>> np.trapezoid(np.cos(theta), x=np.sin(theta))
3.141571941375841

np.trapezoid 可以沿指定轴应用,以在一次调用中进行多个计算:

>>> a = np.arange(6).reshape(2, 3)
>>> a
array([[0, 1, 2],
       [3, 4, 5]])
>>> np.trapezoid(a, axis=0)
array([1.5, 2.5, 3.5])
>>> np.trapezoid(a, axis=1)
array([2.,  8.])