scipy.integrate.
simpson#
- scipy.integrate.simpson(y, *, x=None, dx=1.0, axis=-1)[source]#
使用沿给定轴的样本和复合辛普森规则积分 y(x)。如果 x 为 None,则假定 dx 间隔。
如果样本数量为偶数 N,则间隔数量为奇数 (N-1),但辛普森规则需要偶数个间隔。参数 'even' 控制如何处理这种情况。
- 参数:
- yarray_like
要积分的数组。
- xarray_like, optional
如果给出,则为对 y 进行采样的点。
- dxfloat, optional
沿 x 轴的积分点的间距。仅在 x 为 None 时使用。默认值为 1。
- axisint, optional
要积分的轴。默认值为最后一个轴。
- 返回:
- float
使用复合辛普森规则计算的估计积分。
另请参阅
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