7.31 분명히 수학적으로 같은 수 인데 왜 R 에서 다르다고 하죠?

November 8, 2010
By

This post was kindly contributed by Open Statistics with GNU R - go there to comment and to read the full post.

Print PDF R 은 기본적으로 정수 혹은 분모가 2의 자승으로 표현되는 분수로 나타낼수 있는 numeric 형의 수치들에 대해서 수학적으로 같음을 기준으로 합니다. 만약 이와 같은 수치들이 아니라면 R의 수치에 대한 정확성은 기본적으로 이진수로서 53번짜리에서 반올림된 수라고 생각하셔야 합니다. 그 결과 두개의 실수형 숫자들이 같은 수치알고리즘을 통해서 계산되지 않는 이상 다른 값을 가질 수 도 있습니다. 예를 들면 다음의 경우입니다. ?View Code RSPLUS1 2 3 4 5 R> a < - sqrt(2) R> a * a == 2 [1] FALSE R> a * a - 2 [1] 4.440892e-16 all.equal() 이란 함수는 .Machine$double.eps^0.5 의 수준에서 두개의 객체를 비교합니다. 만약 당신이 이 수준보다도 더 정확한 수치를 원한다면, 수치상 오류가 증가할 수 있다는 점에 명심 해야 합니다. 더 자세한 사항은 David Goldberg (1991), “What Every Computer Scientist Should Know About Floating-Point Arithmetic”, ACM Computing Surveys, 23/1, 5–48, 라는 문서를 참고하시고 이는 http://docs.sun.com/source/806-3568/ncg_goldberg.html 에서 확인하실수 있습니다. 이 내용은 Kernighan and Plauger 가 지은 “The Elements of Programming Style” 라는 책의 10.0 times 0.1 is hardly ever 1.0. 에서 발췌되었습니다.

Tags:

Comments are closed.