哪个函数增长更快,指数增长或阶乘?[关闭]


71

哪个函数增长更快,指数增长(例如2 ^ n,n ^ n,e ^ n等)还是阶乘(n!)?附言:我只是在某个地方读书,n!增长速度快于2 ^ n。


5
问:为什么不尝试呢?用一个程序,还是干脆看看几个数字?您所花的时间少于问这个问题的时间;)
paulsm4 2012年

4
想看这个吗?
Alvin Wong

3
@ paulsm4,我已经尝试过使用简单的excel。但是,不幸的是,由于溢出,我不能超过144(即144 ^ 144)。因此,我想就此提出一些理论证明。
devsathish

7
@ paulsm4这不只是尝试而已。曲线可能具有欺骗性。结果取决于系数,并且交叉点可能很难找到。
Dan Nissenbaum 2013年

2
我投票结束这个题为离题,因为它与编程无关。这将是更适合于math.stackexchange.com
Dharman

Answers:



74

n! = n * (n-1) * (n-2) * ...

n^n = n * n * n * ...

第一个输入项之后的每个项n^n都更大,因此n ^ n会增长得更快。


5
没有比这更简单的解释了。
sn.anurag

与@ sn.anurag相同的评论,我喜欢您的简单解释,简单而强大:)
ibra

这应该添加到接受的答案中。
Marius Tamulis

3

n^n变得大于n!-为了得到很好的解释,请参阅@AlexQueue的答案。

对于其他情况,请继续阅读:

阶乘函数的渐进性确实比指数函数大,但是当差开始时尚不清楚。例如,对于n=5k=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,因此在实践中,我们可以假设阶乘函数严格大于指数函数。


1

我想向您展示一种更加图形化的方法,以非常轻松地证明这一点。我们将使用除法来绘制函数图形,这将很容易向我们展示。

让我们使用一个基本且无聊的除法函数来解释除法的性质。

用变量a和b除

随着增加,对该表达式的评估也增加。随着b的减小,对该表达式的评估也随之减小。

使用这个想法,我们可以根据期望增加和减少的情况绘制图表,并比较增加速度更快的图表。

在我们的案例中,我们想知道指数函数的增长速度是否会比阶乘函数快,反之亦然。我们有两种情况,一个是可变指数与可变阶乘的常数,另一个是可变指数与可变阶乘的变量。

用Desmos绘制这些工具的图(无隶属关系,这只是一个不错的工具),向我们展示了这一点:

常数到变量指数与变量阶乘的关系图

图1

尽管起初似乎指数表达式增加得更快,但是它达到了不再以如此快的速度增长的程度,取而代之的是阶乘表达式的增长更快。

变量到变量指数与变量阶乘的关系图

图2

尽管它最初似乎较慢,但在该点之后开始迅速上升,因此我们可以得出结论,指数必须比阶乘更快地增长。


0

斯特林近似表明

$ n!\ approx \ sqrt {2 \ pi n} \ left(\ frac {n} {e} \ right)^ n $$


3
我们在这里不支持LaTex。即使我们这样做,您也只是从Wikipedia复制了一个公式。那不是答案。
Dharman
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.