哪个函数增长更快,指数增长(例如2 ^ n,n ^ n,e ^ n等)还是阶乘(n!)?附言:我只是在某个地方读书,n!增长速度快于2 ^ n。
哪个函数增长更快,指数增长(例如2 ^ n,n ^ n,e ^ n等)还是阶乘(n!)?附言:我只是在某个地方读书,n!增长速度快于2 ^ n。
Answers:
n!最终比具有恒定基数(2 ^ n和e ^ n)的指数增长更快,但是n ^ n的增长比n!快!因为基数随着n的增加而增长。
n^n
吗?
n! = n * (n-1) * (n-2) * ...
n^n = n * n * n * ...
第一个输入项之后的每个项n^n
都更大,因此n ^ n会增长得更快。
n^n
变得大于n!
-为了得到很好的解释,请参阅@AlexQueue的答案。
对于其他情况,请继续阅读:
阶乘函数的渐进性确实比指数函数大,但是当差开始时尚不清楚。例如,对于n=5
和k=10
,阶乘5!=120
仍小于10^5=10000
。为了发现阶乘函数何时开始变大,我们必须进行一些快速的数学分析。
我们使用斯特林公式和基本对数操作:
log_k(n!) ~ n*log_k(n) - n*log_k(e)
k^n = n!
log_k(k^n) = log_k(n!)
n*log_k(k) = log_k(n!)
n = log_k(n!)
n ~ n*log_k(n) - n*log_k(e)
1 ~ log_k(n) - log_k(e)
log_k(n) - log_k(e) - 1 ~ 0
log_k(n) - log_k(e) - log_k(k) ~ 0
log_k(n/(e*k)) ~ 0
n/(e*k) ~ 1
n ~ e*k
因此,一旦n
达到的3倍k
,阶乘函数将开始大于指数函数。对于大多数现实情况,我们将使用的大值n
和的小值k
,因此在实践中,我们可以假设阶乘函数严格大于指数函数。
我想向您展示一种更加图形化的方法,以非常轻松地证明这一点。我们将使用除法来绘制函数图形,这将很容易向我们展示。
让我们使用一个基本且无聊的除法函数来解释除法的性质。
随着增加,对该表达式的评估也增加。随着b的减小,对该表达式的评估也随之减小。
使用这个想法,我们可以根据期望增加和减少的情况绘制图表,并比较增加速度更快的图表。
在我们的案例中,我们想知道指数函数的增长速度是否会比阶乘函数快,反之亦然。我们有两种情况,一个是可变指数与可变阶乘的常数,另一个是可变指数与可变阶乘的变量。
用Desmos绘制这些工具的图(无隶属关系,这只是一个不错的工具),向我们展示了这一点:
尽管起初似乎指数表达式增加得更快,但是它达到了不再以如此快的速度增长的程度,取而代之的是阶乘表达式的增长更快。
尽管它最初似乎较慢,但在该点之后开始迅速上升,因此我们可以得出结论,指数必须比阶乘更快地增长。