5

我正在尝试使用公式 A*EXP(-BX) 对各个点 (x,y) 进行指数拟合,试图找到最适合我的点的 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

4

1 回答 1

9

如果您试图估计这一点,我建议您记录 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
于 2012-10-29T17:46:56.753 回答