macOS 및 iOS 계산기에서 0 ^ 0이 다른 버전에서 다른 결과를 제공하는 이유는 무엇입니까?


17

다른 버전의 계산기에서 0 ^ 0의 결과를 확인했습니다.

  • iOS 10.3 => 1
  • iOS 11.4 => 오류
  • macOS 10.12.6 => 1
  • macOS 10.13.5 => 숫자가 아님

차이점의 이유는 무엇입니까?


22
나는 High Sierra를 고수해야하겠습니다. 'cos 나는 NaN 빵을 좋아합니다 ;-))
Tetsujin


또한 news.ycombinator.com/item?id=8502968 <(사과 수학 라이브러리 libm의 자신의 버전을 게시 중지)
밝은 돈

3
당신은 수학을 이해할 수 있도록 묻고 있습니까, 아니면 애플이 왜 0 ^ 0의 해석을 여러 번 바꿨는지 이해하고 싶습니까? 전자 인 경우 허용되는 답변이 게시되어 있습니다. 후자라면 반드시 대답 할 필요는 없습니다.
zr00

버전 10.11.6에서 결과는 1
Robert Kowal

답변:


20

0⁰ 일반적 미정이지만, 수학 몇 가지 명시 할 정의 때문에 1로 볼 수있는 바와 같이 ,이 함수 y는 (X) = X는 N = 0에 수렴하는 값이다.

덜 공식적으로는 0.5 0.5 = 0.707…; 0.2 0.2 = 0.725…; 0.1 0.1 = 0.794… 및 0.01 0.01 = 0.955… 0에 접근하면 결과가 1에 가까워 지므로 어떤 경우에는 0 ^ 0을 1 로 정의 하는 것이 매우 논리적이고 편리합니다 .

따라서이 3 가지 결과 중 그 어느 것도 부정확하지 않으며 대신이 정의되지 않은 표현식의 값에 대해 서로 다른 규칙을 반영합니다.

이 문제를 설명 하는 좋은 Wikipedia 기사 가 있습니다 . 영점의 영점 도 참조 – 0⁰ = 1? .


4
n = 0이 아니라 x = 0을 의미합니다.
Ruslan

2
나는 0 ^ 0 = 1을 설정한다는 특별한 이론적 근거를 본 적이 없다. 결국 x ^ y에는 (x, y) → (0,0)으로 제한이 없습니다. 그러나 총 다항식을 ∑ c_n x ^ n 형식으로 작성하면 합계의 n이 0에서 n (다항식의 차수) 범위 인 경우 0 ^ 0 = 1 또는 " 상수”라는 용어는 결국 일정하지 않습니다. 여기도 참조하십시오.
Harald Hanche-Olsen

@ HaraldHanche-Olsen 매우 통찰력있는 점입니다. 답을 쓰거나 자유롭게 편집하십시오. 내 직감은 e ^ {αx ^ β * ln ^ {ξx ^ γ + μ}} 형식의 대부분의 함수가 1 (β = 0 및 다른 일부 경우 제외)로 수렴한다는 사실과 그 클래스에서 비롯되었습니다. 공학 응용 프로그램, 즉 사람들이 계산기 응용 프로그램을 사용할 가능성이 높은 물건에서 자주 발생하지만, 나는 그것이 많이 가져 왔습니다.
undercat

3
이 답변은 0 ^ 0이 무엇으로 정의되고 정의 될 수 있는지에 대한 좋은 설명을 제공하지만 Apple이 해석을 몇 번 변경 한 이유는 설명하지 않습니다.
zr00

1
@DawoodibnKareem 위의 나의 의견, 그리고 더 중요한 것은 math.se에서 언급 된 질문은 왜 0 ^ 0이 1이되는 것이 유용한 지 설명해야합니다. 물론 그러한 협약은 대가를 치릅니다 : 표현 x ^ y는 (0,0)에서 불 연속적입니다.
Harald Hanche-Olsen

13

부동 소수점 산술의 대부분의 구현은 IEEE 754-2008 표준을 따르며, pow (0,0)은 1을 반환하도록 지정합니다 (§9.2.1 참조).

그러나 pown (0,0) = 1 및 powr (0,0) = NaN의 두 가지 다른 함수도 정의합니다.

Wikipedia는 다음과 같이 요약합니다 .

IEEE 754-2008 부동 소수점 표준은 대부분의 부동 소수점 라이브러리 설계에 사용됩니다. 다음과 같이 전력 계산을위한 여러 가지 작업을 권장합니다. [20]

pow는 0 0 을 1로 취급 합니다. 거듭 제곱이 정확한 정수이면 결과는 pown과 동일하고, 그렇지 않으면 결과는 powr와 같습니다 (일부 예외적 인 경우 제외).

pown은 0 0 을 1로 취급합니다 . 거듭 제곱은 정확한 정수 여야합니다. 이 값은 음의 염기에 대해 정의됩니다. 예를 들어, pown (-3,5)는 -243입니다. powr은 0 0 을 NaN (Not-a-Number – undefined)으로 처리합니다. 밑이 0보다 작은 powr (−3,2)와 같은 경우에는 값도 NaN입니다. 값은 epower × log (base)로 정의됩니다.

