Why 0 ** 0 equals 1 in python

后端 未结 3 438
独厮守ぢ
独厮守ぢ 2020-12-03 13:07

Why does 0 ** 0 equal 1 in Python? Shouldn\'t it throw an exception, like 0 / 0 does?

相关标签:
3条回答
  • 2020-12-03 13:51

    2^2 = (1+1)*(1+1) = 4 (two objects occured two times)

    2^1 = (1+1)*1 = 2 (two objects occured one time)

    2^0 = (1+1)*0 = 0 (two objects did not occur)

    1^2 = 1 *(1+1) = 2 (one object occured two times)

    1^1 = 1 *1 = 1 (one object occured one time)

    1^0 = 1 *0 = 0 (one object did not occur)

    0^2 = 0 *(1+1) = 0 (zero objects occured twice)

    0^1 = 0 *1 = 0 (zero objects occured once)

    0^0 = 0 *0 = 0 (zero objects did not occur)

    Therefore you cannot make something from nothing!

    0 讨论(0)
  • 2020-12-03 13:56

    consider x^x:

    Using limits we can easily get to our solution and rearranging x^x we get :

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

    Now , we have from:

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

    Applying L'Hôpital rule , we get :

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

    But according to Wolfram Alpha 0**0 is indeterminate and following explanations were obtained by them :

    0^0 itself is undefined. The lack of a well-defined meaning for this quantity follows from the mutually contradictory facts that a^0 is always 1, so 0^0 should equal 1, but 0^a is always 0 (for a>0), so 0^0 should equal 0. It could be argued that 0^0=1 is a natural definition since lim_(n->0)n^n=lim_(n->0^+)n^n=lim_(n->0^-)n^n=1. However, the limit does not exist for general complex values of n. Therefore, the choice of definition for 0^0 is usually defined to be indeterminate."

    0 讨论(0)
  • 2020-12-03 14:05

    Wikipedia has interesting coverage of the history and the differing points of view on the value of 0 ** 0:

    The debate has been going on at least since the early 19th century. At that time, most mathematicians agreed that 0 ** 0 = 1, until in 1821 Cauchy listed 0 ** 0 along with expressions like 0⁄0 in a table of undefined forms. In the 1830s Libri published an unconvincing argument for 0 ** 0 = 1, and Möbius sided with him...

    As applied to computers, IEEE 754 recommends several functions for computing a power. It defines pow(0, 0) and pown(0, 0) as returning 1, and powr(0, 0) as returning NaN.

    Most programming languages follow the convention that 0 ** 0 == 1. Python is no exception, both for integer and floating-point arguments.

    0 讨论(0)
提交回复
热议问题