JS指数曲线拟合

JS exponential curve fit

本文关键字:曲线拟合 指数 JS      更新时间:2023-09-26

我正在尝试制作一个简单的函数来在给定数据集的情况下进行指数曲线拟合。 我写了以下内容:

  function expCurveFit(d){
    var sum_x2 = 0, sum_lny = 0, sum_x = 0, sum_xlny = 0, n = d.length;
    for(var i=0;i<d.length;i++){
      var x = d[i][0];
      var y = d[i][1];
      sum_x2 += x^2, sum_lny += Math.log(y), sum_x += x, sum_xlny += x*Math.log(y);
    }
    var a = ((sum_lny*sum_x2)-(sum_x*sum_xlny))/((n*sum_x2)-sum_x^2);
    var b = ((n*sum_xlny)-(sum_x*sum_lny))/((n*sum_x2)-sum_x^2);
    return [a,b];
  }

但是 A 和 B 似乎不正确。 我正在 Wolfram 使用基本公式。 输入的数组采用 [[x1,y1],[x2,y2]...[xn,yn]] 的形式。 有人有工作建议、插件、库或修改的功能吗?

^

是 JavaScript 中的 XOR 运算符,而不是幂。

x^2替换为 Math.pow(x,2)x*x,并对有sum_x^2的两个位置执行相同的操作。

除了标记为

此问题的答案的 XOR 运算符外,ab 系数也存在错误。

使用此方法拟合的曲线是 Y = B * exp(A * x) ,正如 Wolfram 中所写的那样,但B = bA = exp(a)

所以你必须将返回[a,b]更改为[ Math.exp(a), b](如果你想用这个数组作为"方程")