문서:유효숫자

문서의 이전 버전(r2)을 보고 있습니다.

역사 raw
대문 랜덤 문서 최근 토론
1. 설명2. 유효숫자를 판단하는 방법
2.1. 유효숫자인 경우2.2. 유효숫자가 아닌 경우2.3. [anchor(과학적 기수법)]과학적 기수법
3. [[반올림#s-1|끝수 처리]]4. 유효숫자의 연산
4.1. 덧셈, 뺄셈4.2. 곱셈, 나눗셈4.3. 일반적인 함수 및 연산4.4. 복합 연산


; significant figures

1. 설명

측정값은 측정에 사용된 도구의 측정 분해능(measurement resolution) 정도에 따라 각기 다른 자릿수로 나타난다. 똑같은 부피를 재더라도 파이펫의 최소 단위가 [math(rm10,mL)]인 것과 [math(rm0.1,mL)]인 것은 최소 눈금을 읽는 방식[1]단위까지 눈대중으로 읽는 것이 측정의 기본이다.]이 다르기 때문에 자릿수에 차이가 날 수 밖에 없다. 유효숫자는 얻어진 측정값의 숫자 중 어디까지가 의미있는지를 나타내는 척도이며, 비단 이공계 관련 분야뿐만 아니라 측정이 필수적인 모든 분야에서 반드시 숙지해야하는 개념이다.

유효숫자에서 불확실성(uncertainty)을 나타내는 숫자는 맨 마지막 한 자릿수의 숫자이기 때문에 그 앞까지는 확실한 측정값이라는 것을 보장한다는 정보가 담겨있다. 이를테면 원주율을 유효숫자 5자리인 [math(3.1416)]으로 나타냈을 때 [math(3.141)]까지가 확실한 값이고 소수 넷째 자리는 [math(3.14155sim3.14165)][2]가 상한선이 되겠지만 ISO에서 권장하는 최근접 짝수 반올림 체계에서는 [math(3.14165)]까지가 해당된다. 자세한 것은 끝수 처리 문단 참고.]의 범위의 값을 처리한 불확실한 값임을 의미한다.
단 이는 무작위 오차(ramdom error)와는 다른 개념이다. 무작위 오차는 반복된 실험을 통해 얻어진 측정값들을 통계적으로 처리한 결과 필연적으로 생길 수 밖에 없는 측정값의 한계폭을 의미하고 표기로도 [math(apm b)][3]는 [math(alpha = 0.007,297,352,569,3pm0.000,000,000,001,1)]인데 이게 공간을 많이 차지하기 때문에 주로 [math(alpha = 0.007,297,352,569,3(1,1))]로 나타낸다.]와 같이 나타낸다. 반면 유효숫자는 이러한 통계적인 의미를 내포하고 있지 않으며 오로지 측정을 한 번 하는 데에 사용한 도구의 분해능에 대한 정보만 제공할 뿐이다.

2. 유효숫자를 판단하는 방법

2.1. 유효숫자인 경우

우선, 측정값에 한하여[4] [math(bf0)]이 아닌 숫자로 시작하는 자리부터 유효숫자이며, 소수점 아래에서 마지막에 등장하는 [math(bf0)] 역시 유효숫자이고, 연산에서 아주 중요한 요소로 작용하기 때문에(후술) 함부로 생략해서는 안 된다. 예를 들어 어떤 용기의 부피가 '[math(rm1.000,L)]'라고 측정되었을 때, 이를 '[math(rm1,L)]'라고 쓰면 틀린다. [math(rm1.000,L)]는 최소 단위가 [math(rm0.01,L)]인 용기를 써서 [math(rm0.001,L)] 단위까지 눈대중으로 읽은 결과로, 최소 소수 둘째 자리는 [math(0)]인 게 확실하다는 뜻을 내포하고 있기 때문이다. 물론 유효숫자가 아니라면 소수점 아래 마지막에 오는 [math(0)]을 생략한다는 일반적인 약속을 적용해도 무관하다.
한편, 측정값이 아니고 개념적으로 배수 관계가 명확하다 하더라도 그 수치가 터무니 없이 커서 굳이 전체 자릿수를 다 알 필요가 없는 경우 과학적 기수법으로 나타내기도 하는데 이 때에는 유효숫자로 간주해서 계산한다. 컴퓨터의 용량 등에 쓰이는 단위인 [math(rm TiB)][5]는 '테비'(tebi)라고 읽는다. 보통 [math(rm i)]를 생략한 [math(rm TB)](테라바이트)로 많이 나타내는데 엄밀히는 틀린 표기이다. [math(rm T = times1000^4 = times10^{12})]를 의미하는 SI 접두어이기 때문.]에서 [math(rm Ti = times2^{40})]으로 명확한 계수의 배수이지만 이를 [math(1.0995times10^{12})]로 나타냈다면 유효숫자이다.[6]은 개념상 입자의 개수를 나타내는 무차원의 단위임에도 불구하고 SI 기본 단위로 채택되어 차원이 [math(sf N)]인 단위로 취급한다.]

