상대적 정밀도
IT 위키
상대적 정밀도란 수치 해석 또는 컴퓨터에서 실수를 근사 표현할 때, 수의 크기에 비례한 정밀도 유지 정도를 의미한다. 즉, 표현 가능한 오차(절대 오차)가 수의 절댓값에 비례해 커지거나 작아지더라도, 그 비율이 일정하게 유지되는 성질이다.
정의[편집 | 원본 편집]
부동소수점 표현에서, 어떤 실수 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)