【问题标题】:Nonlinear (hyperbola) curve fitting in JavaJava中的非线性(双曲线)曲线拟合
【发布时间】:2019-03-27 13:11:01
【问题描述】:

我有在运行时产生数据的算法。可以保证该值在此期间呈下降趋势,并且在理想条件下,它将类似于双曲线(或至少具有双曲线形状)。基本绘制图(x 轴是时间,y 轴是值)如下所示:

现在,我想预测一下,在运行期间n 时间步之后的值会是什么样子。我尝试使用来自org.apache.commons.math3 的线性或多项式回归,但显然,由于曲线不是线性的也不是多项式的,因此预测不会很好。此外,这两个预测都提供了没有下降趋势的曲线。

为了解决这个问题,我尝试使用odinsbane's least squares,但我无法提供正确的第一个参数假设,因此无法正确拟合曲线。

所以我的问题是:是否有任何 kotlin/java 库,可以在我不提供第一个参数估计的情况下正确拟合我的数据?

【问题讨论】:

    标签: java optimization curve-fitting data-fitting


    【解决方案1】:

    我的最终解决方案是使用this,它是Levenberg–Marquardt 求解器。 我将通用双曲线函数a + b/(x + c) 分解为a * c + a * x + b - y * c = xy - 因此:

    • setTargetValues收到x*y数据
    • setValues 提供 a * c + a * x + b - y * c
    • setDerivatives 提供 [c + x, 1, a - y]

    这让我可以拟合“双曲线”数据。

    【讨论】:

      猜你喜欢
      • 2021-05-08
      • 1970-01-01
      • 2019-03-15
      • 1970-01-01
      • 2017-09-15
      • 2017-12-17
      • 2021-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多