如何获得计算下一步的功能? (不一定要准确......)最好的方法是什么?
它看起来是指数级的,但具有什么比例?
https://www.wolframalpha.com/input/?i=%5B100,+400,+3100,+36500,+305600,+1970981%5D
答案 0 :(得分:1)
这就是我在R中的表现:
> times <- c(100, 400, 3100, 36500, 305600, 1970981, 13855774)
> n <- 1:7
> lm.fit <- lm(log(times) ~ n)
> summary(lm.fit)
Call:
lm(formula = log(times) ~ n)
Residuals:
1 2 3 4 5 6 7
0.33742 -0.31605 -0.30811 0.11805 0.20326 0.02751 -0.06208
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2.22800 0.22945 9.71 0.000197 ***
n 2.03976 0.05131 39.76 1.9e-07 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.2715 on 5 degrees of freedom
Multiple R-squared: 0.9968, Adjusted R-squared: 0.9962
F-statistic: 1581 on 1 and 5 DF, p-value: 1.898e-07
基本想法是time = A*e^(kn)
然后log(time) = kn + log(A)
。当您对log(time)
的{{1}}进行线性回归时,n
的系数是增长率,截距是常数倍的对数。在这种情况下,拟合非常好(如R平方统计量超过0.99所示),因此数据的指数模型是合理的。由于n
约为9.28,因此非常适合您的数据:
exp(2.228)
请注意,“好”是相对的。近似中的绝对误差相当大,但n = 6和7时相对误差很小。此外,n = 7是一个小样本量,并且基于泛化在那是危险的。最后,随着n增加,诸如垃圾收集之类的事情可能变得更加重要,导致例如更长的运行时间。 n = 8或9比公式预测的那样。