-
3. 머신입실론과 반올림오차수치해석 with MATLAB 2019. 11. 2. 14:02
머신입실론 (Machine Epsilon)
배정도를 사용하는 MATLAB에서 수의 범위는
- 정수 범위: -2,147,483,648 ~ +2,147,483,647
- 실수 범위: 2.225 x 10^-308 (realmin) ~ 1.797x10^308 (realmax)
컴퓨터에서 실수는 연속적으로 표현할 수 없다는 한계를 가지고 있다.
따라서 수와 수 사이에는 어떤 간격이 있는데, 그것을 머신 입실론이라고 한다.
머신입실론 (ε, eps) : 1과 1바로 그 위 실수 사이의 간격
MATLAB에서 1 eps = 2.22x10^-16 이다.
어떤 실수 R과 그 다음 큰 수 사이의 간격은 R * eps 로 구하면 된다.
예를 들어 realmax와 그 바로 아래 실수 값 사이의 간격은
realmax * eps = 3.99x10^292 이다.
숫자가 커질수록 이 간격 또한 커지게 된다.
이렇게 컴퓨터에서 실수가 불연속으로 표현된다는 특징 때문에 생기는 오차가 '반올림 오차'이다.
반올림오차
컴퓨터에서 1과 1+ε사이의 간격에서는 아무런 실수가 존재 할 수 없다.
따라서 그 사이의 값이 입력될 경우 근사값으로 실수를 표현해야 한다.
이때 반으로 나누어 반보다 작은 것은 내림하고, 반보다 큰것은 올림함으로써 근사값을 표현하는것이 반올림의 개념이다. 근사값으로 표현하기 때문에 어쩔 수 없이 오차가 생기는 것이다.
이렇게 반올림 때문에 생기는 오차가 '반올림 오차'이다.
ε/2 는 1의 가장 큰 반올림 오차이며, 실수 R의 반올림오차는 ε/2*R 로 구할 수 있다.
그렇다면 반올림 오차가 발생하는 상황은 언제일까?
- 아주아주 비슷한 크기의 수끼리의 뺄셈
- 아주아주 큰 수와 아주아주 작은 수 끼리의 덧셈
위 두 상황에서는 수가 너무 작아져 컴퓨터가 무시할 수 있기 때문에 오차가 생길 수 있다.
따라서 위 상황이 발생하지 않도록 코드를 잘 짜야 한다.
반응형'수치해석 with MATLAB' 카테고리의 다른 글
2. 반올림 오차와 절단 오차 (feat. 진법, bit, byte, 정확도, 정밀도) (0) 2019.10.29 1. 수학적 모델링과 수치해법 (0) 2019.10.14