세로셈법
1. 개요
수학에서 수식을 세로 방향으로 전개해서 풀이하는 일련의 과정을 말한다. 분야에 따라 다른 이름으로 불리기도 한다. 일반적으로 '세로셈법'이라 하면 나눗셈의 세로셈법을 가리킨다.
공통적으로 복잡한 계산을 빠르게 풀 수 있게 하는 도구라는 특징이 있다.
2. 목록
2.1. 나눗셈의 세로셈법
$$\begin{array}{r} \begin{array}{r}\\ 120 \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \end{array} \!\!\!\! \begin{array}{r}3.541\dot6 \\ \begin{array}{|}\hline 425\quad~~\; \end{array} \\ 360\qquad\; \\ \hline 65\;0\quad~~ \\60\;0\quad~~ \\ \hline 5\;00\quad \\4\;80\quad \\ \hline200~~ \\ 120~~ \\ \hline{\color{red}80}0 \\ 720 \\ \hline{\color{red}80} \end{array} \end{array}$$
초등학교 수학에서 나눗셈을 이렇게 계산했을 것이다.
위 세로식에서 안쪽의 수는 나눠질 수(피제수)를, 왼쪽에는 나눌 수(제수)를 쓰고 아래로 쭉 계산해서 내려가면서 그 몫을 맨 위에 쓰는 방식이다.[1] 아무리 해도 나누어떨어지지 않을 경우, 숫자가 반복되는 구간을 짚어서 그 끝부분에서 끊은 뒤, 그 숫자 위에 점 혹은 윗줄을 그어주면 된다.
그러나 중학교 수학으로 올라가면 저렇게 계산하는 일이 없는데, 분수(정확히는 유리수)로 퉁쳐버리기(...) 때문이다.
그러다가 다시 고등학교 수학으로 올라가 다항식의 사칙연산을 할 때 세로셈법이 등장한다. 물론 얘는 위와 같이 그냥 상수끼리 나누는 건 아니다. 그러나 그 이후로는 안 등장하나 싶다가 대학 과정에서 시계 산술이 적용되는 유한체의 나눗셈에서 세로셈법이 다시 등장한다.
2.2. 개방법
Shifting $$n$$-th root algorithm; 開方法
각종 근호를 산술적으로 계산하는 방법으로 단순히 개법(開法)또는 개방(開方)이라고도 한다. 한자어로 제곱은 평방(平方), 세제곱은 입방(立方)이라고 하며 $$n$$제곱을 통틀어 방(方)이라고 하기 때문에 방을 푼다(開)는 뜻에서 이런 이름이 붙었다. 특별히 제곱근, 세제곱근의 경우 각각 개평법(開平法), 개립법(開立法)이라고도 불린다.
제곱근을 시행착오법으로 구하다보면 $$k$$개의 유효숫자를 구하는데 $$k$$자리수끼리의 곱셈을 여러번 해야 한다. 이는 매우 귀찮은 작업일 뿐더러 손계산으로는 시간이 매우 많이 걸리기 때문에 이를 피하기 위하여 개발된 방식이다. 원리는 이항정리를 이용하는 것으로, 임의의 $$n$$제곱근에 얼마든지 적용할 수 있다. 그러나 개평법을 제외하고는 어디까지나 컴퓨터를 이용한 알고리즘의 영역이며 $$n=3$$만 되도 손계산 역시 매우 버거워진다.(후술) 사실상 손계산이 어느 정도 가능한 방법은 개평법이 유일하다고 해도 과언이 아니다.
2.2.1. 개평법
근본적으로 곱셈 공식
에서 $$a^2$$을 이항한
를 이용한다. $$\sqrt{15.2512}$$를 예로, 하나씩 넣어보기가 $$(3 + b)^2 \le 15.2512$$인 최대의 $$b$$를 찾는 방법이라면, 개평법은 우선 $$a^2 = 9$$를 양변에서 빼서
의 꼴로 만들고 $$3.1$$, $$3.2$$, …등은 모두 $$3 + 0.1x$$꼴, 즉 $$b = 0.1x$$이므로 양변에 $$100$$을 곱해
로 바꿔준 뒤 $$10$$미만의 최댓값 $$x$$를 찾는 것이다.
만약 $$x$$가 자연수로 딱 떨어지지 않고 소수가 된다면 자연수 $$y$$, $$0<z<10$$인 유리수 $$z$$를 이용하여 $$x = y + 0.1z$$로 나타낼 수 있으므로
가 되는데 $$(3\times20 + y)y$$는 자연수이므로 양변에서 빼면
가 되고 $$3\times10 + y = a'$$라 놓으면 위 부등식은 $$(2a' + 0.1z)0.1z \le 625.12 - (3\times20 + y)y$$가 되어 맨 처음에 이용했던 $$(2a + 0.1x)0.1x \le 6.2512$$와 완전히 같은 꼴이 된다.
이 말은 곧 $$x$$값을 소수 아래 자리까지 정확하게 찾으려고 애쓸 필요가 없으며 적당히 부등식을 만족하는 최대의 자연수를 구한 뒤 부등식의 양변에서 뺀 다음 다시 $$100$$을 곱하고 부등식을 만족하는 최대의 자연수를 찾고……하는 식으로 반복해나갈 수 있음을 의미한다.
이는 앞의 방법에 비하면 계산량이 차원이 다르다. (실제로 대략 [math(\mathcal{O}(k^2))]에서 $$\mathcal{O}(k)$$가 된 것이다.)
방법은 설명했으니 예시로 $$\boldsymbol{313.29}$$의 제곱근을 구해보자. 개평법을 쓸 때에는 다음과 같이 피개평수에서 빼는 연산을 위한 열과(이하 뺄셈 열), 빼기 위한 수를 계산하기 위한(상술한 $$2a+b$$를 계산하는) 열(이하 덧셈 열) 2줄을 준비해놓는 것이 좋다. 아래 식에서 왼쪽 단이 덧셈 열이고 오른쪽 단이 뺄셈 열이다.
- $$\begin{array}{l|r} \begin{array}{lr}& \\ \end{array} & \begin{array}{l}\sqrt{3{\color{red}|}13.{\color{red}|}29}\end{array} \end{array}$$
$$313.29$$를 소수점을 기준으로 2자리씩 끊어준다.[2] 이는 원래의 수를 $$100$$으로 나누고 곱해 두자리 정수만 남기고 소수점 아래를 버린것과 같다.
- $$\begin{array}{l|r} \begin{array}{lr}& \\ \end{array} & \begin{array}{l}\quad1\\ \sqrt{3{\color{red}|}13.{\color{red}|}29}\end{array} \end{array}$$
제곱을 했을 때 맨 앞 숫자를 넘지 않는 최대의 자연수의 제곱수 $$a^2$$을 구한다.[3] $$a$$가 곧 해의 첫 번째자리의 수가 된다. 이 경우 맨 앞 숫자가 $$3$$이므로 $$1(=1^2)\le3<4(=2^2)$$에서 $$a=1$$이다.
- $$\begin{array}{l|r} \begin{array}{lr}& \\ & 1 \\ +) & 1\\ \hline & 2 \end{array} & \begin{array}{l}\quad1 \\ \sqrt{3{\color{red}|}13.{\color{red}|}29} \\ \quad1 \\ \hline \quad 2\;13 \\\end{array} \end{array}$$
맨 앞 숫자에서 $$a^2$$을 빼고 그 다음 2자리의 수를 내려적는다.[4] 이는 원래의 수에서 $$a^2$$을 빼고 $$100$$을 곱한 것과 같다. 이와 동시에 다음 뺄 수를 계산하기 위해 덧셈 열에 $$2a$$를 기록한다.
- $$\begin{array}{l|r} \begin{array}{lr}& \\ & 1~~\\ +) & 1~~\\ \hline & 2{\color{red}7} \\ +) & {\color{red}7} \\ \hline & 34 \end{array} & \begin{array}{l}\quad1\;~~{\color{red}7}. \\ \sqrt{3{\color{red}|}13.{\color{red}|}29} \\ \quad1 \\ \hline \quad 2\;13 \\ \quad 1\;89 \\ \hline \quad ~~\;24\;\;29 \end{array} \end{array}$$
앞서 $$a^2$$을 빼고 $$100$$을 곱했으므로 $$100(2a+b)b = 100(2a+0.1x)0.1x = (20a+x)x$$가 뺄셈 열의 결과값보다 크지 않은 최대의 수, 즉 제곱근의 두 번째자리 수를 구한다. 이 경우 $$189(=27\times7)\le213<224(=28\times8)$$이므로 $$x=7$$이 된다. $$(20a+x)x$$를 뺄셈 열의 결과값에서 뺀 뒤 다음 2자리 수를 내려 적는다.
덧셈 열에는 $$20a+x$$와 $$x$$를 더한 $$2(10a+x)$$를 새로운 $$2a$$로 놓고 계산을 반복한다.
덧셈 열에는 $$20a+x$$와 $$x$$를 더한 $$2(10a+x)$$를 새로운 $$2a$$로 놓고 계산을 반복한다.
- $$\begin{array}{l|r} \begin{array}{lr}& \\ & 1~~~~\\+) & 1~~~~\\ \hline & 27~~ \\+) & 7~~ \\ \hline & 34{\color{red}7} \\ & {\color{red}7} \\ ~\end{array} & \begin{array}{l}\quad1\;~~7.\;~~{\color{red}7} \\ \sqrt{3{\color{red}|}13.{\color{red}|}29} \\ \quad1 \\ \hline \quad 2\;13 \\ \quad 1\;89 \\ \hline \quad~~ \;24\;\;29 \\ \quad~~ \;24\;\;29 \\ \hline \quad~~ \;~~~~\;\;~~0 \end{array} \end{array}$$
최종적으로 뺄셈 열에서 [math(0)]이 나오면 제곱근 구하기를 완료한 것이다. 루트안의 수가 무한소수거나 자리수를 나눌때 $$m$$개로 나누었는데($$313.29$$의 경우 $$3|13.|29$$로 3개) 루트를 $$m$$자리까지 구해도 안끝나는 경우는 루트자체가 무한소수이므로 적절한 유효숫자에서 끝내면 된다.
예시는 딱 유한소수로 끝나는 수를 가져왔지만 이 방법은 제곱근이 무리수가 나와도 원하는 유효숫자까지 계속 구해나갈 수 있다.앞서 $$\sqrt{15.2512}$$를 개평법으로 계산해보면
로 무한히 이어져나가는 것을 볼 수 있다. 곱셈·나눗셈의 유효숫자 표기법에 따라 나타내면 근삿값은 약 $$3.90528$$이 된다.
2.2.2. n제곱근(n≥3)의 경우
'''그냥 계산기를 쓰는 것이 낫다.'''[5] $$n$$제곱근부터는 개평법에 비해 계산량이 폭발적으로 늘어나기 때문이다. 당장에 개립법만 보더라도 똑같이 피개립수를 적절하게 $$1000^k$$으로 나누고 곱하기를 반복하면서 자연수 $$a$$, $$b$$에 대해 $$(a+0.1b)^3$$을 찾아나가는 과정은 똑같은데, 뺄셈 열에서 빼야 하는 수는 $$1000\left\{(a+0.1b)^3 - a^3\right\} = 300a^2b + 30ab^2 + b^3 = \mathord{\left(300a^2 + 30ab + b^2\right)}b$$가 된다. 덧셈 열로 쓰던 단도 개립법부터는 덧셈 열로서의 의미를 상실하여 사실상 곱셈 열이 되며(아래 예시 참조) 앞서 개평법에선 먼저 구했던 수를 2배하고 $$b$$를 붙여주고 곱하는 것으로 끝이었다면, 이제는 구해야 하는 수의 '''지수'''가 포함된 식에 하나하나 대입하면서 계산해야하는 상황이 된 것이다. 이쯤 되면 최대 결과값을 손으로 계산하는 것보다 계산기를 쓰는 게 차라리 나은 수준이 되는데 요즘 웬만한 공학계산기 및 계산기 어플에서는 $$n$$제곱근을 지원하기 때문에(……) 개립법부터는 그냥 계산기를 쓰는 게 차라리 낫다.
예시로 $$\sqrt[3]3$$을 개립법으로 유효숫자 4자리까지 구해보면 다음과 같다. 곱셈 열(왼쪽 단)에서 $$f(a,\,x) = 300a^2 + 30ax + x^2$$이며 $$a$$에 들어갈 수는 이전 결과까지 구한 해의 숫자를 나열한 것이다.
따라서 $$\sqrt[3]3 \fallingdotseq 1.442$$가 된다.
2.3. 도표적분법
부분적분을 연쇄적으로 해야하는 경우, '''도표적분법(Tabular Integration, 또는 tic-tac-toe method)''', 또는 '''부분적분 세로셈'''을 통해서 좀 더 빨리 부분적분을 계산할 수 있다. 이 때, 정적분은 부정적분으로 바꾸어서 계산하고 나중에 정적분으로 계산해야 한다. 세로셈은 부분적분을 여러 번 해야 할 때 더욱 빠르다.
부분적분 세로셈은 $$f'(x)=c$$(상수)가 되면 $$f'(x)$$가 적분 기호 밖으로 나올 수 있다는 점을 이용한다.[6] 표의 왼쪽 열은 미분하는 열이고, 오른쪽 열은 적분하는 열이다. 위의 우선순위에 의해 미분열 맨 위에 미분하려는 함수($$f(x)$$)를 적고, 적분열 맨 위에 적분하려는 함수($$g'(x)$$)를 적는다. 그 후 미분열 아래로 계속 미분을 하고, 적분열 아래로는 계속 적분하여 내려간다. 그러다가 미분열에 적힌 함수가 상수가 되면 맨 왼쪽에 행마다 +, -, +, -를 반복하여 '''부호'''를 붙인다. 그 아래로 적분을 한 번 더 하여 하향 대각선 방향으로 함수를 곱한 뒤 그 결과를 더하면 된다.
위 그림처럼 부분적분을 두 번 연속해서 쓸 수도 있다. 마찬가지 방법으로 계속 아래로 내려가면 부분적분을 계속해서 쓸 수 있다.
2.3.1. 교환법칙
어떤 함수가 같은 행에 있다는 것은 이 부분적분 중간에 그 함수를 곱해서 적분하는 과정이 들어있다는 뜻이다. 따라서 같은 행에 한해서 왼쪽 열(미분열)과 오른쪽 열(적분열)의 교환법칙이 성립한다. 단, 이 과정을 아래줄에 적을 때 '''+, - 부호도 같이 유지'''된다는 점에 유의하자. 사실 상 같은 식을 두 번 적은 셈이니 하향 대각선으로 가는 곱도 함수교환 직전에는 하지 않는다.
2.3.2. 미분열이 상수가 되지 않는 경우
같은 행에 있는 함수는 곱하여 적분한 것을 뜻하므로, 하향 대각선으로 가다가 마지막에는 가로 일직선으로 곱해서 '''적분기호'''를 붙이면 된다. 이 때 적분기호를 빼먹지 않도록 하자.
[1] 나눗셈의 대상이 체가 아닐 경우 오른쪽에 나머지를 써준다.[2] 이걸 잘못이해해서 뒤에서부터나 앞에서부터 끊다간 $$\sqrt{123.456}$$이나 $$\sqrt{\dfrac19} = \sqrt{0.\dot1}$$ 따위를 구하기 곤란하다 물론 빈자리는 [math(0)]으로 채우면 된다.[3] 수식으로 나타내면 맨 앞 숫자를 $$\alpha$$라고 했을 때 $$a^2 \le \alpha$$[4] 맨 처음에 소수점을 기준으로 2자리씩 끊어준 이유가 바로 여기에 있다.[5] 물론, 그 계산기에 들어가는 마이크로프로세서를 설계하는 사람이라면 이 계산법을 익혀두어야 한다.[6] 물론 꼭 상수가 되어야만 세로셈을 쓸 수 있는 것은 아니다. 뒤의 항목 참조.