영에 영의 거듭제곱(Zero to the power of zero)은, \(\mathbf{0^0}\)에 의해 표시되며, 의견-일치된 값(value)을 갖지 않는 수학적 표현(mathematical expression)입니다. 가장 공통적인 가능성은 문맥에 따라 각각에 대한 정당성과 함께, 1 또는 비정의된 표현으로 남겨두는 것입니다.
대수학(algebra)과 조합론(combinatorics)에서, 일반적으로 의견-일치된 값은 \(0^0=1\)이고, 반면에 수학적 해석학(mathematical analysis)에서는, 표현은 때때로 비-정의된 채로 남겨집니다. 컴퓨터 프로그래밍 언어와 소프트웨어는 역시 이 표현을 다루는 다른 방법을 가집니다.
Discrete exponents
자연수(natural-number) 지수를 포함하는 널리 사용되는 많은 공식은 \(0^0\)을 1로 정의되는 것을 요구합니다. 예를 들어, \(b^0\)의 다음 세 가지 해석은 b = 0에 대해 양의 정수 b에 대해 행하는 것과 똑같은 의미를 만듭니다:
- 빈 곱(empty product)으로 \(b^0\)의 해석은 그것을 값 1로 할당합니다.
- \(b^0\)의 조합론적 해석(combinatorial interpretation)은 b-원소 집합에서 0-튜플(0-tuples) 원소의 개수입니다.
- \(b^0\)의 집합-이론적 해석(set-theoretic interpretation)은 빈 집합(empty set)에서 b-원소 집합으로의 함수의 개수입니다; 정확하게 하나의 그러한 함수, 즉, 빈 함수(empty function)가 있습니다.
이들 셋의 모두는 \(0^0=1\)을 제공하기 위해 전문화합니다.
Polynomials and power series
- 다항식(polynomial)과 함께 사용할 때, 모든 평가 맵에 대해 링 준동형(ring homomorphism)이 되기 위해, 이제 설명할 것처럼, \(0^0=1\)을 정의할 필요가 있습니다. 다항식은 형식 \(a_0x^0+\cdots + a_n x^n\)의 표현이며, 여기서 x는 불확정수이고, 계수 \(a_n\)은 실수입니다. 보통 덧셈과 곱셈을 갖는 모든 그러한 다항식의 집합은 다항식 링(polynomial ring) R[x]입니다. R[x]의 곱셈의 항등원(multiplicative identity)은 \(x^0\)인데, 왜냐하면 \(x^0\) 곱하기 임의의 다항식 p(x)는 단지 p(x)이기 때문입니다. 각 고정된 실수 r에 대해, 각 다항식 \(a_0x^0+\cdots + a_n x^n\)을 r에서 그것의 값 \(a_0r^0+\cdots + a_n r^n\)으로 보내는 평가 맵 R[x] → R은 링 준동형이어야 하지만, 그것은 곱셈의 항등원 \(x^0\)을 r\(r^0\)에 매핑하므로, \(r^0\)은 1이어야 합니다. 특별한 경우 r = 0은 \(0^0=1\)을 제공합니다. 같은 인수가 R을 임의의 링(ring)으로 대체하여 적용됩니다.
- \(0^0=1\)로 정의하는 것은 많은 다항 항등식에 필요합니다. 예를 들어, 이항 정리(binomial theorem) \((1+x)^n = \sum_{k=0}^n \binom(n,k)x^k\)는 오직 \(0^0=1\)이면 x = 0에 대해 유지됩니다.
- 유사하게, 거듭제곱 급수(power series)의 링은 \(x^0\)을 x의 모든 전문화에 대해 1로 정의하는 것을 요구합니다. 예를 들어, \(\tfrac{1}{1-x} = \sum_{n=0}^{\infty} x^n\) 및 \(e^x= \sum_{n=0}^{\infty}\tfrac{x^n}{n!}\)와 같은 항등식은 오직 \(0^0=1\)이면 x = 0에 대해 유지됩니다.
- 미적분(calculus)에서, 거듭제곱 규칙(power rule) \(\tfrac{d}{dx} x^n = nx^{n-1}\)은 오직 \(0^0=1\)이면 x = 0에서 n = 1에 대해 유지됩니다.
Continuous exponents
대수적 연산을 포함하는 극한은 종종 부분표현을 그것들의 극한으로 대체함으로써 평가될 수 있습니다; 만약 결과 표현이 원래 극한을 결정하지 않으면, 그 표현은 불확정 형식(indeterminate form)으로 알려져 있습니다. 표현 \(0^0\)은 불확정 형식입니다: (각 관련된 변 위에) f(t) > 0을 갖는 (t가, 한 변 또는 양쪽 변에서, 실수 또는 ±∞로 접근할 때) 0에 접근하는 실수-값 함수 f(t)와 g(t)가 주어지면, \(f(t)^{g(t)}\)의 극한은 임의의 비-음의 실수 또는 +∞일 수 있거나, 그것은 f와 g에 따라 발산(diverge)할 수 있습니다. 예를 들어, 아래의 각 극한은 \(t \to 0^+\)일 때 (한쪽 극한(one-sided limit)) f(t), g(t) → 0을 갖는 함수 \(f(t)^{g(t)}\)를 포함하지만, 그것들의 값은 다릅니다:
\(\quad\displaystyle \lim_{t \to 0^+} {t}^{t} = 1 ,\)
\(\quad\displaystyle \lim_{t \to 0^+} \left(e^{-1/t^2}\right)^t = 0, \)
\(\quad\displaystyle \lim_{t \to 0^+} \left(e^{-1/t^2}\right)^{-t} = +\infty, \)
\(\quad\displaystyle \lim_{t \to 0^+} \left(e^{-1/t}\right)^{at} = e^{-a} .\)
따라서, 두 변수 함수 \(x^y\)는, 비록 집합 {(x, y) : x > 0} 위에 연속적이지만, {(x, y) : x > 0} ∪ {(0, 0)}위에 연속 함수(continuous function)로 절대 확장될 수 없으며, 우리가 00을 어떻게 정의하든 상관없습니다.
다른 한편으로, 만약 f와 g가 숫자 c의 열린 이웃 위에 둘 다 해석적 함수(analytic functions)이면, f가 양수인 것 위에 임의의 쪽에서 t가 c에 접근할 때 \(f(t)^{g(t)} \to 1\)입니다.
Complex exponents
복소 도메인(complex domain)에서, 함수 \(z^w\)는 log z의 가지(branch)를 선택하고 \(z^w\)를 \(e^{w \log z}\)로 정의함으로써 비-영 z에 대해 정의될 수 있습니다. 이것은 \(0^w\)를 정의하지 않는데 왜냐하면 0의 이웃에서 고사하고, z = 0에서 정의된 log z의 가지가 없기 때문입니다.
History
As a value
1752년에, 오일러(Euler)는 Introductio in analysin infinitorum에서 \(a^0=1\)라고 썼고, 명시적으로 \(0^0=1\)임을 언급했습니다. 오일러의 저서 Institutiones calculi differentialis의 1787년 판에서 마스케로니(Mascheroni)에 기인된 주석은 또 다른 보다 관련있는 정당화와 마찬가지로 다음의 "정당화"를 제공했습니다:
\(\quad\displaystyle 0^0 = (a-a)^{n-n} = \frac{(a-a)^n}{(a-a)^n} = 1\).
1830년대에, 리브리(Libri)는 \(0^0=1\)이라는 주장을 정당화하기 위해 몇 가지 추가적인 주장을 발표했지만, 이것들은 당시의 엄격함의 표준에 의해서도 설득력이 없었습니다.
As a limiting form
오일러는, \(0^0=1\)을 설정할 때, 결과적으로 함수 \(0^x\)의 값은 "거대한 점프", x < 0에 대해 ∞에서, x = 0에서 1로, x > 0에 대해 0으로 취해진다고 언급했습니다. 1814년에, 파프(Pfaff)는 \(x \to 0^+\)일 때 \(x^x \to 1\)임을 입증하기 위해 조임 정리(Squeeze theorem) 논증을 사용했습니다.
다른 한편으로, 1821년에 코시(Cauchy)는 일부 고정된 관계에 의해 제약을 받으면서 양수 x와 y가 0에 접근할 때 \(x^y\)의 극한이 적절하게 관계를 선택함으로써 0과 ∞ 사이의 임의의 값을 가정하도록 만들 수 있는 이유를 설명했습니다. 그는 지정된 제약없이 완전한 2-변수 함수 \(x^y\)의 극한이 "불확정"이라고 추론했습니다. 이 정당화와 함께, 그는 불확정 형식의 테이블(table of indeterminate forms)에 \(\tfrac00\)과 같은 표현과 함께 \(0^0\)을 나열했습니다.
분명하게 코시의 연구를 모르고 있던, 뫼비우스(Möbius)는 1834년에, 파르의 논증을 기반으로 하여, x가 c에 접근할 때 f(x),g(x) → 0일 때마다 \(f(x)^{g(x)} \to 1\)라고 잘못 주장했습니다 (추측하건대 f는 c에서 멀리 떨어진 양수로 가정됩니다). 뫼비우스는 경우 c = 0으로 축소했지만, 그때에 f와 g의 각각이 0에서 사라지지 않는 일부 연속 함수 P와 일부 비-음의 정수 n에 대해 형식 \(Px^n\)에서 표현될 수 있다고 가정하는 실수를 저질렀으며, 이것은 해석적 함수에 대해 참이지만, 일반적으로 그렇지 않습니다. 익명의 주석자는 정당하지 않은 단계를 지적했습니다; 그때에 단순히 "S"라고 이름을 붙인 또 다른 주석자는 명백한 반대예제 \(x \to 0^+\)일 때 \((e^{-1/x})^x \to e^{-1}\) 및 \((e^{-1/x})^{2x} \to e^{-2}\)을 제공했고 "\(0^0\)은 많은 다른 값을 가질 수 있다"라고 적음으로써 상황을 표현했습니다.
Current situation
- 일부 저자는 \(0^0\)을 1로 정의하는데 왜냐하면 그것이 많은 정리 명제를 단순화하기 때문입니다. 벤슨(Benson) (1999)에 따르면, "\(0^0\)을 정의할지 여부의 선택은 정확성이 아닌 편의성에 기반합니다. 만약 우리가 \(0^0\)을 정의하는 것을 억제하면, 특정 주장이 불필요하게 어색하게 됩니다. [...] 의견-일치는 \(0^0=1\) 정의를 사용하는 것이지만, \(0^0\)을 정의하는 것을 억제하는 교과서가 있습니다." 커누스(Knuth) (1992)는 \(0^0\)이 "1이어야 한다"고 더 강력하게 주장합니다; 그는 값 \(0^0\), 이것은 1과 같아야 하며, 및 극한하는 형식 \(0^0\) (극한에 대해 \(f(t)^{g(t)}\)의 약어 여기서 f(t), g(t) → 0), 이것은 불확정 형식 사이의 구별을 그렸습니다: "코시와 리브리 모두 옳았었지만, 리브리와 그의 옹호자들은 왜 진실이 그들의 편인지 이해하지 못했습니다."
- 다른 저자는 \(0^0\)를 정의되지 않은체 남겨 두는데 왜냐하면 \(0^0\)는 불확정 형식이기 때문입니다: f(t), g(t) → 0가 \(f(t)^{g(t)}\to 0\)를 의미하지 않습니다.
\(0^0\)에 1이 아닌 특정 값을 할당하는 어떤 저자는 없는 것 같습니다.
Treatment on computers
IEEE floating-point standard
IEEE 754-2008 부동-점 표준은 대부분의 부동-점 라이브러리 설계에 사용됩니다. 그것은 거듭제곱 계산을 위해 다음과 같은 여러 연산을 권장합니다:
- pow는 \(0^0\)을 1로 취급합니다. 만약 거듭제곱이 정확한 정수이면, 그 결과는 pown에 대한 결과 같고, 그렇지 않으면 그 결과는 (일부 예외 경우를 제외하고) powr에 대한 것과 같습니다.
- pown는 \(0^0\)을 1로 취급합니다. 거듭제곱은 정확한 정수여야 합니다. 그 값은 음의 밑수에 대해 정의됩니다; 예를 들어, pown(-3,5)는 −243입니다.
- powr는 \(0^0\)을 NaN (Not-a-Number – 비정의됨)으로 취급합니다. 그 값은 역시 powr(-3,2)와 같은 경우에 대해 NaN이며 여기서 밑수는 영보다 작습니다. powr(x,y)의 값은 \(e^{y \ln (x)}\)에 의해 정의됩니다.
pow 변형은 주로 호환성을 위해 C99에서 pow 함수에서 영감을 받았습니다. 그것은 단일 거듭제곱 함수를 가진 언어에 주로 유용합니다. pown와 powr 변형은 거듭제곱 함수의 사용과 (위에서 언급한 것처럼) 다른 관점의 충돌로 인해 도입되었습니다.
Programming languages
C와 C++ 표준은 \(0^0\)의 결과를 지정하지 않습니다 (도메인 오류가 발생할 수 있습니다). 그러나 C에 대해, C99 이래로, 만약 규범적(normative) 부가물 F가 지원되면, 실수 부동-점 유형에 대해 그 결과는 1임을 요구하는데 왜냐하면 이 값이 NaN보다 (예를 들어, 이산 지수를 갖는) 더 유용한 중요한 응용 프로그램이 있기 때문입니다; 심지어 정보 부가물 G가 지원되더라도, 복소 유형에 대한 결과는 지정되지 않습니다. 자바(Java) 표준, .NET Framework 메서드(method) System.Math.Pow, 줄리아(Julia), 및 파이썬(Python)은 역시 \(0^0\)을 1로 취급합니다. 일부 언어는 그것들의 지수 연산이 C 수학 라이브러리(C mathematical library)에서 pow 함수에 해당한다고 설명합니다; 이것은 Lua과 펄(Perl)의 ** 연산자의 경우입니다 (여기서 0**0의 결과는 플랫폼-종속적임을 명시적으로 언급됩니다).
Mathematical and scientific software
APL, R, Stata, SageMath, Matlab, Magma, GAP, Singular, PARI/GP, 및 GNU Octave는 \(x^0\)을 1로 평가합니다. Mathematica와 Macsyma는 심지어 어떤 제약이 x에 놓이지 않아도 \(x^0\)을 1로 단순화합니다; 어쨌든, 만약 \(0^0\)이 직접 입력되면, 그것은 오류 또는 불확정으로 취급됩니다. SageMath는 \(0^x\)를 단순화하지 않습니다. Maple, Mathematica 및 PARI/GP는 정수와 부동-점 값 사이를 더 나아가서 구분합니다: 만약 지수가 정수 유형의 영이면, 그것들은 밑수의 유형의 1을 반환합니다; 값 영의 부동-점 지수를 갖는 지수화는 비-정의됨, 불확정 또는 오류로 처리됩니다.
External links
- sci.math FAQ: What is 00?
- What does 00 (zero to the zeroth power) equal? on AskAMathematician.com