2011-01-18 6 views

답변

7

부동 소수점 수의 지수 함수는 양의 기준 또는 정수 지수에 대해서만 정의됩니다. 시도해보십시오.

double c = - Math.Pow(8d, 1d/3d); 

실제로 1/3은 부동 소수점 숫자로 정확하게 표현 될 수 없지만 반올림해야합니다. 둥근 지수에 대한 정확한 실제 결과는 이론적으로 존재하지 않습니다.

3

대답은 복소수입니다 : 1.0+1.732050807568877i. .NET의 Math 클래스는 복소수를 지원하지 않습니다.

+0

정답은 확실히 -2입니다. 그렇지 않습니까? –

+0

@ user388360 : -2 가능한 대답입니다. 그것이 옳은지 아닌지에 대한 명세에 달려있다. – leppie

+0

합리적인 근거로 생각하지 않습니다. 예를 들어 8^(1/3)의 답 중 하나는 -1 + i * 3^(1/2)와 같습니다. 그러나 우리는 c = Math.Pow (8d, 1d/3d)를 사용할 때 수학 클래스의 복잡한 지원 기능에 대한 희망이 없어도 c = 2를 얻을 것으로 기대합니다. .NET에서 음수의 n 번째 루트를 계산하는 알고리즘에서 주요 문제가 발생한다고 생각합니다. –

5

일반적으로 (-8)^(1/3) = -2라고 말하지는 않습니다.

실제로 (-2)^3 = -8이지만 음수의 거듭 제곱은 복잡한 문제입니다.

당신은 Wikipedia에이 문제에 대한 자세한 내용을보실 수 있습니다 :

어느 대수 방법이나 합리적인 지수 방법은 부정적인 실수 A의 실수로^R을 정의하는 을 사용할 수있다 및 임의의 실수 r 인 을 포함한다. 사실 모든 실수 r에 대해 양수이므로 ln (a)은 0 미만의 경우 으로 정의되지 않습니다. 반면에 임의의 복소수 음수는 으로 정의 할 수 있습니다. A는 일반적으로 그러므로 하나 하나가 복잡한 숫자 작업을 시작하지 않도록, 부정적이며,시의 복잡한 로그를 선택.) 한마디로

, 그것은 제대로^r은해야 무엇을 정의하는 수학적으로 어려운해야 그렇게하기 위해 노력하는 것이 분명합니다.