C# 从3个点计算反比例

C# 从3个点计算反比例,c#,math,graph,curve-fitting,C#,Math,Graph,Curve Fitting,如果已经有人问过这个问题,我很抱歉——我不确定这里使用的术语是否正确,所以如果有,希望它能帮助像我这样的其他人找到任何被标记为重复的东西 我希望在代码中为曲线创建一个公式(理想情况下是C#或Javascript),从3个点开始-公式的形式应该是y=a/(t+b)+C,其中t是时间-水平轴-y是垂直轴。显然,a、b和c只是为了图的拟合 我该怎么办?是否有我应该使用的现有库 源数据有3个以上的可用数据点,我只是在寻找将1/x曲线拟合到数据的最简单方法-因此,如果例如需要4个点以获得精度,那么很容易将

如果已经有人问过这个问题,我很抱歉——我不确定这里使用的术语是否正确,所以如果有,希望它能帮助像我这样的其他人找到任何被标记为重复的东西

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

我该怎么办?是否有我应该使用的现有库


源数据有3个以上的可用数据点,我只是在寻找将1/x曲线拟合到数据的最简单方法-因此,如果例如需要4个点以获得精度,那么很容易将其作为输入。

如果您希望拟合表单的函数

    y(t) = a/(t + b) + c
对于一组数据点,您将面临一个非线性最小二乘问题,您可以使用高斯-牛顿或列文伯格-马夸特方法。然而,有一个名为“Loeb算法”的旧算法,当近似值是多项式的比率时,它可以用来生成好的(但不是最佳的-可以证明它不会收敛到最佳近似值)近似值。它的工作原理是将最小二乘问题线性化,得到一个迭代的最小二乘解(尽管在实践中,你只需一次迭代就能得到很好的结果)。我在攻读博士学位时研究过这个算法,我强烈推荐它用于任何实际问题,在这些问题中,您需要使用多项式比率来近似数据点(您的例子非常简单)

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


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

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