为什么Math.pow(1,Infinity)会返回NaN?

use*_*627 7 javascript

我一直认为1的任何幂等于1,但Math.pow(1, Infinity)返回NaN.为什么不是1?

jef*_*eff 5

这更像是一个数学问题而不是 Javascript 问题,因此您可以使用如下数学解释(http://mathforum.org/library/drmath/view/53372.html):

当你有像“无穷大”这样的东西时,你必须意识到它不是一个数字。通常你的意思是某种限制过程。因此,如果您有“1^无穷大”,那么您真正拥有的是某种限制:底数并不是真正的 1,而是越来越接近 1,而指数可能越来越大,例如 (x+ 1)^(1/x) 作为 x->0+。

问题是,哪个发生得更快,基数接近 1 还是指数变大?欲知详情,请致电:

L = lim x->0 of (x+1)^(1/x)

然后:

ln L = lim x->0 of (1/x) ln (x+1) = lim x->0 of ln(x+1) / x

那是什么?因为 x->0 它是 0/0 形式,所以取顶部和底部的导数。然后我们得到 lim x->0 of 1/(x+1) / 1,即 = 1。所以 ln L = 1,L = e。凉爽的!

真的吗?尝试插入一个大的 x 值。或者将此限制视为 e 定义的变体。不管怎样,这是真的。极限是 1^infinity 形式,但在这种情况下它是 e,而不是 1。尝试使用指数中的 (2/x) 或 (1/x^2) 或 1/(sqrt (x)),看看这如何改变答案。

这就是我们称其为不确定的原因——极限的所有这些不同版本都接近 1^无穷大,但最终答案可以是任何数字,例如 1、无穷大或未定义。您需要做更多的工作来确定答案,因此 1^infinity 本身尚未确定。换句话说,1只是1^无穷大的答案之一。

“不确定”的答案不是数字。

  • 您正在计算 `lim_{x->1,y->∞}(x^y) = (1)^(∞)`,这是不确定的。但是`lim_{y->∞}(1^y) = 1^(∞) = 1` (3认同)