【问题标题】:Integral when function is unknown?功能未知时积分?
【发布时间】:2013-06-17 12:30:50
【问题描述】:

当函数未知时,我正在尝试找到一种使用 python 2.7 计算曲线下面积的方法。只有我拥有的数据是坐标,例如:

0       0
0.000194439     0
0.000388878     0
0.000583317     0
0.000777756     0
0.000972195     0
0.00116663      0
0.00136107      0
0.00155551      0
0.00174995      0
0.00194439      0
0.00213883      0
0.00233327      0
0.00233327      0.00588235
0.00252771      0.00588235 
...............................
.................................

Complete data.

值将始终为正。 该函数通常类似于对数函数,但这不能保证。

我可以计算 (x2-x1)*y 等等以获得近似值,但我更喜欢使用积分。

因此我的问题是:
如何在代码中可靠地找出给定坐标的函数?或者没有人可以做到这一点吗?要求后者仅涵盖所有基础,因为我的数学非常生疏

【问题讨论】:

  • 使用最小二乘法(或其他方法)找到与数据集紧密匹配的函数并计算其积分。
  • @Bakuriu - 这不是一个好主意。找到该函数通常会非常棘手,这将比简单的梯形或辛普森规则提供更好的近似值。你现在又为这个问题增加了一步,这表明数学技能已经有问题的人现在学习了一整套新技能。更好的是简单的梯形或辛普森规则,或集成样条插值等。

标签: python math python-2.7 integral


【解决方案1】:

如何在代码中可靠地找出给定坐标的函数?

你不能。给定一组点,有无数个函数通过所有这些点。其中一个可以使用polynomial of degree up to N 构建(其中 N 是您拥有的数据点的数量)。然而,这个函数几乎永远不会与您试图表示的现实相匹配(它通常最终会在数据点之间剧烈振荡)。一般来说,你能做的最好的就是创建某种积分的近似值。

只要您的采样率足够,您描述的近似值在大多数函数上都不会太差,尽管您可以使用 trapeziodal ruleSimpson's Rule 做得更好。

【讨论】:

  • “但是,这个函数几乎永远不会与你试图表示的现实相匹配”——插值的重点是完美地遍历所有点。该函数将在点外(在第一个点之前和最后一个点之后)剧烈振荡,但会精确地平滑地通过每个点。
  • 原谅我的无知,但是不知道函数的人如何实现辛普森规则?
  • @Bohren -- 例如见this
  • @Tim 函数也可以在点之间疯狂振荡。如果您在 0、1 和 2 处拟合 100e^{-x} 的二次方,则在 0 和 2 之间看起来很好。但如果您在 0、1 和 2 处拟合 100e^{-4x} 的二次方,则抛物线的顶点现在在 (2.5,-11.1) 附近。与此相关的一个更人为但更激烈的示例是查看一个通过 (0,1)、(c,0) 和 (1,0) 的二次方程,因为 c 变小了。你会发现 y=(x-c)(x-1)/c,它的顶点在 ((c+1)/2,-(1-c)^2/4c),它朝着 (1/2, -无穷大)。
猜你喜欢
  • 1970-01-01
  • 2020-11-14
  • 2016-06-09
  • 2017-12-17
  • 1970-01-01
  • 1970-01-01
  • 2011-07-28
  • 1970-01-01
  • 2014-03-22
相关资源
最近更新 更多