python - 如何在 scipy.integrate.simps 或 numpy.trapz 之间做出选择?

标签 python numpy matplotlib scipy

我有一组点,当我绘制这些点时,我得到了下图。我想找到图表下方的区域,但是我不确定 scipy.integrate.simps 还是 numpy.trapz 更合适。

有人可以告诉我这两个函数之间的数学背景,从而得出哪个函数更准确的结论吗?

enter image description here

最佳答案

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

那么,使用这些数值方法作为解析积分的近似值会导致什么错误?

与梯形法则相关的误差,对于前导阶数,与 h^2[f'(a) - f'(b)] 成正比。 h 是函数中采样点之间的间距; f'(a) 和 f'(b) 是函数在采样域开始和结束处的一阶导数。

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

h 通常很小,所以 h^4 通常比 h^2 小得多!

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

关于python - 如何在 scipy.integrate.simps 或 numpy.trapz 之间做出选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44915116/

相关文章:

python - 在 python 中按字符串模式对项目进行分组

python - 二维 Numpy 数组到 HTML 表?

python - 隐藏内部刻度线并在 matplotlib 子图上选择外部刻度标签?

python 3.4 vs. 3.5 strftime 相同语言环境不同输出

python - 使用 Python 检测文件中的语言更改

Python mysql.connector rowcount > 0 但 fetchall() 显示没有结果

python - mlab.griddata 错误?

graph - 为Networkx和Graphviz中的特定节点着色

python - Matplotlib:TypeError:不能将序列乘以 'numpy.float64' 类型的非整数

python - 绘制 Windrose : making a pollution rose with concentration set to color