【问题标题】:How calculate the Error for trapezoidal rule if I only have data? (Python)如果我只有数据,如何计算梯形规则的误差? (Python)
【发布时间】:2015-11-09 16:33:49
【问题描述】:

我得到了这个数据数组,我需要计算曲线下的面积,所以我使用 Numpy 库和包含函数 Scipy 库>trapz 在 Numpy 中和 integrate.simps 在 Scipy 中进行数值积分,这在两种情况下都给了我非常好的结果。

现在的问题是,我需要每个错误或至少梯形规则的错误。问题是,那个公式问我一个函数,显然我没有。我一直在研究一种获取错误但总是回到同一点的方法......

这里是 scipy.integrate http://docs.scipy.org/doc/scipy/reference/integrate.html 和 trapz 在 Numpy http://docs.scipy.org/doc/numpy/reference/generated/numpy.trapz.html 中的页面使用现有的...

有什么想法吗?

【问题讨论】:

  • 也许你可以为你的问题举一个详细的例子
  • 你的推理有一个问题:如果你知道数值积分和确切的误差,那么你可以将这些信息结合起来,你就可以得到一个精确计算任意积分的方法。这使得所有数值积分规则都过时了,因此可能是不可能的:)
  • @Falko 感谢您的更正,英语不是我的母语,所以谢谢:)
  • @cel 我不知道确切的错误,我还是个新手 :(
  • @Amy1204,我的观点是:没有关于您的被积函数 f 行为方式的信息,您甚至无法估计积分错误。如果您可以假设 f 是平滑的,则可以推导出依赖于导数的估计。但只有数据点根本不足以计算误差。

标签: python numpy scipy numerical-integration


【解决方案1】:

虽然cel 是正确的,如果您不知道函数,则无法确定集成错误,但您可以做一些事情。

您可以使用curve fitting 通过可用数据点拟合函数。然后,您可以使用该函数进行误差估计。

如果您希望数据适合某种函数,例如正弦、对数或指数,最好将其用作曲线拟合的基础。

例如,如果您正在测量移动汽车的阻力,则众所周知,由于空气阻力,这大部分与速度的平方成正比。

但是,如果您对适用函数一无所知,那么假设您有 N 个数据点,则有一个 N-1 次多项式与所有这些数据点完全匹配。从数据中确定这样的多项式就是求解线性方程组。参见例如polynomial interpolation。您可以使用这个多项式作为未知实函数的估计。但请注意,超出此多项式的数据点范围可能非常不准确。

【讨论】:

  • 嗯,你确定你从这个过程中得到的结果是合理的吗?我的意思是这基本上就是数值积分首先要做的事情。首先拟合一个插值多项式,然后通过该多项式近似积分。这看起来有点像计算两种不同数值积分方法之间的差异,而不是估计误差。
  • @cel 如果您使用辛普森积分规则并且使用二次多项式,那么您是对的。例如梯形积分或任何其他函数的结果会有所不同。
  • 啊,是的,我想这种方法确实有道理,我的最后评论不是真的,因为curve_fit 给出了最小二乘估计,因此不是插值。
  • 我也尝试了 scipy.interpolate 选项,因为我认为可以解决我遇到的一些问题。因为我尝试将三次多项式作为函数的数据类型,但是当我绘制它时意识到这是失败的。
  • @Amy1204 选择正确的函数很重要,否则您将无法获得合适的结果。因此我的建议。
猜你喜欢
  • 1970-01-01
  • 2014-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-18
  • 2018-11-17
  • 1970-01-01
相关资源
最近更新 更多