유효숫자
有效數字; significant figures
1. 설명
측정값은 측정에 사용된 도구의 측정 분해능(measurement resolution) 정도에 따라 각기 다른 자릿수로 나타난다. 똑같은 부피를 재더라도 파이펫의 최소 단위가 $$\rm10\,mL$$인 것과 $$\rm0.1\,mL$$인 것은 최소 눈금을 읽는 방식[1] 이 다르기 때문에 자릿수에 차이가 날 수 밖에 없다. 유효숫자는 얻어진 측정값의 숫자 중 어디까지가 의미있는지를 나타내는 척도이며, 비단 이공계 관련 분야뿐만 아니라 측정이 필수적인 모든 분야에서 반드시 숙지해야하는 개념이다.
유효숫자에서 불확실성(uncertainty)을 나타내는 숫자는 '''맨 마지막 한 자릿수'''의 숫자이기 때문에 그 앞까지는 확실한 측정값이라는 것을 보장한다는 정보가 담겨있다. 이를테면 원주율을 유효숫자 5자리인 $$3.1416$$으로 나타냈을 때 $$3.141$$까지가 확실한 값이고 소수 넷째 자리는 $$3.14155\sim3.14165$$[2] 의 범위의 값을 처리한 불확실한 값임을 의미한다.
단 이는 무작위 오차(ramdom error)와는 다른 개념이다. 무작위 오차는 반복된 실험을 통해 얻어진 측정값들을 통계적으로 처리한 결과 필연적으로 생길 수 밖에 없는 측정값의 한계폭을 의미하고 표기로도 $$a\pm b$$[3] 와 같이 나타낸다. 반면 유효숫자는 이러한 통계적인 의미를 내포하고 있지 않으며 오로지 측정을 한 번 하는 데에 사용한 도구의 분해능에 대한 정보만 제공할 뿐이다.
2. 유효숫자를 판단하는 방법
2.1. 유효숫자인 경우
우선, 측정값에 한하여[4] '''$$\bf0$$이 아닌 숫자로 시작하는 자리부터 유효숫자'''이며, 소수점 아래에서 '''마지막에 등장하는 $$\bf0$$ 역시 유효숫자'''이고, 연산에서 아주 중요한 요소로 작용하기 때문에(후술) 함부로 생략해서는 안 된다. 예를 들어 어떤 용기의 부피가 '$$\rm1.000\,L$$'라고 측정되었을 때, 이를 '$$\rm1\,L$$'라고 쓰면 '''틀린다'''. $$\rm1.000\,L$$는 최소 단위가 $$\rm0.01\,L$$인 용기를 써서 $$\rm0.001\,L$$ 단위까지 눈대중으로 읽은 결과로, 최소 소수 둘째 자리는 [math(0)]인 게 확실하다는 뜻을 내포하고 있기 때문이다. 물론 유효숫자가 아니라면 소수점 아래 마지막에 오는 [math(0)]을 생략한다는 일반적인 약속을 적용해도 무관하다.
한편, 측정값이 아니고 개념적으로 배수 관계가 명확하다 하더라도 그 수치가 터무니 없이 커서 굳이 전체 자릿수를 다 알 필요가 없는 경우 과학적 기수법으로 나타내기도 하는데 이 때에는 유효숫자로 간주해서 계산한다. 컴퓨터의 용량 등에 쓰이는 단위인 $$\rm TiB$$[5] 에서 $$\rm Ti = \times2^{40}$$으로 명확한 계수의 배수이지만 이를 $$1.0995\times10^{12}$$로 나타냈다면 유효숫자이다.[6]
아래의 예시에서 수레국화색 숫자가 모두 유효숫자에 해당한다.
- 황금비 $$\varphi$$의 근삿값 $${\color{cornflowerblue}1.6180}$$ (유효숫자 5자리)
- 기체상수 $$R \approx\rm0.0{\color{cornflowerblue}82}\,atm\!\cdot\!L/(mol\!\cdot\!K)$$ (유효숫자 2자리)
- [math(\rm Kr)]의 전기 음성도 $${\color{cornflowerblue}3.00}$$ (유효숫자 3자리)
- VSMOW[7] 의 어는점 $$\rm{\color{cornflowerblue}0.000}\,\degree\!C$$ (유효숫자 4자리)
- VSMOW의 끓는점 $$\rm{\color{cornflowerblue}10\overline0}\,\degree\!C$$ (유효숫자 3자리)
- 태양의 표면 온도 $$\rm{\color{cornflowerblue}5\underline5}00\,\degree\!C$$ (유효숫자 2자리)
2.2. 유효숫자가 아닌 경우
'~개', '~회' '~배' 등과 같이 '''개념적으로 계수가 명확한 것, 즉 이산적인(discrete) 값'''은 유효숫자가 아니다. 이를테면 물 분자의 분자량을 계산할 때, 산소 원자의 '''개수'''만큼 곱해주는 $$2$$는 유효숫자가 아니다. 꼭 정수만 해당되는 건 아니고, 수소의 연소로 인한 물의 생성 엔탈피는 산소 기체에 $$\dfrac12$$만큼의 계수가 곱해지는데 이는 반응한 산소와 생성된 물의 입자수 비가 $$1:2$$라는 관계에서 나온 것이기 때문에 산소의 물질량이나 반응한 기체의 부피 등을 구할 때 곱해지는 $$\dfrac12$$ 혹은 $$0.5$$는 유효숫자가 아니다. 이 밖에도 자릿수가 약속되어있지 않은 수학 상수들([math(\pi)], [math(e)], [math(\sqrt2)] 따위)[9] 도 유효숫자가 아닌 것으로 간주하며 이들은 무한소수이기 때문에 유효숫자라 하더라도 '''자릿수가 무한개'''다. 또한 유효숫자는 실수로서의 개념이기 때문에 복소수의 허수단위 $$i$$나 사원수의 허수 단위 $$i$$, $$j$$, $$k$$등에서는 굳이 따지지 않는다. 단, 이들 단위에 곱해진 계수에 대해서는 경우에 따라 유효숫자로 간주할 수도 있다.
2.3. 과학적 기수법
측정값을 유효숫자 $$s\,(1\le s<10)$$와 $$10$$을 밑으로 하는 정수 $$n$$의 거듭제곱을 이용하여 $$s\times10^n$$의 꼴로 나타내는 방법. 계산기에서는 $$10^n = {\sf e}n$$ 혹은 $$ {\sf E}n$$으로 표기하기도 한다. 앞선 예시들을 과학적 기수법으로 나타내면 다음과 같다.
- $$1.6180$$
- $$\rm8.2\times10^{-2}\,atm\!\cdot\!L/(mol\!\cdot\!K)$$
- $$3.00$$
- $$\rm0.000\,\degree\!C$$
- $$\rm5.5\times10^3\,\degree\!C$$
- $$\rm1.00\times10^2\,\degree\!C$$
3. 끝수 처리
국제표준화기구(ISO)에서는 ISO 80000-1에서 소위 '오사오입(五捨五入)'이라 불리는 '''최근접 짝수 반올림'''(Round to nearest even)[10] 을 권장한다. 끝수가 $$0\sim4$$, $$6\sim9$$일 때에는 기존 반올림과 똑같고, $$5$$일 때에는 처리한 결과의 마지막 자릿수가 짝수가 되게 하는 방식이다. 즉, '''$$\bf5$$ 앞이 홀수면 올리고 짝수면 버린다'''. 예를 들면 $$\log_{10}7 = 0.845\,098\,040\cdots\cdots$$을 유효숫자 2자리로 처리하면 기존 반올림 $$0.85$$와는 달리 $$0.84$$가 되고 [math(\gamma = 0.577\,215\,664\cdots\cdots)]를 유효숫자 5자리로 처리하면 반올림의 경우와 똑같은 $$0.577\,22$$가 된다.
4. 유효숫자의 연산
전술한대로 유효숫자는 불확실성을 내포하고 있기 때문에, '''연산 결과 불확실성이 줄어들거나 늘어나서는 안된다'''는 대원칙을 토대로 유효숫자를 처리하는 규칙이 약속되어있다. 각 규칙의 설명은 어디까지나 정성적인 수준으로 엄밀하지 않으며 구체적인 수치로 따져보면 예외가 존재하지만 편의상 그렇게 정해져 있다고 생각하면 된다. 붉은 글씨는 각 유효숫자 및 계산 과정에서 불확실한 숫자임을 나타낸다.
4.1. 덧셈, 뺄셈
불확실한 숫자는 맨 마지막 자릿수의 숫자이므로, 그 자릿수보다 아래에 있는 숫자는 모두 불확실하다고 볼 수 있다. 이를테면 $$1.41{\color{red}4}$$는 소수 셋째 자리부터 불확실한 숫자이고 $$0.301{\color{red}0}$$은 소수 넷째 자리부터 불확실한 숫자이다. 이 둘을 더하면 $$1.71{\color{red}50}$$이 되며 불확실한 숫자가 2자리로 늘어나므로 불확실성 불변의 원칙에 따라 1자리가 되도록 끝수 처리를 해야한다. 위 결과에서는 소수 셋째 자리부터 불확실한 수치이므로 $$1.71{\color{red}5}$$로 정리한다.[11]
이를 일반화하면, 덧셈 및 뺄셈에서는 소수점 아래 자릿수가 가장 적은 쪽에 맞추면 된다는 것을 알 수 있다.
한편, 소수점 아래 자리가 없는 정수의 경우, 값을 과학적 기수법으로 나타내면 소수점 아래 자리를 포함하는 수치로 나타낼 수 있고, 덧셈 및 뺄셈을 연산하려면 모든 수의 자릿수가 같아야하므로, 다른 수치들도 똑같은 거듭제곱으로 통일시켜서 소수점을 이동시켜주면 된다. 이를 정리하면 덧셈, 뺄셈에서의 연산 규칙은 다음과 같다.
'''지수가 가장 큰 쪽으로 거듭제곱을 통일한 과학적 기수법에서 유효숫자의 소수점 아래 자릿수가 가장 적은 쪽에 맞춘다.'''
- $$3.141\,5\times10^3 + 2.718\,28\times10^{-1} \approx 3.141\,8\times10^3$$
지수가 큰 쪽으로 거듭제곱을 통일하면 $$(3.141\,{\color{red}5} + 0.000\,271\,82{\color{red}8})\times10^3$$으로 나타낼 수 있고 소수점 아래 자릿수를 비교해보면 전자는 4자리, 후자는 9자리이므로 결과값은 소수 넷째 자리까지 정리한다. 이를 도식화하면 다음과 같다.
$$\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$$
$$\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. 곱셈, 나눗셈
불확실한 수치가 곱해지면 다른 한쪽이 확실한 수치여도 결과적으로 불확실한 수치가 포함된다는 것은 납득할 수 있을 것이다. 이때, 어느 자리까지 불확실한 수치로 봐야하는지에 대한 문제가 생긴다. 이를테면 유효숫자인 $$3.{\color{red}6}$$을 $$2$$배하는 연산 $$3.{\color{red}6}\times2$$를 생각해보자. 일단 결과는 $$7.2$$인데 여기서 일의 자리의 $$7$$은 확실한 수치 $$3\times2$$에 불확실한 수치와의 곱 $$0.{\color{red}6}\times2 = {\color{red}1.2}$$의 $$\color{red}1$$이 더해진 값이니까 $$7.2$$ 전체가 불확실한 값이 되는 것일까? 얼핏 합당한 추론같아 보이지만, 곱셈 연산을 거듭할수록 불확실한 자릿수가 점점 늘어나 결과적으로 유효숫자의 자릿수가 줄어드는 문제가 있는 데다가(불확실성 불변의 원칙 위배), 두 수의 곱이 $$10$$미만이면 이러한 특징이 나타나지 않아 모든 곱셈 연산에 일괄적으로 적용할 수 없다는 문제도 있다. 따라서 이러한 판단은 적절치 않다.
본디 곱셈이란 같은 것을 여러번 더하는 덧셈 연산과 등가이다. 즉, $$3.{\color{red}6}\times2 = 3.{\color{red}6}+3.{\color{red}6}$$이다. 덧셈, 뺄셈의 연산 규칙을 적용하면 소수 첫째 자리가 불확실한 값들의 덧셈이므로 결과 역시 소수 첫째 자리까지 정리하며 결과적으로 $$7.{\color{red}2}$$, 즉 '''여전히 마지막 자릿수만 불확실한 수치'''라는 것을 알 수 있다. 만약 $$\color{red}2$$도 유효숫자라면 $$3\times{\color{red}2} = {\color{red}6}$$ 역시 불확실한 수치이기 때문에 $${\color{red}6} + 1 = {\color{red}7}$$도 불확실한 수치가 되며, 그 결과 $${\color{red}7.2} \approx \color{red}7$$로 정리한다.
이 과정을 잘 살펴보면, 전자는 유효숫자 2자리가 그대로 유효숫자 2자리가 되는 연산이고, 후자는 유효숫자 2자리와 유효숫자 1자리가 곱해져서 유효숫자 1자리가 되는 연산임을 알 수 있다. 즉 결과값은 곱하는 유효숫자의 자릿수가 가장 적은 쪽에 맞춰진다.
나눗셈은 역수의 곱셈 연산과 같으므로 이를 정리하면 곱셈, 나눗셈에서의 연산 규칙은 다음과 같다.
'''유효숫자의 자릿수가 가장 적은 쪽에 맞춘다.'''
- $$1.4\times0.6931 \approx 0.97$$
유효숫자 2자리와 유효숫자 4자리의 곱이므로 결과값은 유효숫자 2자리로 정리한다. 마찬가지로 도식화하면 다음과 같이 된다.
$$\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}$$
혹은
$$\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.9\color{red}7$$
$$\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}$$
혹은
$$\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.9\color{red}7$$
4.3. 일반적인 함수 및 연산
지수, 로그, 삼각함수 등 일반적인 함수에 대한 유효숫자 계산법은 교과과정에서 나오지 않는데, 연산에 의해 변하는 불확실성을 정확히 설명하기 위해서는 미분이 필요하기 때문이다.
값 $$x$$의 유효숫자가 소수점 이하 $$n$$자리까지 있다는 이야기는, 값 $$x$$와 반올림한 근사값 $$a$$에 대해
$$|x - a| < 0.5 \times 10^{-n}$$
가 성립함을 의미한다. 한편 미분계수의 성질을 생각하면 $$|f(x) - f(a)|$$는 $$|x-a||f'(x)|$$에 근접하므로, $$f(x)$$의 유효숫자가 소수점 이하 $$m$$자리까지 있으려면$$|x-a||f'(x)| < 0.5 \times 10^{-m}$$
이 만족되어야 한다. $$|x-a|$$가 $$0.5 \times 10^{-n}$$ 정도의 크기를 가질 수 있으므로,$$|f'(x)| < 10^{-(m-n)} \Leftrightarrow m-n \le - \log_{10}|f'(x)|$$
이를 정리하면 다음과 같다.만약 유효숫자의 개수를 비교하고 싶으면, $$x$$의 유효숫자의 개수는 $$\log_{10}\dfrac x{10^{-n}}$$을 내림한 정수로 생각할 수 있기 때문에, 다음의 조건을 생각할 수 있다.'''미분계수의 상용로그값을 정수 단위로 올림해서 나온 숫자만큼 유효숫자의 마지막 위치가 변한다.'''
변량 $$\left|\dfrac{x f'(x)}{f(x)}\right|$$은 수치해석 등에서 등장하는 조건수(conditional number)라는 개념의 일종이다. 이항연산 및 다항연산에 대해서도 비슷하게 조건수를 생각할 수 있고, 위에 이야기한 덧셈, 곱셈에서의 유효숫자 규칙도 엄밀히 생각하면 $$f(x,\,y)$$의 불확실성을 다변수 미분의 성질을 이용해 $$|x-a| \partial_x f + |y-b| \partial_y f$$로 간주하는 것으로 해석하는 것이 맞는다.'''$$\left|\dfrac{x f'(x)}{f(x)}\right|$$의 상용로그값을 정수 단위로 올림해서 나온 숫자만큼 유효숫자의 개수가 줄어든다.'''
4.4. 복합 연산
기본적으로 사칙연산의 순서에 따라 계산해나간다. 단, 유효숫자의 처리 규칙이 연산 종류에 따라 판이하게 다르기 때문에(특히 덧셈/뺄셈이 다른 연산 규칙과 두드러지게 다르다.) 연산 종류끼리 중간 과정을 계산해서 각각의 유효숫자 혹은 소수점 아래 자릿수를 확인해야한다. 당연한 사항이지만 유효숫자 처리는 연산 맨 마지막에 하는 것이 원칙이다.
[1] 참고로 눈금을 읽을 때에는 최소 눈금의 $$1/10$$단위까지 눈대중으로 읽는 것이 측정의 기본이다.[2] 반올림 체계에서는 $$3.14164$$가 상한선이 되겠지만 ISO에서 권장하는 최근접 짝수 반올림 체계에서는 $$3.14165$$까지가 해당된다. 자세한 것은 끝수 처리 문단 참고.[3] 실제 측정값의 자릿수가 길 경우 괄호를 써서 나타내기도 한다. 이를테면 미세구조상수 $$\alpha$$는 $$\alpha = 0.007\,297\,352\,569\,3\pm0.000\,000\,000\,001\,1$$인데 이게 공간을 많이 차지하기 때문에 주로 $$\alpha = 0.007\,297\,352\,569\,3(1\,1)$$로 나타낸다.[4] 개념적으로 계수 관계가 명확하지 않은 것, 즉 연속적인(continuous) 값을 말한다.[5] $$\rm Ti$$는 '테비'(tebi)라고 읽는다. 보통 $$\rm i$$를 생략한 $$\rm TB$$('''테라'''바이트)로 많이 나타내는데 엄밀히는 틀린 표기이다. $$\rm T = \times1000^4 = \times10^{12}$$를 의미하는 SI 접두어이기 때문.[6] 이와 비슷하게 [math(\rm mol)]은 개념상 입자의 개수를 나타내는 무차원의 단위임에도 불구하고 SI 기본 단위로 채택되어 차원이 $$\sf N$$인 단위로 취급한다.[7] 빈표준평균바닷물(Vienna Standard Mean Ocean Water). 이름에 바닷물이 들어가지만 증류를 통해 염을 제거한 순수한 물이며 과거 물의 삼중점을 정의할 때 쓰였던 표준 물질이다.[8] 즉 $$5500.$$, $$100.$$은 각각 유효숫자 4자리, 3자리이다.[9] 단, 손계산에서 이들 무리수의 근삿값으로 각각 $$3.14$$, $$2.718$$, $$1.414$$ 등이 제시되었을 경우 측정치로 간주하고 유효숫자로서 계산한다.[10] 은행업자들이 즐겨 썼던 방식이기 때문에 '은행업자 반올림'(banker's rounding)이라고도 한다.[11] 어디까지나 유효숫자의 끝수 처리 규칙에 따라 [math(0)]이 사라진 것일 뿐이며 소수점 아래 마지막 [math(0)]을 생략하는 일반적인 약속에 의한 것이 아님에 주의하자. 결과만 같아진 것일 뿐이다.