아래의 예시에서 수레국화색 숫자가 모두 유효숫자에 해당한다.
  • 황금비 [math(varphi)]의 근삿값 [math({color{cornflowerblue}1.6180})] (유효숫자 5자리)
  • 기체상수 [math(R approxrm0.0{color{cornflowerblue}82},atm!cdot!L/(mol!cdot!K))] (유효숫자 2자리)
  • [math(rm Kr)]의 전기 음성도 [math({color{cornflowerblue}3.00})] (유효숫자 3자리)
  • VSMOW[8]어는점 [math(rm{color{cornflowerblue}0.000},degree!C)] (유효숫자 4자리)
  • VSMOW의 끓는점 [math(rm{color{cornflowerblue}10overline0},degree!C)] (유효숫자 3자리)
  • 태양의 표면 온도 [math(rm{color{cornflowerblue}5underline5}00,degree!C)] (유효숫자 2자리)
유리수의 소수 표현 중에 순환마디의 위나 아래에 줄을 긋는 경우가 있고(해당 문서 참조) 후자 2개처럼 유효숫자 마지막 자릿수에 줄을 긋는 표기는 혼동을 야기할 수 있기 때문에 일반적이지 않으며, 보통은 줄 없이 그냥 [math(5500)], [math(100)]처럼 나타낸다. 문제는 이렇게 쓰면 소수점 위에서 [math(0)]으로 끝나고 있기 때문에 별도의 언급이 없으면 어느 [math(0)]까지가 유효숫자인지 판단할 수 없다. 유효숫자의 자릿수와 정수의 자릿수가 같을 때, 이를테면 [math(5500{color{cornflowerblue}.})], [math(100{color{cornflowerblue}.})]처럼 소수점을 찍어서 유효숫자를 명시할 순 있으나[9], [math(100.)]은 각각 유효숫자 4자리, 3자리이다.] 유효숫자의 자릿수가 정수 자릿수보다 작은 경우엔 답이 없다. 이를 보완하기 위해 나온 것이 바로 과학적 기수법(scientific notation)이다.

2.2. 유효숫자가 아닌 경우

'~개', '~회' '~배' 등과 같이 개념적으로 계수가 명확한 것, 즉 이산적인(discrete) 값은 유효숫자가 아니다. 이를테면 물 분자의 분자량을 계산할 때, 산소 원자의 개수만큼 곱해주는 [math(2)]는 유효숫자가 아니다. 꼭 정수만 해당되는 건 아니고, 수소의 연소로 인한 물의 생성 엔탈피는 산소 기체에 [math(dfrac12)]만큼의 계수가 곱해지는데 이는 반응한 산소와 생성된 물의 입자수 비가 [math(1:2)]라는 관계에서 나온 것이기 때문에 산소의 물질량이나 반응한 기체의 부피 등을 구할 때 곱해지는 [math(dfrac12)] 혹은 [math(0.5)]는 유효숫자가 아니다. 이 밖에도 자릿수가 약속되어있지 않은 수학 상수들([math(pi)], [math(e)], [math(sqrt2)] 따위)[10], [math(2.718)], [math(1.414)] 등이 제시되었을 경우 측정치로 간주하고 유효숫자로서 계산한다.]도 유효숫자가 아닌 것으로 간주하며 이들은 무한소수이기 때문에 유효숫자라 하더라도 자릿수가 무한개다. 또한 유효숫자는 실수로서의 개념이기 때문에 복소수의 허수단위 [math(i)]나 사원수의 허수 단위 [math(i)], [math(j)], [math(k)]등에서는 굳이 따지지 않는다. 단, 이들 단위에 곱해진 계수에 대해서는 경우에 따라 유효숫자로 간주할 수도 있다.

2.3. 과학적 기수법

측정값을 유효숫자 [math(s,(1le s<10))]와 [math(10)]을 밑으로 하는 정수 [math(n)]의 거듭제곱을 이용하여 [math(stimes10^n)]의 꼴로 나타내는 방법. 계산기에서는 [math(10^n = {sf e}n)] 혹은 [math( {sf E}n)]으로 표기하기도 한다. 앞선 예시들을 과학적 기수법으로 나타내면 다음과 같다.
  • [math(1.6180)]
  • [math(rm8.2times10^{-2},atm!cdot!L/(mol!cdot!K))]
  • [math(3.00)]
  • [math(rm0.000,degree!C)]
  • [math(rm5.5times10^3,degree!C)]
  • [math(rm1.00times10^2,degree!C)]
