2012-10-29 72 views
5

我試圖做一個指數適合各種點(x,y)與公式A * EXP(-BX),試圖找到A和B最適合我的觀點。指數擬合與Apache的公用數學

double[] xx = curveFitter.fit(new ParametricUnivariateFunction() { 
       public double value(double v, double... doubles) { 
        return doubles[0] * Math.exp(-1 * doubles[1] * v); 
       } 

       public double[] gradient(double v, double... doubles) { 
        return new double[]{v, 1}; 
       } 
      }, new double[]{0, 0}); 

我得到一些數字,但他們不符合我的觀點,似乎無法找到上述任何文檔。

使用公地math3-3.0

回答

6

如果你想估計這一點,我建議你把y的日誌,這將給你一個圖形

y' = log(y) = A - B * x; 

從這個就可以計算出斜率和攔截。

slope = sum((x - mean(x)) * (y' - mean(y'))/sum((x - mean(x))^2) // -B 

intercept = mean(y' - x * slope) // A 
+1

使用你的公式,然後使用PolynomialFitter,而不是謝謝! – Rodriguez