scipy.integrate.
trapezoid#
- scipy.integrate.trapezoid(y, x=None, dx=1.0, axis=-1)[source]#
使用复合梯形规则沿给定轴积分。
如果提供了 x,则积分会按顺序沿其元素进行 - 它们不会排序。
沿给定轴上的每个一维切片积分 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\)。
- 参数:
- yarray_like
要积分的输入数组。
- xarray_like, 可选
与 y 值相对应的采样点。如果 x 为 None,则假定采样点均匀间隔 dx。默认值为 None。
- dx标量,可选
当 x 为 None 时采样点之间的间隔。默认值为 1。
- axisint,可选
要积分的轴。
- 返回值:
- trapezoidfloat 或 ndarray
通过梯形规则沿单个轴近似计算的 y = n 维数组的定积分。如果 y 是一个一维数组,则结果是一个浮点数。如果 n 大于 1,则结果是一个 n-1 维数组。
注释
图像 [2] 说明了梯形规则 - 点的 y 轴位置将从 y 数组中获取,默认情况下点之间的 x 轴距离将为 1.0,或者可以使用 x 数组或 dx 标量提供它们。返回值将等于红线下方组合的面积。
参考文献
[1]示例
在等间距点上使用梯形规则
>>> import numpy as np >>> from scipy import integrate >>> integrate.trapezoid([1, 2, 3]) 4.0
采样点之间的间隔可以通过
x
或dx
参数选择>>> integrate.trapezoid([1, 2, 3], x=[4, 6, 8]) 8.0 >>> integrate.trapezoid([1, 2, 3], dx=2) 8.0
使用递减的
x
对应于反向积分>>> integrate.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 >>> integrate.trapezoid(y, x) 0.33340274885464394
或估计圆的面积,注意我们重复了闭合曲线的样本
>>> theta = np.linspace(0, 2 * np.pi, num=1000, endpoint=True) >>> integrate.trapezoid(np.cos(theta), x=np.sin(theta)) 3.141571941375841
trapezoid
可以应用于指定轴以在一个调用中执行多个计算>>> a = np.arange(6).reshape(2, 3) >>> a array([[0, 1, 2], [3, 4, 5]]) >>> integrate.trapezoid(a, axis=0) array([1.5, 2.5, 3.5]) >>> integrate.trapezoid(a, axis=1) array([2., 8.])