【问题标题】:Calculate inverse proportion from 3 points从3点计算反比例
【发布时间】:2012-06-29 21:47:26
【问题描述】:

如果已经有人问过这个问题,我深表歉意 - 我不确定在这里使用的正确术语,所以如果有,希望它能帮助像我这样的其他人找到被标记为欺骗的任何内容。

我希望从 3 个点为代码(理想情况下是 C# 或 Javascript)中的曲线创建一个公式 - 公式应采用 y = a/(t+b) + c 的形式,其中 t 是时间 -水平轴 - y 是垂直轴。显然 a、b 和 c 只是为了进行图形拟合。

我该怎么做呢?我应该使用现有的库吗?

源数据有超过 3 个数据点可用,我只是在寻找将 1/x 曲线拟合到数据的最简单方法 - 因此,例如,如果需要 4 个点来获得易于提供的准确度作为输入。

【问题讨论】:

  • 找数学方法然后编码不是更容易吗?
  • 如果通过数学方法你的意思是其他潜在的公式,比如三次 - 我知道有几种方法可以将三次曲线应用于点集,但是这个数据基本上是 1/x 形状的 - 我只需要将每个数据集都返回到这个通用公式。
  • @ChrisMoschini 您是说要将这种特定形式的方程拟合到您的数据中并针对 a、b 和 c 进行优化,还是只是用它来说明数据的形状?
  • “拟合”是指最小二乘近似,还是要寻找与您的点重合的曲线?
  • 与输入点重合的曲线很好。它只是用来说明数据的形状,并粗略推断给定集合中数据可能丢失的位置。

标签: c# math graph curve-fitting


【解决方案1】:

如果您正在寻找适合表单的功能

    y(t) = a/(t + b) + c

对于一组数据点,您面临非线性最小二乘问题,您可以使用 Gauss-Newton 或 Levenberg-Marquardt 方法。但是,有一个名为 Loeb's algorithm 的旧算法,当您的近似值是多项式。它通过线性化最小二乘问题并产生迭代最小二乘解决方案来工作(尽管在实践中您将通过一次迭代获得良好的结果)。我为我的博士学位研究了这个算法,我强烈推荐它用于任何你想使用多项式比率来近似数据点的实际问题(你的例子是非常简单的例子)。

缺点是该算法非常陈旧,您可能很难找到合适的文档。如果可以的话,实现起来并不比标准线性最小二乘近似更复杂。如果您的问题在这里没有得到更好的答案,请考虑使用谷歌搜索。如果您找不到合适的信息,请告诉我,我会将我的论文上传到我的网站(包含方法的实现细节),您可以下载它。

正如我所说,您可能会在这里得到一个简单得多的答案,但如果不是,那肯定是您可以选择的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    • 2022-08-18
    • 2019-01-31
    • 1970-01-01
    • 2014-08-03
    • 2015-05-24
    • 1970-01-01
    相关资源
    最近更新 更多