유효숫자의 자릿수와 규모(scale)를 한눈에 알아볼 수 있다는 점에서 아주 유용한 표기이지만, 모든 측정값의 표기에 이 방식을 도입하면 공간을 매우 낭비하게 된다는 단점이 있다. 또한 측정값을 이용해서 사칙연산을 할 경우, 과학적 기수법은 곱셈과 나눗셈에서 매우 효율적이지만, 덧셈과 뺄셈에서는 거듭제곱을 맞춰줘야 하기 때문에 다소 번거로워진다는 문제점도 안고 있다.

3. 끝수 처리

국제표준화기구(ISO)에서는 ISO 80000-1에서 소위 '오사오입(五捨五入)'이라 불리는 최근접 짝수 반올림(Round to nearest even)[11]을 권장한다. 끝수가 [math(0sim4)], [math(6sim9)]일 때에는 기존 반올림과 똑같고, [math(5)]일 때에는 처리한 결과의 마지막 자릿수가 짝수가 되게 하는 방식이다. 즉, [math(bf5)] 앞이 홀수면 올리고 짝수면 버린다. 예를 들면 [math(log_{10}7 = 0.845,098,040cdotscdots)]을 유효숫자 2자리로 처리하면 기존 반올림 [math(0.85)]와는 달리 [math(0.84)]가 되고 [math(gamma = 0.577,215,664cdotscdots)]를 유효숫자 5자리로 처리하면 반올림의 경우와 똑같은 [math(0.577,22)]가 된다.

4. 유효숫자의 연산

전술한대로 유효숫자는 불확실성을 내포하고 있기 때문에, 연산 결과 불확실성이 줄어들거나 늘어나서는 안된다는 대원칙을 토대로 유효숫자를 처리하는 규칙이 약속되어있다. 각 규칙의 설명은 어디까지나 정성적인 수준으로 엄밀하지 않으며 구체적인 수치로 따져보면 예외가 존재하지만 편의상 그렇게 정해져 있다고 생각하면 된다. 붉은 글씨는 각 유효숫자 및 계산 과정에서 불확실한 숫자임을 나타낸다.

4.1. 덧셈, 뺄셈

불확실한 숫자는 맨 마지막 자릿수의 숫자이므로, 그 자릿수보다 아래에 있는 숫자는 모두 불확실하다고 볼 수 있다. 이를테면 [math(1.41{color{red}4})]는 소수 셋째 자리부터 불확실한 숫자이고 [math(0.301{color{red}0})]은 소수 넷째 자리부터 불확실한 숫자이다. 이 둘을 더하면 [math(1.71{color{red}50})]이 되며 불확실한 숫자가 2자리로 늘어나므로 불확실성 불변의 원칙에 따라 1자리가 되도록 끝수 처리를 해야한다. 위 결과에서는 소수 셋째 자리부터 불확실한 수치이므로 [math(1.71{color{red}5})]로 정리한다.[12]이 사라진 것일 뿐이며 소수점 아래 마지막 [math(0)]을 생략하는 일반적인 약속에 의한 것이 아님에 주의하자. 결과만 같아진 것일 뿐이다.]
이를 일반화하면, 덧셈 및 뺄셈에서는 소수점 아래 자릿수가 가장 적은 쪽에 맞추면 된다는 것을 알 수 있다.
한편, 소수점 아래 자리가 없는 정수의 경우, 값을 과학적 기수법으로 나타내면 소수점 아래 자리를 포함하는 수치로 나타낼 수 있고, 덧셈 및 뺄셈을 연산하려면 모든 수의 자릿수가 같아야하므로, 다른 수치들도 똑같은 거듭제곱으로 통일시켜서 소수점을 이동시켜주면 된다. 이를 정리하면 덧셈, 뺄셈에서의 연산 규칙은 다음과 같다.
지수가 가장 큰 쪽으로 거듭제곱을 통일한 과학적 기수법에서 유효숫자의 소수점 아래 자릿수가 가장 적은 쪽에 맞춘다.
  • [math(3.141,5times10^3 + 2.718,28times10^{-1} approx 3.141,8times10^3)]
    지수가 큰 쪽으로 거듭제곱을 통일하면 [math((3.141,{color{red}5} + 0.000,271,82{color{red}8})times10^3)]으로 나타낼 수 있고 소수점 아래 자릿수를 비교해보면 전자는 4자리, 후자는 9자리이므로 결과값은 소수 넷째 자리까지 정리한다. 이를 도식화하면 다음과 같다.
    [math(begin{matrix} begin{aligned} \ + end{aligned} & begin{aligned} 3&.141,{color{red}5} && times10^3 \ 0&.000,271,82{color{red}8} && times10^3 end{aligned} \ hline & begin{aligned} 3&.141,{color{red}771,828} && times10^3 end{aligned} end{matrix} \ therefore3.141,{color{red}5}times10^3 + 2.718,2{color{red}8}times10^{-1} approx 3.141,{color{red}8}times10^3)]

