数学よもやま話です。今回は「 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$ と定めてもよいかもしれません。でも確定しないんですね。
(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 が返ります。
エクセルや数学に関するコメントをお寄せください