2012-10-29 32 views
5

Tôi đang cố gắng thực hiện một hàm mũ theo các điểm khác nhau (x, y) với công thức A * EXP (-BX), cố gắng tìm A và B phù hợp nhất với điểm của tôi.Exponential Fit với apache commons math

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}); 

Tôi nhận được một số nhưng không phù hợp với điểm của tôi theo bất kỳ cách nào, dường như không tìm thấy bất kỳ tài liệu nào ở trên.

Sử dụng commons-math3-3.0

Trả lời

6

Nếu bạn đang cố gắng để ước tính này, tôi đề nghị bạn hãy đăng nhập của y mà sẽ cung cấp cho bạn một đồ thị

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

Từ đó bạn có thể tính toán độ dốc và chặn.

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

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

đã sử dụng công thức của bạn và sau đó sử dụng PolynomialFitter thay vì cảm ơn! – Rodriguez

Các vấn đề liên quan