4.2. 곱셈, 나눗셈

불확실한 수치가 곱해지면 다른 한쪽이 확실한 수치여도 결과적으로 불확실한 수치가 포함된다는 것은 납득할 수 있을 것이다. 이때, 어느 자리까지 불확실한 수치로 봐야하는지에 대한 문제가 생긴다. 이를테면 유효숫자인 [math(3.{color{red}6})]을 [math(2)]배하는 연산 [math(3.{color{red}6}times2)]를 생각해보자. 일단 결과는 [math(7.2)]인데 여기서 일의 자리의 [math(7)]은 확실한 수치 [math(3times2)]에 불확실한 수치와의 곱 [math(0.{color{red}6}times2 = {color{red}1.2})]의 [math(color{red}1)]이 더해진 값이니까 [math(7.2)] 전체가 불확실한 값이 되는 것일까? 얼핏 합당한 추론같아 보이지만, 곱셈 연산을 거듭할수록 불확실한 자릿수가 점점 늘어나 결과적으로 유효숫자의 자릿수가 줄어드는 문제가 있는 데다가(불확실성 불변의 원칙 위배), 두 수의 곱이 [math(10)]미만이면 이러한 특징이 나타나지 않아 모든 곱셈 연산에 일괄적으로 적용할 수 없다는 문제도 있다. 따라서 이러한 판단은 적절치 않다.
본디 곱셈이란 같은 것을 여러번 더하는 덧셈 연산과 등가이다. 즉, [math(3.{color{red}6}times2 = 3.{color{red}6}+3.{color{red}6})]이다. 덧셈, 뺄셈의 연산 규칙을 적용하면 소수 첫째 자리가 불확실한 값들의 덧셈이므로 결과 역시 소수 첫째 자리까지 정리하며 결과적으로 [math(7.{color{red}2})], 즉 여전히 마지막 자릿수만 불확실한 수치라는 것을 알 수 있다. 만약 [math(color{red}2)]도 유효숫자라면 [math(3times{color{red}2} = {color{red}6})] 역시 불확실한 수치이기 때문에 [math({color{red}6} + 1 = {color{red}7})]도 불확실한 수치가 되며, 그 결과 [math({color{red}7.2} approx color{red}7)]로 정리한다.
이 과정을 잘 살펴보면, 전자는 유효숫자 2자리가 그대로 유효숫자 2자리가 되는 연산이고, 후자는 유효숫자 2자리와 유효숫자 1자리가 곱해져서 유효숫자 1자리가 되는 연산임을 알 수 있다. 즉 결과값은 곱하는 유효숫자의 자릿수가 가장 적은 쪽에 맞춰진다.
나눗셈은 역수의 곱셈 연산과 같으므로 이를 정리하면 곱셈, 나눗셈에서의 연산 규칙은 다음과 같다.
유효숫자의 자릿수가 가장 적은 쪽에 맞춘다.
  • [math(1.4times0.6931 approx 0.97)]
    유효숫자 2자리와 유효숫자 4자리의 곱이므로 결과값은 유효숫자 2자리로 정리한다. 마찬가지로 도식화하면 다음과 같이 된다.
    [math(begin{matrix} begin{aligned} \ times end{aligned} & begin{aligned} 1&.{color{red}4} \ 0&.693,{color{red}1} end{aligned} \ hline begin{aligned} \ \ \ + end{aligned} & begin{aligned} 0&.000,{color{red}14} \ 0&.004,{color{red}2} \ 0&.12{color{red}6} \ 0&.8{color{red}4} end{aligned} \ hline & 0.9{color{red}70,34}end{matrix})]
    혹은
    [math(begin{matrix} begin{aligned} \ times end{aligned} & begin{aligned} 0&.693,{color{red}1}
    \ 1&.{color{red}4}~~ end{aligned} \ hline begin{aligned} \ + end{aligned} & begin{aligned} 0&.2{color{red}77,24} \ 0&.693,{color{red}1} end{aligned} \ hline & 0.9{color{red}70,34}end{matrix} \ therefore 1.{color{red}4}times0.693{color{red}1} approx 0.9color{red}7)]

