상대적 정밀도란 수치 해석 또는 컴퓨터에서 실수를 근사 표현할 때, 수의 크기에 비례한 정밀도 유지 정도를 의미한다. 즉, 표현 가능한 오차(절대 오차)가 수의 절댓값에 비례해 커지거나 작아지더라도, 그 비율이 일정하게 유지되는 성질이다.
정의
부동소수점 표현에서, 어떤 실수 x를 근사값 x̃로 표현한다고 할 때, 상대 오차는 다음과 같이 정의된다:
상대 오차 = |x̃ − x| ÷ |x|
IEEE 754 같은 부동소수점 체계에서는 "머신 엡실론(machine epsilon)"이라는 개념이 사용되며, 이는 1과 그 다음으로 표현 가능한 부동소수점 수의 차이를 의미한다. 이 값은 해당 체계의 상대적 정밀도를 가늠하는 지표가 된다.
또한, 지수의 크기에 따라 표현 가능한 두 인접 수의 간격이 달라지기 때문에, 절대 오차는 다르지만 상대 오차는 일정하게 유지된다.
장점과 한계
장점
- 수의 크기에 관계없이 일정한 비율의 정밀도를 유지할 수 있다.
- 큰 수와 작은 수 모두를 하나의 표현 형식 안에서 다룰 수 있어 동적 범위가 넓다.
- 수치 해석 알고리즘에서 오차 분석이 용이하다.
한계
- 수가 커질수록 절대 오차가 커져, 큰 수의 정밀도가 상대적으로 낮아진다.
- 서로 비슷한 값의 차를 계산하는 경우, 유효 숫자가 대부분 소멸되어 오차가 커지는 문제가 발생할 수 있다. 이를 소멸 오차(cancellation error) 또는 재앙적 소거(catastrophic cancellation)라고 한다.
- 수가 0에 매우 가까운 경우에는 상대 오차가 무한대로 발산할 수 있어, 해석에 주의가 필요하다.
예시
IEEE 754 단정밀도(32비트) 표현에서는 가수부가 23비트이며, 다음과 같은 특성이 있다:
- 1.0 근처: 인접한 두 수의 간격은 약 2^-23 (약 1.2×10^-7)
- 2^10 근처: 인접한 두 수의 간격은 약 2^-13 (약 1.2×10^-4)
- 값이 클수록 인접 수 간 간격이 벌어지며, 표현 정밀도는 낮아진다.
예를 들어 x = 1.0000001, y = 1.0000000일 경우, x − y = 0.0000001과 같은 계산은 유효 숫자의 대부분이 소멸되어 결과의 정밀도가 급감할 수 있다.
응용
상대적 정밀도는 수치 해석, 과학 계산, 공학 시뮬레이션 등에서 알고리즘의 정확도와 안정성을 평가하는 데 매우 중요하다. 오차가 일정 비율로 유지된다는 가정 하에, 연쇄적인 계산 또는 반복 연산에서 전체 오차를 추정하고 관리할 수 있다.
같이 보기
참고 문헌
- David Goldberg, What Every Computer Scientist Should Know about Floating-Point Arithmetic, ACM Computing Surveys, 1991.
- IEEE Standard for Floating-Point Arithmetic (IEEE 754-2008 및 754-2019)