본문 바로가기
숫자

오차

by 아이비팝2 2023. 4. 17.

오차 [그림출처 : dmpeli.math.mcmaster.ca]

1. 개요

우리가 컴퓨터로 연산하는 과정에서는 오차가 발생할 수 있다.

수치해를 구하는 수단으로 컴퓨터를 이용하는 이유는 빠른 계산 속도와 그 결과의 정확도에 있다. 

그러나 통상적인 정확성이란 취급하는 숫자가 정수일 정도에만 가능하다.

만약 실수를 취급할 때에는 근사값을 생성하게 된다.

우리가 여러가지 함수나 모델 등을 이용, 수치해석적 방법을 통해 해결하고자 할 때에 위합하는 값은 거의 실수이다.

따라서 근사값의 생성에 따른 오차가 발생한다.

 

오차의 종류는 컴퓨터에 입력하기 위해 작성된 자료 자체에 포함될 수 있는 입력 오차,

수치를 컴퓨터 내부에 기억시킬 때 진법을 변환함으로써 발생하는 변환 오차,

무한급수로 표현되는 수식을 유한급수로 변환할 때 잘리는 부분의 수식에서 발생하는 오차인 절단 오차,

수리를 검퓨터의 유한한 크기의 기억장소에 기억시킬 때 생략되는 유효숫자로 인해 발생하는 마무리 오차 등이 있다.

2. 수의 표시 단위

컴퓨터의 기억 장치나 연산 장치는 0과 1로 표시되는 두 가지 상태만을 나타낼 수 있다. 이는 비트(bit)로 구성되어 있다. 

즉 1개의 비트는 0과 1을 저장할 수 있으며 8개의 비트 조합을 바이트라고 한다.

 

수의 체계에서는 수를 표시하는 숫자의 종류와 그 숫자의 위치에 따라 어떤 수의 값이 결정된다.

수의 체계에서 사용하는 모든 숫자 종류의 개수를 그 자리수의 베이스 값이라고 한다.

2진수의 경우에는 숫자가 0과 1의 두가지 이다. 따라서 베이스 값은 2이다.

 

인간이 사용하는 수의 체계는 10진법이지만, 컴퓨터에서는 2진법을 사용한다.

컴퓨터에서는 10진법과 2진법 이외의 중요한 수의 체계는 8진법과 16진법이다.

8진법은 세 개의 비트를 하나로 묶은 것으로 0에서 7까지의 숫자를 각 자릿수를 사용한다.

16진법은 네 개의 비트를 하나로 묶은 것으로 0에서 9까지와 A에서 F까지의 알파벳을 사용한다.

16진법의 A, B, C, D, E, F는 10진수의 10, 11, 12, 13, 14, 15에 해당한다.

 

컴퓨터 외부에서 자료를 표현할 때, 2 진수를 자료를 나타낼 경우 자료의 표현이 너무 길어지는 경우가 있다.

이때 몇 개의 비트씩을 묶어 베이스가 다른 진법으로 표시할 수 있다.

3. 진법 변환

프로그래머가 10진법의 수를 입력할 경우 컴퓨터는 내부적인 처리를 거쳐 입력된 10진수를 2진수로 변환하게 된다. 이 때 경우에 따라서 중간단계로 8진수와 16진수가 사용될 수 있다.

1) 정수의 진법 변환

- 2진수에서 다른 진수로의 변환 : 2진수는 베이스가 2인 수의 체계로 0과 1 두수로 표현된다.

- 8진수에서 다른 진수로의 변환 : 8진수는 베이스가 8인 수의 체계로 0-7까지의 수로 표현된다.

2) 소수점을 포함한 경우의 진법 변환

소수점을 포함한 경우 정수부와 소수부로 나누어 변환한다.

정수부의 변환은 기존의 방법과 같다.   

4. 오차

오차란 수리적 전개과정에서 잘못이 없음에도 불구하고 발생하게 되는 것이다.