4.3. 일반적인 함수 및 연산

지수, 로그, 삼각함수 등 일반적인 함수에 대한 유효숫자 계산법은 교과과정에서 나오지 않는데, 연산에 의해 변하는 불확실성을 정확히 설명하기 위해서는 미분이 필요하기 때문이다.

값 [math(x)]의 유효숫자가 소수점 이하 [math(n)]자리까지 있다는 이야기는, 값 [math(x)]와 반올림한 근사값 [math(a)]에 대해
[math(|x - a| < 0.5 times 10^{-n})]
가 성립함을 의미한다. 한편 미분계수의 성질을 생각하면 [math(|f(x) - f(a)|)]는 [math(|x-a||f'(x)|)]에 근접하므로, [math(f(x))]의 유효숫자가 소수점 이하 [math(m)]자리까지 있으려면
[math(|x-a||f'(x)| < 0.5 times 10^{-m})]
이 만족되어야 한다. [math(|x-a|)]가 [math(0.5 times 10^{-n})] 정도의 크기를 가질 수 있으므로,
[math(|f'(x)| < 10^{-(m-n)} Leftrightarrow m-n le - log_{10}|f'(x)|)]
이를 정리하면 다음과 같다.
미분계수의 상용로그값을 정수 단위로 올림해서 나온 숫자만큼 유효숫자의 마지막 위치가 변한다.
만약 유효숫자의 개수를 비교하고 싶으면, [math(x)]의 유효숫자의 개수는 [math(log_{10}dfrac x{10^{-n}})]을 내림한 정수로 생각할 수 있기 때문에, 다음의 조건을 생각할 수 있다.
[math(left|dfrac{x f'(x)}{f(x)}right|)]의 상용로그값을 정수 단위로 올림해서 나온 숫자만큼 유효숫자의 개수가 줄어든다.
변량 [math(left|dfrac{x f'(x)}{f(x)}right|)]은 수치해석 등에서 등장하는 조건수(conditional number)라는 개념의 일종이다. 이항연산 및 다항연산에 대해서도 비슷하게 조건수를 생각할 수 있고, 위에 이야기한 덧셈, 곱셈에서의 유효숫자 규칙도 엄밀히 생각하면 [math(f(x,,y))]의 불확실성을 다변수 미분의 성질을 이용해 [math(|x-a| partial_x f + |y-b| partial_y f)]로 간주하는 것으로 해석하는 것이 맞는다.

4.4. 복합 연산

기본적으로 사칙연산의 순서에 따라 계산해나간다. 단, 유효숫자의 처리 규칙이 연산 종류에 따라 판이하게 다르기 때문에(특히 덧셈/뺄셈이 다른 연산 규칙과 두드러지게 다르다.) 연산 종류끼리 중간 과정을 계산해서 각각의 유효숫자 혹은 소수점 아래 자릿수를 확인해야한다. 당연한 사항이지만 유효숫자 처리는 연산 맨 마지막에 하는 것이 원칙이다.

[1] 참고로 눈금을 읽을 때에는 최소 눈금의 [math(1/10)[2] 반올림 체계에서는 [math(3.14164)[3] 실제 측정값의 자릿수가 길 경우 괄호를 써서 나타내기도 한다. 이를테면 미세구조상수 [math(alpha)[4] 개념적으로 계수 관계가 명확하지 않은 것, 즉 연속적인(continuous) 값을 말한다.[5] [math(rm Ti)[6] 이와 비슷하게 [math(rm mol)[7] 빈표준평균바닷물(Vienna Standard Mean Ocean Water). 이름에 바닷물이 들어가지만 증류를 통해 염을 제거한 순수한 물이며 과거 물의 삼중점을 정의할 때 쓰였던 표준 물질이다.[8] 빈표준평균바닷물(Vienna Standard Mean Ocean Water). 이름에 바닷물이 들어가지만 증류를 통해 염을 제거한 순수한 물이며 과거 물의 삼중점을 정의할 때 쓰였던 표준 물질이다.[9] 즉 [math(5500.)[10] 단, 손계산에서 이들 무리수의 근삿값으로 각각 [math(3.14)[11] 은행업자들이 즐겨 썼던 방식이기 때문에 '은행업자 반올림'(banker's rounding)이라고도 한다.[12] 어디까지나 유효숫자의 끝수 처리 규칙에 따라 [math(0)