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

时间:2013-01-19 12:37:07

标签: python math

为什么0 ** 0在Python中等于1?它不应该像0 / 0那样抛出异常吗?

3 个答案:

答案 0 :(得分:36)

维基百科对0 ** 0的价值history and the differing points of view on进行了有趣的报道:

  

辩论至少从19世纪初开始。那时,大多数数学家都同意0 ** 0 = 1,直到1821年,Cauchy在未定义形式的表格中列出0 ** 0以及0⁄0等表达式。在19世纪30年代,Libri对0 ** 0 = 1发表了一个令人难以置信的论点,而Möbius则支持他......

应用于计算机时,IEEE 754建议使用多种计算功能的功能。它将pow(0, 0)pown(0, 0)定义为返回1,将powr(0, 0)定义为返回NaN

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

答案 1 :(得分:8)

考虑x^x

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

x^x= exp(log(x^x))

现在,我们来自:

lim x->0 exp(log(x^x))= exp(lim x->0 xlog(x)) = exp(lim x->0 log(x)/(x^-1))

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

exp(lim x^-1/(-x^-2)) = exp(lim x->0 -x) = exp(0) = 1=x^x

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

  

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

答案 2 :(得分:-1)

2 ^ 2 =(1 + 1)*(1 + 1)= 4(两个对象出现了两次)

2 ^ 1 =(1 + 1)* 1 = 2(一次出现两个对象)

2 ^ 0 =(1 + 1)* 0 = 0(未发生两个对象)

1 ^ 2 = 1 *(1 + 1)= 2(一个对象出现两次)

1 ^ 1 = 1 * 1 = 1(一次出现一个物体)

1 ^ 0 = 1 * 0 = 0(未发生一个物体)

0 ^ 2 = 0 *(1 + 1)= 0(两次出现零个对象)

0 ^ 1 = 0 * 1 = 0(一次出现零个对象)

0 ^ 0 = 0 * 0 = 0(没有出现零个对象)

因此,您不能一无所有!