なぜPythonで0 ** 0
等しいのですか?1
のように、例外をスローするべきではあり0 / 0
ませんか?
3 に答える
ウィキペディアには、歴史の興味深い報道と、次の価値に関するさまざまな視点が0 ** 0
あります。
議論は少なくとも19世紀初頭から続いています。当時、ほとんどの数学者は
0 ** 0 = 1
、1821年まで、コーシーが未定義の形式の表の0 ** 0
ような表現とともにリストされていることに同意しました。0⁄0
1830年代に、Libriは説得力のない議論を発表し0 ** 0 = 1
、Möbiusは彼を支持しました...
コンピュータに適用されるように、IEEE754は電力を計算するためのいくつかの関数を推奨しています。それはpow(0, 0)
、pown(0, 0)
を返すこと1
、およびpowr(0, 0)
を返すこととして定義しNaN
ます。
ほとんどのプログラミング言語は、その規則に従います0 ** 0 == 1
。Pythonも例外ではなく、整数引数と浮動小数点引数の両方です。
検討して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に等しいはずです。lim_(n-> 0)n ^ n = lim_(n-> 0 ^ +)n ^ n = lim_(n-> 0)なので、0 ^ 0=1は自然な定義であると主張できます。 ^-)n ^ n=1。ただし、nの一般的な複素数値には制限はありません。したがって、0 ^ 0の定義の選択は、通常、不確定であると定義されています。」
2 ^ 2 =(1 + 1)*(1 + 1)= 4(2つのオブジェクトが2回発生しました)
2 ^ 1 =(1 + 1)* 1 = 2(2つのオブジェクトが一度に発生しました)
2 ^ 0 =(1 + 1)* 0 = 0(2つのオブジェクトは発生しませんでした)
1 ^ 2 = 1 *(1 + 1)= 2(1つのオブジェクトが2回発生しました)
1 ^ 1 = 1 * 1 = 1(1つのオブジェクトが1回発生しました)
1 ^ 0 = 1 * 0 = 0(1つのオブジェクトは発生しませんでした)
0 ^ 2 = 0 *(1 + 1)= 0(ゼロオブジェクトが2回発生しました)
0 ^ 1 = 0 * 1 = 0(ゼロオブジェクトが1回発生)
0 ^ 0 = 0 * 0 = 0(ゼロオブジェクトは発生しませんでした)
したがって、何もないところから何かを作ることはできません!