음수의 거듭 제곱

음수의 거듭 제곱을 구해야 할 일이 생겼다. 어떤 값을 추정할 수 있는 공식이 있다. 이 값은 거듭제곱이 여러 번 들어가 있다. 이 과정에서 오타가 생길 수도 있을 것이다.

여러 번 검토해서 올바른 식을 만들고 계산했다. 엑셀에서는 구해지는 데 R에서는 NaN이 발생했다.

한 참을 원인을 찾은 끝에 R은 음수의 거듭 제곱을 별도의 방법을 통해서 계산해야 한다고 한다.

복소수로 변환하는 방법이 기본적인 것 같다. 그런데 이건 직관적이지 않다.

가장 쉬운 방법은 양수로 변환한 다음 음수로 바꾸어 주는 것이다. 양수와 음수를 가리지 않고 계산하려면 다음과 같다. sign()은 입력이 양수이면 1, 음수이면 -1을 반환한다.

sign(x) * abs(x) ^ (1/3)