0の0乗

0 の 0 乗（れいのれいじょう）は、累乗あるいは指数関数において、底を 0、指数を 0 としたものである。その値は、代数学、組合せ論などの文脈では通常 1 と定義される一方で、解析学の文脈では二変数関数 xy が原点 (x, y) = (0, 0) において連続とならないため定義されない場合もある。 実数 x の正整数 n 乗は、素朴には、n 個の x を掛け合わせたものである。厳密には、次のように再帰的に定められる。 ( ∗ ) x 1 := x , ( ∗ ∗ ) x n + 1 := x n × x ( n ≥ 1 ) . {\displaystyle {\begin{aligned}&(*)&x^{1}&:=x,\\&(**)&x^{n+1}&:=x^{n}\times x\quad (n\geq 1).\end{aligned}}} x0 を定義する場合には、関係式 ( ∗ ∗ ) {\displaystyle (**)} が n = 0 でも成立するように定義を拡張するのが自然である。 そこで、 ( ∗ ∗ ) {\displaystyle (**)} に無理やり n = 0 を代入すれば、x0 + 1 = x0 × x すなわち x = x0 × x となり、x が 0 でなければ両辺を x で割って x0 = 1 を得る。すなわち、x ≠ 0 の場合は、x0 ≔ 1 と定めることで、関係式 ( ∗ ∗ ) {\displaystyle (**)} が n ≥ 0 {\displaystyle n\geq 0} に対して成り立つように定義を拡張できる。さらに負の整数 −n に対しても x−n ≔ 1/xn と定義すれば ( ∗ ∗ ) {\displaystyle (**)} が満たされ、 x ≠ 0 の整数乗がうまく定義されて、指数法則 xn + m = xn xm や xnm = (xn)m が任意の整数 n, m に対して成立する。 次に、指数が実数の場合を考えよう。底が x ≠ 0 の場合は、上述のように整数乗が定まるのであった。詳細は省略するが、底を x > 0 の場合に制限すれば、指数法則が成り立ったまま指数を有理数、さらには実数へと拡張し、連続な二変数関数を得ることができる。また、x = 0 の場合に対する正の実数乗も、同様に連続性を理由として 0 と定義することができる。 すなわち実数の実数乗 xy は、底が x ≠ 0 で指数 y が整数であるか、底が x > 0 であるか、あるいは底が x = 0 で指数が y > 0 であればうまく定義でき、これら全ての点 (x, y) で二変数関数として連続となる。しかし、xy は底が x= 0 のとき、指数が負の実数であればうまく定義できず、どのように 00 を定義しても点 (0, 0) で二変数関数として連続にはならない。言い換えれば、00 を xy が連続となるように定めることはできないのである。 非負整数の指数のみを扱っている場合には、0の0乗は 1 と定義されることが多い。その理由としては、以下のようなものが挙げられる。 実数 x を数直線上の線型変換とみなす場合、非負整数 n に対する実数 x の n 乗は x に対応する線型変換を n 回繰り返し作用させる線型変換に対応するから、0 の 0 乗には、自明な線型変換を 0 回作用させる線型変換である恒等変換（実数 1 に対応する）が対応すると考えたい。 上述のように、x ≠ 0 のとき x0 = 1 であるから、関数 x0 の連続性を担保する為に、x = 0 のときにも同じ式の成立を要請する（空積も参照）。 00 = 1 と定義しておくと、種々の公式や証明で記述が煩雑になったり余計な場合分けをすることを防ぐことができる。 例えば、計算機科学者のドナルド・クヌースは、00 は 1 でなければならないと強く主張している。彼によると「0x という関数は数学的意義に乏しいのに対し、x0 は様々な公式に頻繁に現れるため、こちらを基準に取る方が形式的に便利な局面が多い」という。例えば、二項定理の公式 ( 1 + x ) n = ∑ k = 0 n ( n k ) x k {\displaystyle (1+x)^{n}=\sum _{k=0}^{n}{\binom {n}{k}}x^{k}} は、（第 0 項について和の記法に例外を設けない限り）00 = 1 としたときのみ x = 0 に対して適用可能になる。同様の例として、指数関数の定義式 e x = ∑ n = 0 ∞ x n n ! {\displaystyle e^{x}=\sum _{n=0}^{\infty }{\frac {x^{n}}{n!}}} が x = 0 でも妥当であるためには 00 = 1 である必要がある。00 を定義しない文脈においては e x = 1 + ∑ n = 1 ∞ x n n ! {\displaystyle e^{x}=1+\sum _{n=1}^{\infty }{\frac {x^{n}}{n!}}} と定義しなければならない。一般に多項式 Σn k = 0  ak xk や冪級数 Σ∞ k = 0  ak xk に x = 0 を代入する場合にも、0の0乗は 1 とされる。 また他にも、微分の公式 (d/dx)xn = nxn−1 を n = 1 に対しても適用するには、00 = 1 としなければならない。 半群 S の元 a の冪、すなわち n を正の整数としたときの an は n 個の a の積として定義される。さらに S がモノイドのとき（すなわち単位元 1 をもつとき）、a0 = 1 と定義される。とくに S が零元 0 ももつならば 00 = 1 である。 00 における 0 を2つとも基数、あるいは2つとも順序数と考えた場合、00 = 1 は基数あるいは順序数の冪の定義から示すことのできる定理である。 以下基数の場合について解説する。一般に基数 κ, λ に対して、冪乗 λκ は、濃度 が κ, λ の任意の集合をそれぞれ X, Y としたとき、X から Y への写像の個数（濃度）で定義される： λ κ := # Y X . {\displaystyle \lambda ^{\kappa }:=\#Y^{X}.} ここで、YX は X から Y への写像全体の集合であり、# は集合の濃度を表す。（この定義は X と Y の取り方に依らないことに注意。）しかるに、00 は X = Y = ∅ の場合に相当するから、 0 0 = # ∅ ∅ {\displaystyle 0^{0}=\#\emptyset ^{\emptyset }} である。ここで、∅ から ∅ への写像は唯一つ存在するから（空写像）、 # ∅ ∅ = 1 {\displaystyle \#\emptyset ^{\emptyset }=1} である。したがって 00 = 1 である。 x ≠ 0 のとき x0 = 1 であるという理由で、0の0乗 "00" を 1 と定めることが自然（連続な拡張）だと考えるのであれば、y が正の実数のとき 0y = 0 であるという理由で、0の0乗 "00" を 0 と定めることも自然（連続な拡張）だと考えて良いだろう。このように連続性を指針とする場合には、こちらを立てればあちらが立たず、という状況であり、全てに都合の良い定め方は存在しない。さらにもし複素関数を考えるのであれば、そもそも解析性を担保する定義は存在せず、値を別途定める他はない。 冪を自然数ではなく実数の範囲で考え、00 を二変数関数 xy の x = y = 0 における値だと考えると、次のようになる。 二変数関数 xy は、定義域を D = { (x, y) | x > 0 } ∪ { (0, y) | y > 0 }とした場合には、D 全体で連続となる。しかし、原点 (0, 0) を付け加えて、D′= D ∪ {(0, 0)} を定義域とした場合には、原点における値 00 をどのように定義しても、原点において連続とはならない。それは、D' 内で（原点を通らず）原点に近づく経路によってその極限値が異なるからである。例えば、y 軸 (x = 0) に沿って原点に近づくときの極限値は lim y → + 0 0 y = 0 {\displaystyle \lim _{y\to +0}0^{y}=0} であるが、x 軸 (y = 0) に沿って原点に近づくときの極限値は lim x → + 0 x 0 = 1 {\displaystyle \lim _{x\to +0}x^{0}=1} である。画像はこの二変数関数 z(x, y) = xy のグラフであり、原点に近づくときの経路によって異なる極限値を持つことが見て取れる。関数の連続性を重視する観点からは、00 をどのような値にすることもできない。 また 00 という記号によって、関数 f(x) と g(x) の（x がある有限値に向かう、あるいは ±∞ に向かうときの）極限が共に 0 であるときの、f(x)g(x) の極限を考えていることを表すことがある。このとき 00 はいわゆる不定形（英語版）、すなわちこの f(x)g(x) の極限は一定しないのであって、実際任意の非負の実数値や +∞ にもなりうるし、振動することもある。例えば、 lim x → 0 + x x = 1 , lim x → 0 + ( e − 1 x 2 ) x = 0 , lim x → 0 + ( e − 1 x 2 ) − x = + ∞ , lim x → 0 + ( e − 1 x ) a x = e − a {\displaystyle {\begin{array}{cl}\displaystyle \lim _{x\to 0^{+}}{x}^{x}&=1,\\\displaystyle \lim _{x\to 0^{+}}\left(e^{-{\frac {1}{x^{2}}}}\right)^{x}&=0,\\\displaystyle \lim _{x\to 0^{+}}\left(e^{-{\frac {1}{x^{2}}}}\right)^{-x}&=+\infty ,\\\displaystyle \lim _{x\to 0^{+}}\left(e^{-{\frac {1}{x}}}\right)^{ax}&=e^{-a}\end{array}}} （ここで a は任意の実数）となり、また lim x → 0 + ( e − 1 x 2 ) x sin ⁡ 1 x {\displaystyle \lim _{x\to 0^{+}}\left(e^{-{\frac {1}{x^{2}}}}\right)^{x\sin {\frac {1}{x}}}} は振動する。ここで、x → 0+ は x が正の方向から 0 に近づく極限を表す。 極限が 1 になるための十分条件はいくつか知られている。例えば f および g がともに x = 0 において実解析的であり、ある正数 b > 0 に対し開区間 (0, b) 上 f > 0 であれば、（x → 0+ のとき f(x) → 0, g(x) → 0 であれば）f(x)g(x) の x → 0+ のときの極限は必ず 1 である。 複素領域において、0 でない z に対し、関数 zw を、log z の分枝を選び、zw を ew log z と定義できる。これは 0w を定義していない、なぜならば z = 0 において定義された log z の分枝は存在せず、したがって当然 0 の近傍で定義された log z の分枝も存在しないからである。したがってこの意味で 0w は定義されないのであるが、著者によっては別途、 Re w > 0 に対しては 0 と定義したり w ≠ 0 に対しては 0 と定義したり している。 いくつかのプログラミング言語は 00 を定義しており、その多くは 1 としている。1 と定義しているプログラミング言語は、APL、Common Lisp、Haskell、J、Java、JavaScript、Julia、MATLAB、ML、Perl、Python、R、Ruby、Scheme であり、電卓では、Microsoft WindowsおよびGoogleの電卓機能などである。Microsoft Excel では、ワークシート上で =0^0 という数式を入力すると #NUM! というエラーを返すが、同ソフトウェアに搭載されている VBA では1と定義されている。 Mathematica は、a が変数または 0 でない数のときは a0 を 1 と計算するが、00 は Indeterminate（不定）と返す。Maple やMuPADはこれらを共に 1 と計算する。Wolfram Alpha ではundefinedと表示される。