如何确定scipy.integrate.simps还是numpy.trapz?

Tia*_*ian 1 python numpy matplotlib scipy

我有一组要点,当我作图时,得到以下图表。我想在图表下找到面积,但是不确定scipy.integrate.simps还是numpy.trapz是否更合适。

有人可以为我提供这两个函数之间的数学背景的建议,从而得出关于哪个函数更准确的结论吗?

在此处输入图片说明

Rya*_*ski 5

梯形法则是最简单的数值积分方法。实际上,它通过用直线段近似曲线来估计曲线下的面积,每个直线段仅需要两个点。辛普森法则使用二次曲线来近似函数段,每个函数段都需要从函数中采样的三个点来近似给定段。

那么,将这些数值方法用作解析积分的近似值有什么误差呢?

与梯形法则相关的误差,按领先顺序,与h ^ 2 [f'(a)-f'(b)]成正比。h是函数中采样点之间的间隔;f'(a)和f'(b)是函数在采样域的开头和结尾的一阶导数。

另一方面,通过辛普森法则的误差与h ^ 4 [f'''(a)-f'''(b)]成正比。f'''是函数中的三阶导数。

h通常很小,因此h ^ 4通常比h ^ 2小得多!

TLDR:与梯形法则相比,辛普森法则通常为数值积分提供更好的结果,基本上没有额外的计算成本。