2012-10-29 19 views
5

Próbuję zrobić wykładnicze dopasowanie w różnych punktach (x, y) za pomocą formuły A * EXP (-BX), próbując znaleźć A i B, które najlepiej pasują do moich punktów.Wykładniczy pasujący do apache commons matematyka

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

Dostaję liczby, ale one nie pasują do moich punktów w żaden sposób, Nie mogę znaleźć żadnej dokumentacji na powyższym.

Korzystanie commons-math3-3.0

Odpowiedz

6

Jeśli próbujesz oszacować to proponuję wziąć dziennik y, które dadzą Ci wykres

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

Od tego można obliczyć nachylenie i punkt przecięcia.

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

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

użył twojej formuły, a następnie użył PolynomialFitter zamiast dzięki! – Rodriguez

Powiązane problemy