scipy.integrate.

辛普森#

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

使用给定轴上的样本和复合辛普森规则积分 y(x)。如果 x 为 None,则假定间距为 dx。

如果有偶数个样本,N,那么有奇数个区间(N-1),但辛普森法则需要偶数个区间。参数 ‘even’ 控制如何处理这种情况。

参数:
yarray_like

要被积分的数组。

x类似数组, 可选

如果给出,y 被采样的点。

dxfloat, 可选

沿 x 轴的积分点间距。仅在 x 为 None 时使用。默认值为 1。

int, 可选

要沿其进行积分的轴。默认是最后一个轴。

返回:
浮动

使用复合辛普森法则计算的估计积分。

参见

quad

使用 QUADPACK 的自适应积分

fixed_quad

固定顺序的高斯求积

dblquad

双重积分

tplquad

三重积分

romb

采样数据的积分器

cumulative_trapezoid

采样数据的累积积分

cumulative_simpson

使用辛普森1/3法则的累积积分

注释

对于等间距的奇数个样本,如果函数是3次或更低次的多项式,则结果是精确的。如果样本不等间距,则结果仅在函数是2次或更低次的多项式时是精确的。

参考文献

[1]

Cartwright, Kenneth V. 使用MS Excel和非均匀间隔数据的辛普森规则累积积分。数学科学与数学教育杂志。12 (2): 1-9

示例

>>> from scipy import integrate
>>> import numpy as np
>>> x = np.arange(0, 10)
>>> y = np.arange(0, 10)
>>> integrate.simpson(y, x=x)
40.5
>>> y = np.power(x, 3)
>>> integrate.simpson(y, x=x)
1640.5
>>> integrate.quad(lambda x: x**3, 0, 9)[0]
1640.25