JS指数曲线拟合

JS exponential curve fit

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

  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]]。谁有工作建议,插件,库,修改过的功能?

^ is the XOR operator 在 JavaScript 中,不是求幂。

x^2 替换为 Math.pow(x,2)x*x,并对 sum_x^2.

的两个地方执行相同的操作

除了XOR operator被标记为这个问题的答案外,ab系数还有一个错误.

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

所以你必须将 return [a,b] 更改为 [ Math.exp(a), b] (如果你想将此数组用作 "equation")