수치해를 구하기 위한 프로그램을 작성할 때에는 오차를 최소화하기 위한 노력을 병행해야 한다.

 

1) 오차의 수학적 개념

우리가 일상에서 사용하는 숫자들은 대개 근사값일 경우가 많다.

오늘 기온이 최고 20도라고 할 때 정확히 섭씨 20도가 아니라 20..... 도가 정확한 온도일 것이다. 

이와 같이 참값 20.... 도와 근삿값 20도 사이에는 오차가 발생한다.

참값과 근사값 사이 발생하는 오차는 참값에서 근삿값을 뺀 것이다.

 

오차는 상대오차와 구별하여 절대오차라고도 한다.

상대오차는 근사값의 참값에 대한 정밀도를 의미한다.

참값은 알려져 있지 않은 경우가 대부분이므로 오차도 정확히 계산해 내기가 어렵다.

그러나 근사값을 이용하여 오차의 한계나 참값이 속하는 범위 등은 계산해 낼 수 있다.

오차의 크기는 절대값으로 나타낼 수 있다.

 

2) 오차의 종류

컴퓨터를 이용하여 수치해를 구하는 과정에서 발생할 수 있는 오차는 크게 원시 오차와 처리 오차가 있다.

 

* 원시 오차

원시오차는 컴퓨터 프로그램의 조정을 통해서도 바로 잡을 수 없는 오차이다.

원시 오차는 입력오차와 변환오차가 있다.

 

입력오차는 입력되는 자료 자체에 어쩔 수 없이 포함되는 오차이다.

변환오차는 자료를 컴퓨터에 입력시킬 때 진접의 변화로 인해 발생하는 오차이다.

 

* 처리 오차

처리 오차는 프로그램의 조정을 통해 어느 정도 줄일 수 있는 오차로서 절단 오차와 마무리 오차가 있다.

처리오차는 프로그램 내에서 처리 항수를 늘리거나 변수를 배정도 변수를 사용하여 다소 줄일수는 있으나 이들 오차가 수치해의 정확도에 많은 영향을 주므로 최소화하는 노력을 해야 한다.

 

- 절단 오차

무한급수를 유한 급수로 사용할 때 발생하는 오차로, 컴퓨터를 이용하여 삼각함수나 평방근 등을 계산할 필요가 있을 경우, 사용자가 필요할 때마다 원하는 함수의 프로그램을 작성하여 사용할 수 없다. 과학 기술용 프로그램에 많이 사용되는 이러한 값들을 구하기 위해 컴퓨터 제작회사는 미리 이와 같은 값을 구할 수 있는 프로그램을 작성하여 컴퓨터 라이브러리에 내장시켜 놓았다. 이와 같은 프로그램을 내장 함수라 한다.

 

대부분의 내장함수들은 무한 급수의 원리를 이용하여 프로그램을 작성하였다.

무한항까지 처리하는데는 여러 가지 어려움이 있으므로 유한항까지만 프로그램화하고 나머지는 무시하게 된다.

절단 오차는 무한급수로 표현되는 수식을 프로그램화하기 위하여 유한급수로 바꾸어 과정에서 발생하는 오차이다.

 

- 마무리 오차

컴퓨터 기억장소의 크기는 유한하므로 수치계산 결과를 유한한 크기의 기억장소에 기억시키려면 오차가 발생하게 된다. 이 때 발생하는 오차가 마무리 오차이다. 컴퓨터에서 마무리 오차를 처리하는 방법에는 여러가지 있으나 절단방법(cropping)과 반올림이 많이 사용된다. 

[그림 출처 pythonnumerialmethods.berkeley.edu]

 

'숫자' 카테고리의 다른 글

기저/차원 (Basis / Dimension)  (0) 2023.04.19
전파오차 / Taylor 급수  (0) 2023.04.18
군집 분석(2)  (1) 2023.04.16
군집 분석 (1)  (0) 2023.04.15
연관성 규칙  (0) 2023.04.14

댓글