1 나누기 0을 확인하다

interest/math & stat | 2009/03/03 10:30 | 까칠한JC
네이버에서 아주 재미있는 글을 읽었습니다.

1 / 0은 왜 안될까? (http://navercast.naver.com/science/math/184)

과연 안될까요? 솔직히 저도 정확하게 생각해 본적은 없었습니다. 그러나 재목을 보고나서 생각난 것은 "나눌것이 없는데, 나눗셈을 어떻게 하지?"라는 것이죠. 그리고나서 해당 글을 차분히 읽어보니 저의 생각이 맞는 것 같습니다.

글의 마지막에 1을 0으로 나누면 무한대가 된다는 말이 있습니다. 그러나 일반적인 계산기에서는 이게 안되죠. 이런 것을 지원해 주는 것은 없을까 하고 찾아보기로 했습니다. 단지 3분도 안되서 찾았다는 것이 좀 허탈하긴 하지만요.

먼저 윈도우 계산기에서 확인을 해 보았습니다. 관련 글에서 제공한 그림과 같이 "0으로 나눌 수 없습니다."라는 말이 뜹니다.

다음으로 Python 콘솔을 열어서 확인해 보았습니다. "ZeroDivisionError: integer division or modulo by zero"라는 에러문이 뜨면서 역시나 계산은 실패입니다.

다음으로 확인한 것이 R입니다. 1을 0으로 나누어 보니 Inf라는 무한대 표시가 뜹니다. -1을 0으로 나누면 -Inf가 되는군요. 계산이 가능해지는 군요. 0을 0으로 나누면 NaN이 발생합니다. NaN, Inf에 연산을 해도 NaN, Inf가 발생할 것이기 때문에 앞으로 R을 이용한 프로그래밍에서는 분모가 0이 되지 않는지 주의를 해서 코딩을 해야 할것 같습니다.

마지막으로 Matlab을 이용하여 확인해 보았습니다. 역시나 Inf라는 표시가 뜨는 군요. (하긴 R에서 되는 것을 보고, R이 Matlab을 많이 닮아 있기 때문에 Matlab도 당연히 될것이라고 생각했습니다.) 역시 Matlab을 이용하는 코딩에서도 분모가 0이 되지 않도록 주의를 해야 겠군요.

간단히 확인해 보니 수학/통계에 쓰임새가 높은 것은 분모가 0이 되어도 Inf를 값으로 출력해 주는 군요. 이런 언어나 소프트웨어들은 계산을 수행할 때, 주의를 기울여서 해야 겠군요. 그리고 주로 R을 사용하는 저는 분모가 0이 되지 않는지 확인하는 메쏘드를 하나 만들어 두어야 겠습니다.
태그 : Mathematics