Экспоненциальный Fit с Apache Commons Math

Я пытаюсь выполнить экспоненциальное сопоставление различных точек (x,y) по формуле A*EXP(-BX), пытаясь найти A и B, которые лучше всего соответствуют моим точкам.

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

Я получил некоторые цифры, но они никак не соответствуют моим точкам. Кажется, я не могу найти никакой документации по вышеуказанному.

Использование commons-math3-3.0

1 ответ

Решение

Если вы пытаетесь оценить это, я предлагаю вам взять журнал у, который даст вам график

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
Другие вопросы по тегам