무한을 길들이기
컴퓨터의 산술 장치가 직접 하는 일은 덧셈·뺄셈·곱셈·나눗셈과 자리 이동 정도입니다. 그런데도 Math.sin(0.5)는 소수점 아래 16자리까지 맞는 답을 순식간에 돌려줍니다. 비결은 무한을 다루는 기술에 있습니다. 무한히 많은 항을 더하면 정확한 값이 되고, 그 가운데 유한한 몇 항에서 멈추면 오차가 얼마인지 보장할 수 있습니다. 이 장에서는 "무한히 잘게 쪼개기"라는 하나의 도구가 급수, 극한, 미분, 적분, e, 테일러 급수로 이어지는 과정을 직접 끌어 보며 따라갑니다.
- 항이 0으로 가도 합이 발산할 수 있음을 알고, 기하급수·조화급수·\(\sum 1/n^2\)의 차이를 그림으로 설명한다.
- 극한의 ε–δ 정의를 "출력 공차 ε를 요구받으면 입력 공차 δ를 돌려주는 계약"으로 읽는다.
- 미분(할선 → 접선)과 적분(리만 합)이 같은 극한 과정임을 알고, 수치 미분·적분의 오차 차수를 비교한다.
- e를 복리의 극한과 "자기 자신이 도함수인 지수"라는 두 얼굴로 이해한다.
- 테일러 급수로 함수를 다항식으로 근사하고, 수렴 반경과 절단 오차를 따져 계산기의 sin 버튼을 설계한다.
sin 0.5를 구하라고 하면 기계는 막힙니다. 각도를 재는 자도, 원을 그리는 컴퍼스도 없고 사칙연산만 있기 때문입니다. 해법은 sin을 다항식, 곧 덧셈과 곱셈만으로 된 식으로 바꾸는 것입니다. 테일러 급수 \(\sin x = x - x^3/3! + x^5/5! - \cdots\)는 무한히 긴 다항식이고, 이를 몇 항에서 자르면 남는 오차의 상한을 계산할 수 있습니다. 실제 수학 라이브러리는 먼저 인수를 작은 구간으로 줄이는 범위 축소를 하고, 그 구간에서 최소 최대 오차가 되도록 계수를 다시 맞춘 다항식을 씁니다. 일부 하드웨어와 초기 계산기는 덧셈과 자리 이동만으로 회전을 쌓는 CORDIC 계열 알고리즘을 썼습니다. 어느 쪽이든 바탕에 있는 생각은 같습니다. 무한 과정을 유한한 단계에서 끊되, 오차를 보장한다는 것입니다.
무한히 많은 조각의 합은 유한할 수 있다
계산기를 설계하는 사람이 sin x를 다항식들의 합으로 쓰는 공식을 받았다고 합시다. 항이 무한히 많습니다. 무한히 많은 수를 더하면 무한대가 되지 않을까요? 그리고 유한한 시간 안에 끝나지 않는 계산을 어떻게 믿을 수 있을까요? 이 질문은 2,400년 전 그리스에서 이미 역설의 형태로 나왔습니다.
엘레아의 제논(Zeno of Elea)이 남긴 역설 가운데 하나는 이렇습니다. 1 m 떨어진 벽까지 걸어가려면 먼저 절반(1/2 m)을 가야 하고, 그다음 남은 거리의 절반(1/4 m), 또 그 절반(1/8 m)을 가야 합니다. 이 단계는 끝없이 이어지므로 벽에 영원히 닿지 못한다는 주장입니다. 그러나 우리는 벽에 닿습니다. 무엇이 틀렸을까요?
제논의 논증이 놓친 것은 "무한히 많은 단계"와 "무한히 긴 합"이 다르다는 점입니다. n걸음 뒤까지 간 거리를 부분합(Partial Sum) \(S_n\)이라 하면
일반적으로 공비가 \(r\)인 기하급수(Geometric Series)는 \(|r|<1\)이면 수렴하고, 그 합은 다음과 같습니다.
정사각형을 반씩 채우기
계산기의 관점에서 이것은 아주 반가운 소식입니다. 무한급수가 수렴하고 남은 꼬리(Tail)의 크기를 계산할 수 있다면, "오차 \(10^{-16}\) 이하가 될 때까지 n항만 더한다"는 유한한 알고리즘이 됩니다. 그렇다면 항이 0으로 줄어들기만 하면 항상 수렴할까요? 다음 절의 답은 "아니다"입니다.
항이 0으로 가도 발산한다: 블록 쌓기 오버행
길이 1인 똑같은 블록(책, 벽돌, 도미노)을 탁자 모서리에서 한 층에 하나씩 쌓아 위로 갈수록 바깥으로 내민다고 합시다. 접착제는 쓰지 않습니다. 맨 위 블록은 탁자 모서리에서 최대 얼마나 멀리 나갈 수 있을까요? 블록 하나 길이(1)를 넘길 수 있을까요? 10을 넘길 수 있을까요?
위에서부터 생각하면 쉽습니다. 맨 위 블록은 바로 아래 블록 위에서 자기 무게중심이 아래 블록의 끝에 오도록, 즉 1/2만큼 내밀 수 있습니다. 위 두 개를 한 덩어리로 보면 그 무게중심이 세 번째 블록의 끝에 오도록 1/4만큼 더 내밀 수 있습니다. 위 k개 덩어리의 무게중심을 그 아래 블록의 끝에 맞추면 k번째 단계에서 \(1/(2k)\)만큼 더 나갑니다. 그래서 n개를 쌓았을 때 최대 오버행(Overhang)은
그런데 조화급수 \(\sum 1/n\)은 발산합니다. 항 \(1/n\)은 0으로 줄어드는데도 합은 한없이 커집니다. 따라서 블록만 충분하면 맨 위 블록을 탁자 밖으로 얼마든지 멀리 내밀 수 있습니다. 4개면 이미 1을 넘고(\(H_4/2 \approx 1.042\)), 2를 넘으려면 31개, 3을 넘으려면 227개, 5를 넘으려면 약 1만 2천 개가 필요합니다. 증가가 로그만큼 느릴 뿐 상한은 없습니다.
조화 쌓기와 두 급수의 경주
왜 발산하나: 14세기의 묶음 논법
조화급수의 발산은 14세기 니콜 오렘(Nicole Oresme)의 논법으로 잘 알려져 있습니다. 항을 2의 거듭제곱 경계로 묶으면 각 묶음이 1/2 이상입니다.
더 정확히는 \(H_n \approx \ln n + \gamma\)(\(\gamma \approx 0.5772\), 오일러–마스케로니 상수)입니다. 증가 속도는 놀랄 만큼 느려서, 100만 항을 더해도 약 14.39이고 \(H_n\)이 100을 넘으려면 대략 \(1.5\times10^{43}\)항이 필요합니다. 컴퓨터로 "더해 보고 멈추는지 확인"해서는 수렴과 발산을 구별할 수 없다는 뜻입니다. 단정 실수(float32)로 1/n을 더하면 어느 순간 1/n이 누적합의 반올림 단위보다 작아져 더해도 값이 변하지 않습니다. 화면에는 수렴처럼 보이지만 실제 급수는 발산합니다(10장).
\(\sum 1/n^2\) 그리고 갑자기 나타나는 π
항을 제곱만 해도 상황이 바뀝니다. \(1 + 1/4 + 1/9 + 1/16 + \cdots\)는 수렴합니다. 그 값을 정확히 구하는 문제는 17세기 중반 피에트로 멩골리가 제기했고 이후 바젤 문제(Basel Problem)로 불렸습니다. 레온하르트 오일러가 1734년 무렵 답을 냈습니다.
수렴하더라도 속도는 별개의 문제입니다. n항에서 자른 꼬리는 대략 \(1/n\)이므로 1000항을 더해도 소수점 셋째 자리에서 틀립니다(위 시뮬레이터의 마지막 칸). 수렴이 느린 급수를 그대로 계산기에 넣으면 안 됩니다. 계산기에 쓸 급수는 꼬리가 기하급수보다 빨리 줄어야 하고, 7절의 테일러 급수가 그 조건을 만족합니다.
극한은 공차 계약이다: ε–δ
센서 회로의 출력 전압이 저항값 R의 함수 \(V = f(R)\)이라고 합시다. 고객은 출력이 목표값 L에서 ±ε 안에 들어오길 요구합니다. 저항 공급사에 "공칭값 a에서 ±δ 이내"라는 공차를 주문해야 합니다. 어떤 ε를 요구받아도 그에 맞는 δ를 항상 제시할 수 있을까요? 제시할 수 없는 경우는 언제일까요?
"\(x\)가 \(a\)에 가까워지면 \(f(x)\)가 \(L\)에 가까워진다"는 말은 듣기에는 분명하지만 "가까워진다"가 무엇인지 정해 두지 않으면 증명에 쓸 수 없습니다. 19세기에 코시와 바이어슈트라스가 다듬은 정의는 이 말을 공차 계약으로 바꿉니다.
ε 띠를 좁혀라, δ 띠가 답한다
시뮬레이터에서 본 비율 \(\delta/\varepsilon \to 1/|f'(a)|\)은 공학자에게 익숙한 감도(Sensitivity) 계산입니다. 출력 공차를 입력 공차로 나눠 주는 환산 계수가 미분계수이고, 공정 산포 예산이나 센서 오차 전파(Error Propagation)는 모두 이 1차 근사 위에 서 있습니다. 감도가 큰 곳(1/x의 0 근처)에서는 같은 출력 공차를 맞추려면 입력을 훨씬 정밀하게 관리해야 합니다.
극한은 무한급수의 수렴도 같은 언어로 말해 줍니다. "\(\sum a_k = S\)"는 "어떤 ε를 대도 그보다 큰 N부터는 \(|S_n - S| < \varepsilon\)"이라는 계약입니다. 계산기 설계로 옮기면 "오차 \(2^{-53}\)을 요구받으면 몇 항까지 더하면 되는지 답할 수 있다"가 됩니다.
미분: 할선이 접선이 되는 극한
GPS 수신기는 1초마다 위치만 기록합니다. 그런데 화면에는 "지금" 속도가 나옵니다. 속도는 (이동 거리)/(걸린 시간)인데, "순간"이라는 시간 0 동안의 이동 거리는 0이라서 0/0이 됩니다. 0/0은 계산할 수 없는데 순간 속도는 어떻게 정의할까요?
답은 0/0을 직접 계산하지 않고 0/0으로 가는 과정의 극한을 쓰는 것입니다. 두 점 \((a, f(a))\), \((a+h, f(a+h))\)를 지나는 할선(Secant)의 기울기는 평균 변화율이고, \(h\)를 0으로 보내면 접선(Tangent)의 기울기, 곧 도함수(Derivative)가 됩니다.
h → 0: 할선을 접선으로 접기
오른쪽 그래프의 V자 모양은 두 오차의 줄다리기입니다. 수학적 근사 오차인 절단 오차(Truncation Error)는 테일러 전개로 \(\tfrac{h}{2}|f''(a)|\) 정도이고 h가 작을수록 줄어듭니다. 반면 \(f(a+h)\)와 \(f(a)\)가 거의 같아지면 두 수를 빼는 순간 유효 숫자가 사라지는 상쇄 오차(Cancellation)가 \(\epsilon_{\text{mach}}|f(a)|/h\) 정도로 커집니다. 두 오차의 합은 \(h \approx \sqrt{\epsilon_{\text{mach}}} \approx 10^{-8}\) 근처에서 가장 작습니다. 수학의 극한과 컴퓨터의 극한은 다릅니다. 이 차이는 10장의 주제입니다.
적분: 무한히 잘게 쪼갠 직사각형의 합
배터리 관리 칩(BMS)은 전류 i(t)를 1 ms마다 측정합니다. 남은 전하량은 전류를 시간에 대해 "모두 더한" 값인 \(Q = \int i\,dt\)입니다. 전류는 계속 변하므로 "전류 × 시간"이라는 직사각형 공식은 그대로 쓸 수 없습니다. 짧은 구간에서는 전류를 일정하다고 보고 직사각형으로 더한다면, 측정 간격을 얼마나 줄여야 원하는 정확도가 나올까요?
구간 \([a,b]\)를 n등분하고 각 조각 위에 직사각형을 세워 넓이를 더한 것이 리만 합(Riemann Sum)입니다. 직사각형 높이를 조각의 왼쪽 끝, 오른쪽 끝, 가운데 중 어디서 재든 n → ∞이면 같은 값으로 수렴하고, 그 극한이 정적분입니다.
리만 합 네 가지와 오차 차수
미분과 적분은 같은 도구를 반대 방향으로 쓴 것입니다. 미분은 곡선을 잘게 쪼개 각 조각을 직선으로 보고(국소 선형화), 적분은 영역을 잘게 쪼개 각 조각을 직사각형으로 봅니다. 두 연산이 서로의 역이라는 미적분의 기본 정리(Fundamental Theorem of Calculus)도 이 그림에서 나옵니다. 넓이 함수 \(A(x) = \int_a^x f\)에 폭 h의 얇은 띠를 더하면 넓이는 약 \(f(x)\,h\)만큼 늘어나므로, \(A'(x) = \lim_{h\to0} \frac{f(x)h}{h} = f(x)\)입니다.
e: 복리의 극한, 자기 자신이 기울기인 지수
연 100% 이자를 1년에 한 번 붙이면 1원이 2원이 됩니다. 반년마다 50%씩 두 번 붙이면 \(1.5^2 = 2.25\)원, 매달 \(1/12\)씩 붙이면 약 2.613원입니다. 붙이는 횟수 n을 무한히 늘리면 잔고도 무한히 커질까요? 17세기 말 야코프 베르누이가 이 문제를 다룬 것으로 알려져 있습니다.
| 이자 붙이는 주기 | n (연간 횟수) | (1 + 1/n)ⁿ |
|---|---|---|
| 연 1회 | 1 | 2 |
| 반기 | 2 | 2.25 |
| 분기 | 4 | 2.441406… |
| 월 | 12 | 2.613035… |
| 일 | 365 | 2.714567… |
| 시간 | 8,760 | 2.718127… |
| 분 | 525,600 | 2.718279… |
| 연속 복리 | ∞ | e = 2.718281828… |
잔고는 무한히 커지지 않고 한 수에 수렴합니다. 이 수가 자연상수 e입니다. 증가분이 계속 줄어들어 무한대로 달아나지 못하는, 1절과 같은 이야기입니다. 이항 전개를 해 보면 \((1+1/n)^n \to \sum_{k\ge0} 1/k!\)이 되고, 이 급수는 매우 빨리 수렴합니다. 10항이면 오차가 \(3\times10^{-7}\) 정도입니다.
하지만 e가 공학 곳곳에 나오는 진짜 이유는 다른 데 있습니다. 모든 지수 함수 \(b^x\)는 자기 자신에 비례하는 기울기를 가집니다.
밑 b를 돌려 기울기 곡선과 겹쳐라
"변화율이 현재 양에 비례한다"는 문장은 자연과 공학에서 가장 흔한 법칙입니다. 커패시터의 방전 전류는 남은 전압에 비례하고, 방사성 붕괴 속도는 남은 원자 수에 비례하며, 칩의 냉각 속도는 주변과의 온도 차에 비례합니다. 모두 \(y' = -y/\tau\)이고 해는 \(y = y_0 e^{-t/\tau}\)입니다. 밑을 e로 쓰는 것은 취향이 아니라, 미분해도 모양이 바뀌지 않는 함수를 쓰면 미분방정식이 대수 문제가 되기 때문입니다. RC 회로의 시정수 τ = RC는 4장에서, \(e^{i\omega t}\)로 회전을 표현하는 이야기는 2장에서 이어집니다.
테일러 급수: 함수를 다항식으로 바꾸는 기계
배정밀도(double)의 상대 정밀도는 \(2^{-53} \approx 1.1\times10^{-16}\)입니다. sin 0.5를 이 정밀도로 내려면 다항식을 몇 차까지 계산해야 할까요? 같은 방법으로 sin 100이나 ln 3도 계산할 수 있을까요?
미분은 "한 점 근처에서 함수 ≈ 직선"이라는 1차 근사였습니다. 직선 대신 2차, 3차 … 다항식으로 맞추면 근사가 점점 더 넓은 범위에서 정확해집니다. 점 \(a\)에서 함숫값과 1차, 2차, …, n차 도함수까지 모두 일치하는 다항식이 테일러 다항식(Taylor Polynomial)입니다.
sin 0.5에 적용하면 \(0.5^{15}/15! \approx 2.3\times10^{-17}\)이므로 \(x^{13}\)항까지, 즉 0이 아닌 항 7개면 상대 오차가 \(2^{-53}\) 아래로 내려갑니다. 덧셈과 곱셈 십여 번이면 됩니다. 아래 시뮬레이터에서 직접 확인해 보세요.
테일러 다항식 실험실
수렴 반경: 왜 ln(1+x)는 x > 1에서 망가지나
sin, cos, eˣ의 테일러 급수는 모든 x에서 수렴합니다(n을 충분히 키우면 됩니다). 반면 \(\ln(1+x) = x - x^2/2 + x^3/3 - \cdots\)의 항은 \(x^k/k\)이므로 \(|x|>1\)이면 \(x^k\)가 k보다 훨씬 빨리 자라 항이 0으로 가지 않고, 급수는 발산합니다. 전개점 a 주위에서 급수가 수렴하는 최대 거리를 수렴 반경(Radius of Convergence) R이라 합니다. ln(1+x)는 x = −1에서 무한대로 발산하므로 a = 0에서 R = 1입니다. 급수는 특이점까지의 거리만큼만 수렴하는데, 이 거리는 반대쪽(x = +1 방향)에도 똑같이 적용됩니다.
더 이상한 예가 \(1/(1+x^2)\)입니다. 실수 축 위에서는 어디서나 매끄럽고 유계인데, 0에서 전개한 급수 \(1 - x^2 + x^4 - \cdots\)는 \(|x|>1\)에서 발산합니다. 실수만 보면 이유가 없습니다. 복소평면으로 나가면 답이 보입니다. \(x = \pm i\)에서 분모가 0이 되고, 원점에서 \(\pm i\)까지의 거리가 정확히 1입니다.
계산기로 돌아가기: 범위 축소 + 다항식
시뮬레이터에서 "sin 8"을 눌러 보면 sin의 급수가 모든 x에서 수렴하는데도 배정밀도에 도달하지 못합니다. \(8^k/k!\)는 k = 7, 8 근처에서 400을 넘는 큰 항이 되고, 이 큰 항들이 서로 상쇄되어 약 1 크기의 답을 만드는 과정에서 반올림 오차가 살아남기 때문입니다. 수렴한다는 것과 계산에 쓸 만하다는 것은 다른 문제입니다. 그래서 실제 수학 라이브러리는 다음 순서로 계산합니다.
정리하면 계산기의 sin 버튼은 이 장의 도구를 모두 씁니다. 무한급수가 수렴한다는 보장(1절), 나머지 항의 크기를 미리 계산하는 오차 상한(3절의 ε–δ 계약), 상쇄 오차를 피하는 수치 감각(4절), 그리고 수렴 반경 안에서도 전개점 근처로 인수를 가져오는 범위 축소입니다. exp는 \(e^x = 2^k e^r\)로, log는 \(\ln(2^k m) = k\ln2 + \ln m\)으로 같은 방식의 범위 축소를 합니다.
π는 왜 원과 무관한 곳에 나타나나
이 장에서 π는 원과 관계없어 보이는 자리에 세 번 나왔습니다. 정수 제곱 역수의 합 \(\pi^2/6\), 유리함수의 적분 \(\int_0^1 \frac{dx}{1+x^2} = \pi/4\), 그리고 그 피적분 함수의 테일러 급수를 x = 1에서 적분한 라이프니츠 급수 \(1 - \tfrac13 + \tfrac15 - \cdots = \pi/4\)입니다. 확률에서 가장 유명한 식에도 π가 있습니다.
공통점은 π가 숨은 회전이나 주기성의 흔적이라는 것입니다.
오일러 공식 \(e^{i\theta} = \cos\theta + i\sin\theta\)가 이 모든 것을 묶습니다. e는 "자기 자신이 변화율인 성장"이고, 지수에 i를 곱하면 성장이 회전으로 바뀌며, 한 바퀴를 도는 데 필요한 각도가 2π입니다. 지수(e), 회전(i), 주기(π)는 같은 대상을 다른 방향에서 본 것입니다. 이 연결은 2장 복소수에서 본격적으로 다룹니다.
이 도구가 쓰이는 곳
극한, 급수, 미분, 적분, 테일러 근사는 시리즈의 거의 모든 책에서 바탕으로 쓰입니다. 대표적인 곳은 다음과 같습니다.
범위 축소 + 다항식 근사, 상쇄 오차, ulp 단위 정확도. ANALOGBOOK소신호 모델과 RC 시정수
지수 특성의 테일러 1차 선형화, e^(−t/RC) 과도 응답. DEVICEBOOK다이오드·트랜지스터 전류식
e^(V/V_T)와 볼츠만 분포, 동작점 근처 근사. OPTICSBOOK근축 근사
sin θ ≈ θ 하나로 렌즈 공식과 광선 행렬이 선형이 된다. MUSICBOOK급수로 만드는 소리
배음 급수의 수렴, 깁스 현상, 디지털 필터의 기하급수. SENSORBOOK적분과 노출
광전류의 시간 적분 = 신호, 오차 전파와 감도. AIBOOK기울기와 softmax
도함수로 내려가는 학습, exp·log의 수치 안정 기법. MONEYBOOK복리와 연속 복리
(1 + r/n)ⁿ → eʳ, 72의 법칙 = ln 2의 근사. CARBOOK추측 항법과 적분 오차
가속도를 두 번 적분하면 오차가 시간에 따라 커진다.
핵심 정리
- 무한급수의 합은 "부분합의 극한"이다. 기하급수 \(\sum r^k\)는 \(|r|<1\)에서 \(1/(1-r)\)로 수렴하고, n항에서 자른 오차 \(r^n/(1-r)\)를 미리 알 수 있다.
- 항이 0으로 가는 것은 수렴의 필요조건일 뿐이다. 조화급수는 \(\ln n\)처럼 느리게 발산하고(블록 오버행 \(H_n/2\)에 상한이 없다), \(\sum1/n^2\)는 \(\pi^2/6\)으로 수렴한다.
- 극한의 ε–δ 정의는 공차 계약이다. 어떤 출력 공차 ε에도 입력 공차 δ로 답할 수 있으면 극한이 존재하고, 매끄러운 함수에서 \(\delta/\varepsilon \to 1/|f'(a)|\)는 감도다.
- 미분은 할선 → 접선, 적분은 리만 합의 극한이다. 수치 미분은 절단 오차와 상쇄 오차의 균형 때문에 최적 h가 있고, 적분 공식은 오차 차수(1/n, 1/n², …)로 비용이 갈린다.
- e는 복리 극한 \((1+1/n)^n\)이자 \((b^x)' = (\ln b)\,b^x\)에서 \(\ln b = 1\)이 되는 밑이다. 그래서 \(y'=ky\) 꼴의 모든 성장·감쇠는 e로 쓴다.
- 테일러 급수는 함수를 다항식으로 바꾸고 나머지 항으로 오차를 보장한다. 수렴 반경은 복소평면에서 가장 가까운 특이점까지의 거리이고, 실제 계산은 범위 축소 + (minimax) 다항식으로 한다.
확인 퀴즈
1. 같은 블록을 한 층에 하나씩 쌓아 탁자 밖으로 내밀 때, 블록 수를 늘리면 맨 위 블록의 최대 오버행은?
2. 계단 함수(x < 1이면 0.5, x ≥ 1이면 1.5)의 a = 1에서 "lim f(x) = 1.5"라는 계약이 깨지는 이유는?
3. 배정밀도에서 전진 차분 \((\sin(1+h) - \sin 1)/h\)의 오차가 h = 10⁻¹⁵에서 h = 10⁻⁸일 때보다 큰 이유는?
4. 매끄러운 함수의 적분을 중점 합으로 계산할 때 조각 수 n을 2배로 늘리면 오차는 대략?
5. \(1/(1+x^2)\)를 x = 0에서 테일러 전개한 급수가 x = 1.5에서 발산하는 이유는?
6. 모든 지수 함수 \(b^x\)에 대해 (기울기) ÷ (높이)가 일정하다. 이 값과 e의 관계는?