为什么0**0在python中等于1

kas*_*sky 29 python math

为什么在Python 中0 ** 0相同1?不应该抛出异常0 / 0吗?

NPE*_*NPE 37

维基百科对历史和有关价值观的不同观点进行了有趣的报道0 ** 0:

辩论至少从19世纪初开始.那时,大多数数学家一致同意0 ** 0 = 1,直到1821年柯西列出0 ** 0了类似于0?0未定义形式的表格中的表达.在19世纪30年代,Libri发表了一个令人难以置信的论据0 ** 0 = 1,并且Möbius支持他......

应用于计算机时,IEEE 754推荐了几种计算功率的功能.它定义pow(0, 0)pown(0, 0)作为返回1powr(0, 0)返回NaN.

大多数编程语言都遵循惯例0 ** 0 == 1.对于整数和浮点参数,Python也不例外.


小智 8

考虑x^x:

使用限制我们可以轻松地获得我们的解决方案并重新安排x^x我们得到:

x^x= exp(log(x^x))
Run Code Online (Sandbox Code Playgroud)

现在,我们来自:

lim x->0 exp(log(x^x))= exp(lim x->0 xlog(x)) = exp(lim x->0 log(x)/(x^-1))
Run Code Online (Sandbox Code Playgroud)

应用L'Hôpital规则,我们得到:

exp(lim x^-1/(-x^-2)) = exp(lim x->0 -x) = exp(0) = 1=x^x
Run Code Online (Sandbox Code Playgroud)

但根据Wolfram Alpha的0**0说法是不确定的,他们得到了以下解释:

0 ^ 0本身未定义.对于这个数量缺乏明确定义的含义来自相互矛盾的事实,即^ 0总是1,所以0 ^ 0应该等于1,但0 ^ a总是0(对于a> 0),所以0 ^ 0应等于0.可以说,0 ^ 0 = 1是由于lim_(正> 0)N 1,N = lim_(N-> 0 ^ +)N 1,N = lim_(N-> 0的自然定义^ - )N 1,N = 1.但是,对于n的一般复数值,不存在限制.因此,0 ^ 0的定义选择通常被定义为不确定的."