Excel VBA 数学教室ではアフィリエイトプログラムを利用して商品を紹介しています。

0の0乗

数学よもやま話です。今回は「0の0乗はいくつになる?」というお話でもしようかと思っているのですが、実は私にもよくわからないのです。これは本当に難しい問題で、考えれば考えるほど頭が混乱します。わからないまま記事を書くというのも無責任な話ではありますが、こうなったら皆さんにも一緒に悩んでもらおうと、徐に筆を取った次第です。

0の0乗はいくつ?

0の0乗をどのように定義すべきかについては、専門家の間でも意見が分かれています。
「0の0乗は定義できない(したくない)」
と言う人もいれば、
「0の0乗は1とするべきだ」
と主張する人もいます。おそらく「定義できない」というほうが多数派で、高校数学の教科書にもそのように書かれています。しかし数学は多数決で決まるわけではないので、安易に「定義できない」と決めつけてしまうわけにもいきません。
 
まずは素朴に指数法則の原点に立ち返ってこの問題を考えてみます。実数 $x$ について $x^1=x$ と定めておいて、
 \[\begin{align*}&x^2\,=x\cdot x^1\\[6pt]&x^3\,=x\cdot x^2\\[6pt]&x^4\,=x\cdot x^3\\[6pt]&\cdots\cdots\cdots\cdots\\[6pt]&x^n\,=x\cdot x^{n-1}\\[6pt]&x^{n+1}\,=x\cdot x^n\end{align*}\]
というように次々と $x$ を乗じて再帰的に $x^n$ ($n$ は正整数) を定義する、というのが指数法則です。この定義をそのまま拡張しようとして $n=0$ を代入してみると
 \[x^{0+1}=x\times x^0\]
すなわち、
 \[x=x\times x^0\tag{1}\]
となります。$x$ が $0$ でなければ、両辺を $x$ で割って
 \[x^0=1\]
を得ることになります。これはよく知られた定義のひとつです。しかし、$x$ が $0$ のときは大変困るわけです。(1) の両辺を $0$ で割ることはできないので、$x=0$ のところでも恣意的に 0の0乗を
 \[0^0=1\]
と決めてよいものかどうか、悩みどころなのです。

少し見方を変えることにしましょう。
$z=x^y$ という 2 変数関数を定義して、$x$ と $y$ を $0$ に近づけて、もしその極限値があるなら、その値を $0^0$ と定めてもよいかもしれません。でも確定しないんですね。
 
0の0乗は1 z=x^yは原点で不連続です(C) Sam Derbyshire
 
図にあるように、$z=x^y$ は原点に近づく経路によって異なる極限値をとるのです。$y$ 軸に沿って近づけば
 \[\lim_{y\rightarrow +0}0^y=0\]
となるし、
 \[\lim_{x\rightarrow +0}x^0=1\]
となってしまいます。$0^0$ そのものだけでなく、極限値すらも存在しないようでは、やはり値を定めてもらう資格(?)などないと考えるのが自然なのかもしれません。

でも実は $0^0=1$ としていることもあるんですね。おそらく理系の皆さんなら、ほとんどの人が無意識にやってます。それがあの有名な指数関数の級数展開
 \[e^x=\sum_{n=0}^{\infty}\frac{x^n}{n!}\]
です。$e^x$ は もちろん $x=0$ でも定義されていて、その値は $e^0=1$ です。上の級数で $x=0$ とおくと
 \[e^0=\frac{0^0}{0!}+\frac{0^1}{1!}+\frac{0^2}{2!}+\:\cdots\]
となるので、最初の項以外はすべて $0$ です。となると、この級数展開が成り立つためには最初の項を $1$ とせざるを得ないのです。指数関数が展開できないなんて困りますよね。だからやっぱり、0の0乗は $1$ と定義すべきなんでしょうかね … 混乱してきました。皆さんの意見もコメントでお聞かせください。

ちなみに、たいていのプログラミング言語(Ruby, Python, Java … など)では、0の0乗を演算させると 1 を返すように設計されていますが、Excel では 0の0乗は定義されておらず、セルに「=0^0」と入力すると、#NUM! エラーが表示されます。累乗を返す POWER 関数を使って「=POWER(0,0)」としても、同じく#NUM! が返ります。複素数用の累乗関数 IMPOWER も同じです。

しかし、Excel に搭載されている VBA は 0^0 に 1 を返すようになっています。なので、以下のようなユーザー定義関数を VBA で実装しておけば、ワークシート上で 0 の 0 乗が 1 を返すような計算を実行できます。

'[VBA] 0の0乗が1を返すべき乗関数
Function POWER_2(x As Double, y As Double)
  POWER_2 = x ^ y
End Function

適当なセルに「=POWER_2(0,0)」を入力すると 1 が返ります。

ChatGPTに0の0乗の値を尋ねてみました

今大流行している物知りAIのChatGPTに0の0乗について尋ねてみました。
 
[Q] 0の0乗はいくつですか?
 
[A] 数学的には、0の0乗の値は未定義です。0の正の指数乗は常に0となりますが、0の0乗については特定の値を持つという合意は存在しません。0の0乗に関しては、異なる数学的なコンテキストや問題領域において、さまざまな定義や取り扱いがされることがあります。例えば、一部の数学分野や物理学においては、0の0乗を1とみなす場合もあります。しかし、一般的な数学の規則や多くの数学者による合意では、0の0乗は未定義とされます。そのため、具体的な文脈や定義によって異なる結果が出ることがありますが、一般的な数学的な見解では、0の0乗の値は存在しないとされます。

エクセルや数学に関するコメントをお寄せください