ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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 로 구할 수 있다.

    그렇다면 반올림 오차가 발생하는 상황은 언제일까?

     

    • 아주아주 비슷한 크기의 수끼리의 뺄셈
    • 아주아주 큰 수와 아주아주 작은 수 끼리의 덧셈

    위 두 상황에서는 수가 너무 작아져 컴퓨터가 무시할 수 있기 때문에 오차가 생길 수 있다.

    따라서 위 상황이 발생하지 않도록 코드를 잘 짜야 한다.

     

     

     

    반응형

    댓글

Designed by Tistory.