pow 변형은 주로 호환성을 위해 C99의 pow 기능에서 영감을 얻었습니다. [21] 주로 단일 전원 기능을 가진 언어에 유용합니다. pown과 powr 변형은 위에서 언급 한 것처럼 전력 함수와 다른 관점의 충돌로 인해 도입되었습니다. [22]

물론 이것은 올바른 수학적 결과가 무엇인지에 영향을 미치지 않습니다. 다른 사람들이 지적했듯이 가능한 대답이 둘 이상이며 IEEE는 임의의 결정을 내려야했습니다.


5

Apple의 누군가가 0 ^ 0이 유효하지 않은 작업임을 알고 그것을 고쳤습니다.


5

0의 거듭 제곱은 모순입니다

  • 0은 모든 숫자가 0입니다
  • 0 제곱의 숫자는 1입니다

그것은 해야 오류를 생성합니다. 오류가 생성되지 않는 유일한 이유는 문제의 계산기 버전이 해당 입력 오류를 트랩하지 않았기 때문입니다.


9
(매우 녹슨 아마추어) 수학자가 있다고 주장 할 것이다 0의 한계 ^ X 0 , x는 0에 접근하고로 의 제한 X ^ X 1 , x는 0 그러므로 당신이하는 불연속이 접근함에 따라 불확정의 매우 정의 및 하나의 진정한 OS에서 NaN을 보려고 들었습니다
bmike

1
내 들리는 따뜻하게 -셰퍼드로 미적분 문제를 일으키는 토스트 따뜻한 양의 이미지, @bmike :-D
Allan

2
@MrLister“일부 저자에 의해 정의되고 다른 저자에 의해 정의되지 않음”은 수학이 작동하는 방식과 정확히 같습니다 . 거의 모든 상황에서 0 ^ 0 = 1이 올바른 정의입니다 (예 : 빈 세트에서 빈 세트까지의 함수 수). x ^ y가 원점으로 지속적으로 확장 될 수 없다는 사실은 불행한 일이며 분석의 일부 교육자들은 혼동을 막기 위해 정의되지 않은 채로 두는 것을 선호하지만, 일단 그들이 도착하면 0 ^ 0 = 1을 가져와야합니다. 파워 시리즈.
Eike Schulte

3
@bmike 제한이 필요하지 않습니다. 그냥 있기 때문에 X ^ y는 불연속 것 (0, 0) 당신은에 값을 할당 할 수 없습니다 의미하지는 않습니다 0 ^ 0
데니스

3
0 ^ 0 = 1은 모순이 아닙니다 . 0 ^ 0은 빈 곱 이므로 1입니다. 0 ^ 0은 빈 세트 에서 빈 세트 까지 의 함수 집합의 카디널리티 이며 정확히 하나의 함수가 있습니다. 다항식에 필요합니다 . 목록은 계속됩니다.
user76284

4

(x, y)-> (0,0)에서 불연속성을 갖는 x ^ y 함수로 요약되는 0⁰에 대한 반 논의가있다. 불연속 값을 갖는 함수를 금지하는 것은 수학적 넌센스이기 때문에 이것은 반론입니다.

실수에 정의 된 함수가 실수 함수가 정수 값을 취할 때마다 정수에 정의 된 동일한 함수와 일치하도록 정수를 실수에 임베드하는 것이 일반적입니다. 따라서 0.0 ^ 0과 0.0 ^ 0.0을 구별하는 데는 아무런 소용이 없습니다.

이제 지수가 정수 0 인 x⁰는 정확히 0의 x 요소를 포함하는 곱입니다. x의 인자가 그 값에 포함되어 있지 않기 때문에, x에 의존하는 값을 할당하는 데는 별다른 의미가 없으며, 빈 곱으로서의 값은 곱셈의 중립 요소 인 1이 분명합니다.

이항 정리를 임의로 0이 아닌 값으로 제한하지 않기 때문에 이치에 맞습니다. 어떤 식으로, 이것은 x = 0에서 x⁰ 함수를 현명하게 완성하려고 시도하는 것에 근거한 주장이며, 어디에서나 정의되고 연속적입니다.

함수 0 ^ x로 이것을 시도하면 x = 0 +의 한계는 0이 될 수 있지만,이를 x로 정의하면 함수가 음의 x에 대해 정의되지 않기 때문에 필수 불연속성을 치료하는 데 도움이되지 않습니다.

이제 계산기는 x ^ y를 exp (y * ln (x))로 계산하는 경향이 있습니다. 물론 그것은 x = 0에게는 나쁜 소식입니다. 따라서 이러한 값은 명시 적으로 프로그래밍해야합니다. 그렇지 않으면 숫자가 아닙니다. 명시 적 프로그래밍의 경우 프로그래머의 수학적 직관에 의존해야하며 일반적인 프로그래머는 수학자보다 "함수가 정의 된 위치에서 연속적이어야합니다"와 같은 의사 수학적 직관에 의해 더 많이 안내됩니다.

또한 다른 사용자의 의견이 많을 것으로 예상 할 수 있으며 순수한 수학자는 수학 진리에 대한 비전을 계산하기 위해 계산기로 되돌아 가지 않으므로 다른 사람들의 의견을 습격 할 수 없습니다.

결과는 수학적인 것보다 민주적 인 것입니다. 그리고 민주적 인 대다수는 변하는 경향이 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.