무한히 더했는데 값이 있다는 말이 왜 모순이 아닌지를 부분합 표 하나로 답합니다. 그리고 0.999…가 1인 이유와 순환소수를 분수로 되돌리는 절차의 정체가 여기서 드러납니다.
PALDYN Team//35 MIN READ
29MATH
초급
급수 · 등비급수
지난 글에서 한없이 진행할 때 값이 어디에 붙는지를 표로 확인했습니다. 이제 그 도구를 덧셈에 씁니다.
21+41+81+⋯ 처럼 항이 끝없이 이어지는 덧셈에 값이 있을 수 있을까요. 무한히 더하는데 값이 유한하다는 말은 처음 들으면 모순처럼 들립니다. 이 글은 그 말이 왜 모순이 아닌지를 표 한 장으로 답하고, 값을 구하는 공식을 세웁니다.
부분합이 만드는 수열
먼저 뜻을 분명히 합니다. 수열 a1,a2,a3,… 을 죽 더해 나가는 것을 급수라고 합니다. 그런데 무한히 많은 항을 한꺼번에 더할 방법은 없습니다. 그래서 앞에서부터 n 항까지만 더한 값 을 만듭니다.
Sn=a1+a2+⋯+an
이것을 부분합 이라고 합니다. 부분합은 n 마다 하나씩 정해지므로 그 자체가 또 하나의 수열입니다. 그러면 지난 글의 도구를 그대로 쓸 수 있습니다.
무한급수의 값이란 부분합 수열의 극한입니다.
새 개념이 아니라 이미 세운 것을 한 번 더 쓴 것입니다. 처음의 예로 표를 채웁니다.
n
1
2
3
4
5
10
Sn
0.5
0.75
0.875
0.9375
0.96875
0.9990234375
항을 더할 때마다 남은 자리의 절반씩만 채웁니다. 그래서 1을 넘지 못하고, 동시에 1과의 차이가 계속 반으로 줄어듭니다. 이것이 "무한히 더해도 값이 유한하다"의 전부입니다 — 모순이 아니라 더하는 것이 충분히 빨리 작아진다 는 말입니다.
21+41+81+⋯=limn→∞Sn=1
커지면서 못 넘는다
값이 있다고 말할 수 있는 근거를 조금 더 또렷이 적어 둡니다. 두 가지가 동시에 성립합니다.
첫째, 부분합은 늘 커집니다. 더하는 항이 전부 양수이므로 Sn+1=Sn+an+1>Sn 입니다. 한 번도 내려가지 않습니다.
둘째, 부분합은 1을 넘지 못합니다. 정사각형을 채우는 그림이 그것을 보여 줍니다. 남은 빈 자리의 절반만 채우므로 아무리 채워도 빈 자리가 남습니다.
이 둘이 함께 성립하면 값이 있습니다. 한쪽으로만 가는데 벽에 막혀 있으면 어딘가에 붙을 수밖에 없기 때문입니다. 계속 커지지만 1을 넘지 못하니, 1이거나 1보다 작은 어떤 값에 다가갑니다.
거꾸로 말하면 이 둘 중 하나만 깨져도 이야기가 달라집니다. 벽이 없으면 한없이 커지고, 오르내리면 한 값에 붙지 못합니다. 뒤에서 두 경우를 다 봅니다.
참값과 부분합의 차
n 항까지 더한 것은 참값이 아닙니다. 얼마나 모자라는지를 이름 붙여 둡니다.
Rn=S−Sn
참값에서 부분합을 뺀 것을 오차 라고 합니다. S=1 인 위 급수에서 표를 다시 읽으면 이렇습니다.
n
1
2
3
4
5
Sn
0.5
0.75
0.875
0.9375
0.96875
Rn
0.5
0.25
0.125
0.0625
0.03125
오차가 한 항마다 반으로 줄어듭니다. 급수의 값이 있다는 말은 오차가 0으로 간다는 말과 같습니다. 값을 구하는 일과 오차를 재는 일이 같은 일이라, 이 글에서는 둘을 나란히 다룹니다.
오차가 마지막 항과 같은 자리
이 급수에는 눈에 띄는 것이 하나 더 있습니다. 위 표의 두 줄을 견줘 봅니다.
R1=0.5=a1,R2=0.25=a2,R3=0.125=a3
오차가 마지막으로 더한 항과 정확히 같습니다.
우연이 아닙니다. Sn=1−(21)n 이므로 Rn=(21)n 이고, 이 급수의 n 번째 항이 바로 그 값입니다.
그림으로 보면 더 분명합니다. n 번째 조각을 채운 뒤 남은 빈 자리는 방금 채운 조각과 크기가 같습니다. 반씩 채웠으니 남은 것도 방금 채운 것만 하기 때문입니다.
모든 등비급수가 이렇지는 않습니다. 공비가 21 일 때만 이렇게 딱 맞아떨어집니다. 일반적인 오차 식은 뒤에서 세웁니다.
어긋나게 빼기
이제 등비수열을 더합니다. 첫째항 a, 공비 r 인 등비수열의 n 항까지의 합입니다.
Sn=a+ar+ar2+⋯+arn−1
이 식을 그대로 접을 방법이 있습니다. 양변에 r 을 곱해 봅니다.
rSn=ar+ar2+⋯+arn−1+arn
두 식을 나란히 놓으면 가운데가 통째로 겹칩니다. 앞의 식에서 뒤의 식을 빼면 겹치는 것이 전부 지워집니다.
Sn−rSn=a−arn
왼쪽을 묶습니다.
Sn(1−r)=a(1−rn)
r=1 이면 양변을 1−r 로 나눌 수 있습니다.
Sn=1−ra(1−rn)
확인해 봅니다. a=21, r=21, n=4 를 넣으면
S4=2121(1−161)=1−161=1615=0.9375
위 표의 네 번째 칸과 같습니다.
공비가 1보다 클 때
이 공식은 r 이 커도 그대로 씁니다. 무한히 더할 수 없을 뿐이지 유한한 n 항까지의 합은 언제나 있습니다.
a=1, r=2 를 넣어 봅니다.
Sn=1−21(1−2n)=−11−2n=2n−1
분자와 분모가 모두 음수라 부호가 상쇄됩니다. 값을 세어 보면 S1=1, S2=3, S3=7, S4=15 입니다.
27번 글에서 점화식 an+1=2an+1 을 굴려 얻은 1,3,7,15,31 과 같은 줄입니다. 그때는 굴려서 얻고 일반항을 눈으로 짐작했는데, 지금은 공식으로 곧장 나옵니다. 그 점화식이 「앞 것을 두 배 하고 1을 더한다」였고, 그것이 곧 1+2+4+⋯ 를 한 항씩 늘려 가는 일이었기 때문입니다.
r 이 1보다 크면 n 이 커질수록 Sn 도 한없이 커집니다. 그래서 무한히 더한 값은 없습니다.
같은 수법을 한 번 더
한 칸 어긋나게 놓고 빼는 이 수법은 등비급수에만 쓰는 것이 아닙니다. 항에 k 가 곱해진 급수에도 같은 손놀림이 통합니다.
T=1+2r+3r2+4r3+⋯
계수가 1,2,3,4 로 늘어납니다. 양변에 r 을 곱해 한 칸 어긋나게 놓습니다.
rT=r+2r2+3r3+⋯
빼면 계수가 한 칸씩 상쇄되어 전부 1이 됩니다.
T−rT=1+r+r2+r3+⋯
오른쪽은 우리가 아는 등비급수입니다. ∣r∣<1 이면 값이 1−r1 이므로
T(1−r)=1−r1⇒T=(1−r)21
r=21 로 확인합니다. 공식은 (1/2)21=4 를 줍니다. 손으로 다섯 항을 더해 보면
1+1+0.75+0.5+0.3125=3.5625
4로 가고 있습니다. 한 번 익힌 손놀림이 다른 급수에도 그대로 간다 는 것이 이 절의 요점입니다.
망원합과 같은 얼개
가운데가 지워지는 이 모양을 27번 글에서 이미 만났습니다. 망원합 이 그것이었습니다.
∑k=1n(bk+1−bk)=bn+1−b1
이웃한 두 항의 차를 더하면 가운데가 짝지어 지워지고 양 끝만 남습니다. 지금 한 일도 같습니다 — Sn 과 rSn 을 한 칸 어긋나게 놓았더니 ar,ar2,…,arn−1 이 위아래로 짝을 지어 지워지고 a 와 arn 만 남았습니다.
두 줄을 어긋나게 놓아 짝을 만들고 지운다 — 접힌 합을 손으로 여는 방법 중 이것이 가장 자주 쓰입니다.
수렴 조건
공식 Sn=1−ra(1−rn) 에서 n 에 달린 것은 rn 하나뿐입니다. 그러니 지난 글이 정리한 rn 의 거동을 그대로 넣으면 됩니다.
∣r∣<1 이면 rn→0 이므로
S=limn→∞Sn=1−ra(1−0)=1−ra
∣r∣≥1 이면 rn 이 0으로 가지 않으므로 부분합도 한 값에 붙지 않습니다 — 발산하거나 진동합니다. 다만 r=1 은 위 공식 자체를 못 쓰는데, 그때는 Sn=na 라 a=0 이면 그냥 한없이 커집니다.
무한등비급수는 ∣r∣<1 일 때만 값이 있고, 그 값은 1−ra 입니다.
r = −1 인 자리
∣r∣≥1 이 전부 「한없이 커진다」는 아닙니다. r=−1 이 그렇습니다.
a=1, r=−1 이면 항이 1,−1,1,−1,… 이고 부분합은 이렇게 됩니다.
S1=1,S2=0,S3=1,S4=0,…
1 과 0 을 영원히 오갑니다. 커지지도 않고 한 값에 붙지도 않습니다. 이런 것을 진동한다고 합니다.
앞 절에서 「한쪽으로만 가는데 벽에 막혀 있으면 어딘가에 붙는다」고 했는데, 여기는 벽은 있지만 한쪽으로만 가지 않습니다. 두 조건 중 하나가 깨진 자리입니다.
공식에 억지로 r=−1 을 넣으면 1−(−1)1=21 이 나옵니다. 부분합이 한 번도 갖지 않은 값입니다. 조건을 확인하지 않고 공식만 쓰면 이런 답이 나오므로, ∣r∣<1 을 먼저 보는 습관이 필요합니다.
몇 항이면 충분한가
오차 식을 일반적으로 세워 둡니다. S 에서 Sn 을 뺍니다.
Rn=1−ra−1−ra(1−rn)=1−rarn
이 식이 있으면 「소수 몇째 자리까지 맞추려면 몇 항을 더해야 하는가」에 답할 수 있습니다.
a=1, r=0.9 로 해 봅니다. 참값은 0.11=10 이고 오차는 Rn=0.10.9n=10×0.9n 입니다. 오차를 0.01 아래로 내리려면
예순여섯 항 이 필요합니다. 같은 계산을 r=21 로 하면 Rn=2×(21)n 이고 0.01 아래로 내리는 데 여덟 항 이면 됩니다.
여덟과 예순여섯입니다. 공비가 0.9와 0.5로 그리 멀지 않은데 필요한 항의 수는 여덟 배가 넘습니다.
크기만 보면 되는 이유
조건이 r<1 이 아니라 ∣r∣<1 인 것에는 이유가 있습니다.
rn 이 0으로 가는지는 그 크기가 0으로 가는지 로 정해집니다. ∣rn∣=∣r∣n 이므로, 크기가 1보다 작은 수를 거듭 곱하면 크기가 0으로 갑니다. 부호는 그때 함께 붙어 다닐 뿐 크기에 관여하지 않습니다.
r=−21 로 확인합니다.
−21,41,−81,161,…
부호는 오가지만 크기는 21,41,81 로 줄기만 합니다. 그러니 0으로 갑니다.
r=−2 라면 크기가 2,4,8 로 커지므로 0으로 가지 않습니다. 부호는 다가가는 방향을 정하고 크기는 다가가는지 아닌지를 정합니다. 이 갈래를 섞지 않는 것이 조건을 절댓값으로 적은 이유입니다.
다가가는 속도와 방향
첫째항을 1로 고정하고 공비만 바꿔 가며 부분합을 직접 계산합니다.
r
S1
S2
S3
S4
S5
1−r1
21
1
1.5
1.75
1.875
1.9375
2
31
1
1.3333
1.4444
1.4815
1.4938
1.5
0.9
1
1.9
2.71
3.439
4.0951
10
−21
1
0.5
0.75
0.625
0.6875
0.6667
한 줄씩 손으로 세어 봅니다. r=31 이면 항이 1,31,91,271 이므로 S3=1+0.3333+0.1111=1.4444 이고, 공식은 1−1/31=23 입니다. 표의 값이 그쪽으로 가고 있습니다.
오차가 줄어드는 비율
오차 식 Rn=1−rarn 에서 이웃한 두 오차의 비를 봅니다.
RnRn+1=arn/(1−r)arn+1/(1−r)=r
오차가 한 항마다 정확히 r 배가 됩니다. 크기로만 말하면 ∣r∣ 배씩 줄어듭니다.
이렇게 오차가 한 걸음마다 일정한 비율로 줄어드는 것을 선형수렴 이라고 합니다. 이름에 「선형」이 붙었지만 오차가 직선으로 줄어든다는 뜻은 아닙니다 — 줄어드는 비율이 일정하다 는 뜻입니다.
일정한 비율로 줄어드는 것은 곧 등비수열이므로, 오차 자체가 또 하나의 등비수열입니다. 그래서 한 자리를 더 맞추는 데 드는 항의 수가 늘 같습니다.r=21 이면 서너 항마다 한 자리씩 늘고, r=0.9 이면 스물두 항마다 한 자리입니다.
여덟 항과 예순여섯 항
앞에서 얻은 두 숫자를 그림으로 견줍니다. 세로 눈금을 한 칸에 열 배씩 벌어지게 잡으면 두 오차가 각각 직선 으로 내려갑니다.
직선이 되는 이유가 앞 소절에 있습니다. 오차가 한 항마다 일정한 비율로 곱해지므로, 눈금을 곱셈으로 잡으면 일정한 간격으로 내려앉습니다. 두 직선의 기울기가 곧 두 공비이고, 기울기 차이가 그대로 여덟 항과 예순여섯 항의 차이입니다.
이 그림이 답하는 물음은 하나입니다 — 공비가 0.5에서 0.9로 겨우 0.4 올랐는데 왜 항이 여덟 배 넘게 필요한가. 한 항마다 곱해지는 값이 0.5와 0.9이고, 곱셈은 조금만 달라도 여러 번 되풀이하면 크게 벌어지기 때문입니다.
위아래로 오가며 다가가기
표의 네 줄에서 배울 것이 각각 다릅니다.
r=0.9 는 다가가는 속도가 느립니다. 다섯 항까지 가도 4.1인데 답은 10입니다. 공비가 1에 가까울수록 오래 걸립니다.
r=−21 은 위아래로 오가며 다가갑니다. 부호가 번갈아 붙으니 답을 지나쳤다 돌아오기를 되풀이합니다.
나머지 둘은 아래에서 곧장 올라갑니다.
가운데 줄을 조금 더 봅니다. 1,0.5,0.75,0.625,0.6875 는 답인 32≈0.6667 을 사이에 두고 번갈아 서 있습니다.
여기에는 덤이 하나 있습니다. 답이 이웃한 두 부분합 사이에 반드시 있습니다.0.625 와 0.6875 사이라는 것을 두 값만 보고도 말할 수 있고, 그러면 오차가 그 둘의 차인 0.0625 보다 작다는 것도 압니다. 한쪽에서만 다가가는 경우에는 이런 말을 할 수 없습니다 — 위에 벽이 있다는 것만 알지 얼마나 가까운지는 따로 재야 합니다.
0.999…와 순환소수
이제 오래된 물음 하나를 정리합니다. 0.999… 는 1보다 조금 작은 수가 아닐까요.
이 소수를 자리마다 쪼개 봅니다.
0.999…=0.9+0.09+0.009+⋯
첫째항이 0.9 이고 다음 항마다 0.1 배씩 되는 등비급수입니다.∣0.1∣<1 이므로 값이 있고,
S=1−0.10.9=0.90.9=1
0.999… 는 1에 가까운 수가 아니라 1을 적는 또 하나의 방법입니다. "0.999… 는 1보다 작다"는 느낌은 유한하게 끊어 본 부분합 0.9,0.99,0.999 를 떠올린 것입니다. 그것들은 확실히 1보다 작지만, 급수의 값은 그 부분합들의 극한입니다.
세 배 해서 닿는 같은 결론
급수를 쓰지 않고도 같은 곳에 닿는 길이 있습니다. 누구나 아는 나눗셈 하나에서 출발합니다.
31=0.333…
양변에 3을 곱합니다.
1=0.999…
왼쪽은 33=1 이고 오른쪽은 각 자리의 3이 9가 된 것입니다. 한 줄로 끝납니다.
이 길이 짧기는 하지만 앞의 길만 못한 데가 있습니다. 31 이 0.333… 이라는 것 자체가 이미 무한소수를 인정하고 들어가는 말이라, 「무한히 이어지는 소수가 정확히 어떤 수를 가리키는가」라는 원래 물음을 그대로 남겨 둡니다. 급수로 푸는 쪽은 그 물음에 부분합의 극한 이라고 답한 뒤에 값을 구합니다.
유한소수도 표기가 둘이다
0.999…=1 이 특별한 예외는 아닙니다. 끝나는 소수는 전부 표기가 둘입니다.
0.5=0.4999…
확인해 봅니다. 0.4999… 는 0.4 에 0.09+0.009+⋯ 를 더한 것이고, 뒤쪽은 첫째항 0.09, 공비 0.1 인 등비급수라 0.90.09=0.1 입니다. 합이 0.5 입니다.
짧은 표기
긴 표기
1
0.999…
0.5
0.4999…
2.7
2.6999…
마지막 자리를 하나 줄이고 뒤에 9를 무한히 붙이면 같은 수가 됩니다. 그래서 소수 표기는 수와 일대일로 대응하지 않습니다. 보통은 짧은 쪽을 쓰기로 약속해 두어 이 겹침이 눈에 띄지 않을 뿐입니다.
순환마디가 뒤에서 시작할 때
12번 글에서 순환하는 소수를 분수로 바꾸는 절차를 익혔습니다. 그때는 왜 그렇게 되는지 말하지 않고 방법만 썼습니다. 그 정체가 등비급수입니다.
0.4747… 을 두 자리씩 끊어 봅니다.
0.4747…=0.47+0.0047+0.000047+⋯
첫째항 0.47, 공비 0.01 인 등비급수입니다.
S=1−0.010.47=0.990.47=9947
순환마디가 두 자리라 분모에 9가 둘 서는 이유가 여기 있습니다 — 1−0.01=0.99 이기 때문입니다. 한 자리면 0.9a 이라 9가 하나, 세 자리면 999입니다.
순환이 첫 자리부터 시작하지 않으면 한 걸음이 더 필요합니다. 0.1666… 처럼 6만 되풀이되는 경우입니다.
첫째, 순환하지 않는 앞 조각을 떼어 냅니다.
0.1666…=0.1+0.0666…
둘째, 남은 것만 등비급수로 봅니다. 0.06+0.006+0.0006+⋯ 은 첫째항 0.06, 공비 0.1 이므로
0.90.06=906=151
셋째, 떼어 둔 것을 다시 더합니다.
101+151=303+302=61
앞 조각과 순환 조각을 갈라 따로 다루고 마지막에 합친다 — 순환마디가 어디서 시작하든 이 세 걸음이면 됩니다.
조화급수의 반례
여기까지 보면 이런 짐작이 듭니다 — 더하는 항이 0으로 가면 합도 유한하지 않을까. 아닙니다. 반례가 하나 있습니다.
1+21+31+41+51+⋯
이것을 조화급수라고 합니다. 항 n1 은 분명히 0으로 갑니다. 그런데 합은 한없이 커집니다. 항을 2의 거듭제곱 단위로 묶으면 보입니다.
31+41>41+41=21
51+61+71+81>4×81=21
91+⋯+161>8×161=21
묶음마다 안의 항을 그 묶음의 마지막 값으로 낮춰 잡아도 합이 21 을 넘습니다. 묶음은 얼마든지 더 만들 수 있으니 21 을 한없이 더하는 셈이고, 그러면 한없이 커집니다.
1+21+31+⋯=∞
백만 항을 더해도 14
「한없이 커진다」는 말이 「빨리 커진다」는 뜻은 아닙니다. 조화급수는 믿기 어려울 만큼 느리게 커집니다.
항의 수
부분합
10
약 2.93
100
약 5.19
1,000
약 7.49
1,000,000
약 14.39
백만 항을 더해도 15가 안 됩니다. 위의 묶음 논법이 그대로 이유를 줍니다 — 21 을 한 번 더 벌려면 묶음의 크기를 두 배로 키워야 하므로, 값을 21 올리는 데 드는 항의 수가 매번 두 배가 됩니다.
그러니 100을 넘기려면 항이 얼마나 필요한지 짐작이 갑니다. 계산해 보면 대략 1043 개입니다. 한없이 커지지만 아무도 그 커짐을 다 볼 수는 없습니다.
이 대비를 잘 봐 두어야 합니다. 「값이 있는가」와 「손으로 다룰 만한가」는 다른 물음입니다. 조화급수는 값이 없는데도 백만 항까지는 14 근처에서 얌전해 보이고, r=0.9 인 등비급수는 값이 있는데도 예순여섯 항이 필요했습니다.
지수 하나 차이
분모의 지수를 하나만 올리면 결과가 뒤집힙니다.
1+41+91+161+⋯=∑n=1∞n21
이것은 값이 있습니다. 부분합을 세어 보면 1, 1.25, 1.361, 1.424, 1.464로 오르다가 1.645 근처에서 멎습니다.
간단한 벽 하나를 세울 수 있습니다. 둘째 항부터는 n21<n(n−1)1 인데, 오른쪽은 27번 글에서 부분분수로 쪼개 접었던 그 꼴입니다.
n(n−1)1=n−11−n1
더하면 망원합이라 가운데가 지워지고 1보다 작은 값이 남습니다. 그러니 전체가 2를 넘지 못합니다. 커지면서 벽에 막혀 있으니 값이 있습니다 — 이 글 첫 절의 논법 그대로입니다.
급수
결과
∑n1
값이 없다
∑n21
값이 있다
지수가 1이냐 2냐 하나로 갈립니다. 이 경계 위에서 정확히 어디까지가 값이 있는 쪽인지는 이 과정에서 다루지 않습니다.
0으로 가는 것과 빨리 가는 것
정리하면 이렇습니다.
항이 0으로 가는 것은 필요할 뿐 충분하지 않습니다. 0으로 가지 않으면 값이 없는 것은 분명합니다 — 매번 같은 크기를 더하니 한없이 커집니다. 하지만 0으로 간다고 값이 있는 것은 아닙니다.
갈림길은 얼마나 빨리 작아지는가 입니다.
항
줄어드는 방식
결과
2n1
한 항마다 곱해서 절반
값이 있다
n21
자리의 제곱만큼
값이 있다
n1
자리만큼
값이 없다
곱해서 줄어드는 것이 가장 빠르고, 그다음이 제곱, 그다음이 그냥 n 입니다. 조화급수는 그 선 아래에 있습니다.
수렴을 판정하는 일반적인 방법들은 이 과정에서 다루지 않습니다. 초급이 값을 구할 수 있는 급수는 등비급수 하나입니다. 등비가 아닌 급수를 다루는 도구는 35번 · 테일러 첫걸음에서 다시 만납니다.
실수를 2^b개 격자에 사상할 때 오차의 분산이 왜 Δ²/12인지 유도하고, 그것이 비트당 6.02dB라는 SNR로 번역되는 과정을 실측과 대조했습니다. 이상치 하나가 나머지 값의 유효 비트를 어떻게 먹는지, 그리고 int4에서 성능이 무너지는 지점을 오차 예산으로 미리 계산하는 법까지.
최댓값 빼기, 로그 공간, log1p·expm1, 분산의 두 공식, 정규화의 ε, fp32 누산, 역행렬 대신 solve — 프레임워크가 몰래 해 주는 일곱 가지를 하나씩 꺼내 각각 어떤 고장을 막는지 직접 재 봤습니다. 수식을 그대로 옮긴 코드가 왜 라이브러리보다 나쁜지에 대한 목록입니다.
0.1 + 0.2가 0.3이 아닌 이유부터 시작해 머신 엡실론을 유도하고, 같은 16비트인데 fp16과 bf16이 서로 다른 지점에서 터지는 이유, 비슷한 수를 뺄 때 유효자리가 사라지는 파괴적 상쇄, 그리고 1,000만 개를 순서만 바꿔 더했을 때 오차가 백만 배 갈리는 실험까지 직접 재 봤습니다.