04단원에서 연속적으로 퍼져 있는 양을 더했습니다. 이 단원에서는 떨어져 있는 항을 무한히 많이 더합니다.
1+21+41+81+⋯
이 합에 의미를 줄 수 있습니다. 앞에서부터 차례로 더해 보면 1,1.5,1.75,1.875,…로 2에 다가갑니다. 그러니 부분합의 극한을 그 합이라고 정하면 됩니다.
그런데 모든 급수가 그렇지는 않습니다.
1+21+31+41+⋯
는 항이 0으로 가는데도 부분합이 한없이 커집니다. 앞의 급수와 무엇이 다른가. 항이 줄어드는 속도입니다. 이 강의는 그 경계가 어디인지를 정합니다.
구조가 53강과 놀랄 만큼 닮았습니다. p-판정도 비교판정법도 거의 그대로 옮겨 오며, 적분판정법이 두 세계를 직접 잇습니다. ∑np1와 ∫1∞xpdx가 정확히 같은 조건에서 수렴합니다.
급수는 이 커리큘럼의 도구 상자에서 큰 자리를 차지합니다. 56강의 테일러 급수, 59강의 푸리에 급수가 이 강의의 판정 위에 서 있고, 96강 이후 알고리즘의 계산량, 143강의 확률 분포 전개에서 계속 쓰입니다. 무한합이 언제 의미를 가지는지 아는 것이 그 모든 논의의 전제입니다.
망원급수는 정확한 합을 구할 수 있는 드문 경우입니다. 등비급수와 함께 이 강의에서 값을 정확히 아는 두 종류입니다. 대부분의 급수는 수렴 여부만 알 수 있고 값은 모릅니다.
조화급수.n=1∑∞n1은 발산합니다.
(2)의 묶음 증명은 14세기에 오렘이 발견한 것입니다. 이 급수의 발산은 직관에 어긋납니다. 항이 0으로 가고 H106이 겨우 14.4인데도 결국 무한대로 갑니다. HN≈lnN이므로 100을 넘으려면 항이 1043개쯤 필요합니다. 유한한 계산으로는 발산을 확인할 수 없고 증명이 필요한 대표적인 예입니다.
검산에서 HN−lnN이 0.577 근처로 안정되는 것을 봅니다. 그 극한값이 오일러-마스케로니 상수이며 심화 6에서 다룹니다.
심화 1. 적분판정법의 부등식으로 n=1∑∞n21의 남은 항을 평가하고, N=1000까지 더했을 때 참값의 범위를 구하세요.
풀이.RN=n=N+1∑∞f(n)을 남은 항이라 합니다. 문제 4의 부등식을 N부터 적용하면
∫N+1∞f(x)dx≤RN≤∫N∞f(x)dx
입니다. 왼쪽은 직사각형을 곡선 아래에 넣은 것이고 오른쪽은 덮은 것입니다.
f(x)=x21이면 ∫a∞x2dx=a1이므로
N+11≤RN≤N1
입니다. 따라서 참값 S는
SN+N+11≤S≤SN+N1
에 있습니다. N=1000에서 S1000=1.6439345667이므로
1.6449335677≤S≤1.6449345667
입니다. 참값 6π2=1.6449340668이 정확히 그 안에 있습니다.
이 부등식의 실용적 가치가 큽니다. 급수의 값을 모르더라도 부분합에서 얼마나 떨어져 있는지 알 수 있고, 원하는 정밀도를 얻으려면 항을 몇 개 더해야 하는지 미리 계산할 수 있습니다. 오차를 10−6 이하로 하려면 N1<10−6, 즉 N>106이 필요합니다.
더 나아가 범위의 중점을 답으로 쓰면 정확도가 크게 좋아집니다. 위 예에서 중점은 1.6449340672로 참값과 4×10−10밖에 차이가 나지 않습니다. 부분합만 쓰면 오차가 10−3인데 이 보정으로 백만 배 가까이 개선됩니다.
심화 2. 조화급수의 발산을 문제 2의 묶음 방법과 적분판정 외에 다른 방법으로도 보이세요.
풀이. 두 가지를 제시합니다.
첫째, 모순을 이용합니다.HN→S로 수렴한다고 가정합니다. 그러면 짝수 번째 부분합도 같은 값에 수렴하므로 H2N−HN→0이어야 합니다. 그런데
H2N−HN=N+11+N+21+⋯+2N1
이고 각 항이 2N1 이상이며 항이 N개이므로
H2N−HN≥N⋅2N1=21
입니다. 0으로 갈 수 없으므로 모순이고 조화급수는 발산합니다.
둘째, 부등식 ln(1+x)≤x를 씁니다. 45강 심화 3에서 얻은 ex≥1+x의 로그 형태입니다. x=n1을 넣으면
ln(1+n1)≤n1
이고 왼쪽은 ln(n+1)−lnn이므로
HN≥n=1∑N(ln(n+1)−lnn)=ln(N+1)
입니다. 망원합입니다. ln(N+1)→∞이므로 HN도 발산합니다.
세 증명을 비교해 둡니다.
방법
도구
얻는 정보
묶음(오렘)
초등 부등식
발산 사실만
코시 조건
부분합의 차이
발산 사실만
ln 부등식
45강 심화 3
HN≥ln(N+1)이라는 속도
적분판정
53강
속도와 오차
뒤의 둘은 발산 여부뿐 아니라 얼마나 빨리 커지는지도 알려 줍니다. 심화 6에서 그 차이가 상수로 안정된다는 사실을 봅니다.
심화 3. 교대급수 판정을 증명하고 오차 한계가 왜 bN+1인지 설명하세요.
풀이.SN을 부분합이라 합니다. 짝수 번째와 홀수 번째를 따로 봅니다.
S2N+2−S2N=b2N+1−b2N+2≥0
이므로 짝수 부분합 {S2N}은 증가합니다. 또
S2N+1−S2N−1=−b2N+b2N+1≤0
이므로 홀수 부분합 {S2N+1}은 감소합니다.
그리고 S2N+1−S2N=b2N+1>0이므로 모든 짝수 부분합이 모든 홀수 부분합보다 작습니다. 따라서 증가하는 짝수 부분합은 위로 유계이고 감소하는 홀수 부분합은 아래로 유계입니다. 단조수렴정리로 둘 다 수렴하며, 차이가 b2N+1→0이므로 같은 값에 수렴합니다.
오차 한계는 이 구조에서 바로 나옵니다. 참값 S가 언제나 연속한 두 부분합 사이에 있으므로
∣S−SN∣≤∣SN+1−SN∣=bN+1
입니다. 다음 항의 크기가 곧 오차의 상한이며, 이보다 쓰기 쉬운 오차 평가는 드뭅니다.
그림으로는 이렇습니다. 부분합이 참값을 중심으로 좌우로 왔다 갔다 하며 진폭이 줄어듭니다. 매번 참값을 지나쳐 가므로 지나친 거리가 다음 걸음의 크기를 넘지 않습니다.
검산에서 교대조화급수의 부분합이 N=10에서 0.6456, N=1000에서 0.6926, N=105에서 0.69314218로 ln2=0.69314718에 다가갑니다. 오차가 대략 2N1 크기이며 판정이 주는 상한 N+11과 맞습니다.
심화 4. 조건수렴하는 급수는 항의 순서를 바꾸면 값이 달라짐을 보이세요. 교대조화급수를 재배열해 23ln2로 만들 수 있음을 확인하세요.
풀이. 유한합에서는 순서를 바꿔도 값이 같습니다(교환법칙). 무한합에서는 그렇지 않습니다.
교대조화급수 ∑n(−1)n+1=ln2를 봅니다. 항을 다음 순서로 재배열합니다. 양수 항 두 개 뒤에 음수 항 하나씩입니다.
1+31−21+51+71−41+91+111−61+⋯
항의 집합은 똑같고 순서만 바뀌었습니다. 그런데 합은 23ln2≈1.0397입니다.
유도의 개요는 이렇습니다. 원래 급수를 21배 하면
21ln2=21−41+61−81+⋯
이고, 여기에 0을 끼워 넣어 자리를 맞춥니다.
21ln2=0+21+0−41+0+61+⋯
원래 급수와 더하면 홀수 분모는 그대로 남고 짝수 분모끼리 결합해 위의 재배열 급수가 나옵니다. 따라서 그 합이 ln2+21ln2=23ln2입니다.
리만 재배열 정리. 조건수렴하는 급수는 항을 적절히 재배열해 임의의 실수로 수렴시킬 수 있고, ±∞로 발산시키거나 진동하게 만들 수도 있습니다.
왜 가능한지는 이렇습니다. 조건수렴이면 양수 항만의 합과 음수 항만의 합이 각각 발산합니다. 그러므로 목표값보다 작아질 때까지 양수 항을 쓰고, 넘으면 음수 항을 쓰고, 다시 양수 항으로 돌아가기를 반복하면 어떤 값에든 도달할 수 있습니다.
반대로 절대수렴하는 급수는 재배열해도 값이 변하지 않습니다. 그래서 절대수렴이 훨씬 강한 성질이며, 실무에서 급수를 자유롭게 조작하려면 절대수렴을 확인해야 합니다. 55강에서 멱급수를 항별로 미분하고 적분할 때 그 근거가 절대수렴입니다.
심화 5. 비판정과 근판정의 관계를 밝히고, 근판정이 더 강한 예를 제시하세요.
풀이. 두 판정 모두 등비급수와의 비교에서 나옵니다. 비가 L<1이면 어떤 r(L<r<1)에 대해 충분히 큰 n부터 an+1≤ran이므로 항이 등비적으로 줄어듭니다. 근판정도 ∣an∣≤rn을 주므로 같은 결론입니다.
관계는 다음과 같습니다.
비판정의 극한이 존재하면 근판정의 극한도 존재하고 두 값이 같습니다. 그러나 근판정의 극한이 존재해도 비판정의 극한은 없을 수 있습니다.
그러므로 근판정이 더 강합니다. 비판정이 통하는 곳에서는 근판정도 통하지만 반대는 아닙니다.
근판정만 통하는 예를 만듭니다.
an={2−n3−n(n이홀수)(n이짝수)
근판정에서는 ∣an∣1/n이 21과 31을 오가지만 **상극한이 21<1**이므로 수렴이 판정됩니다. 반면 비를 계산하면 홀수에서 짝수로 갈 때 2−n3−(n+1)이 되어 매우 작아지고, 짝수에서 홀수로 갈 때는 3−n2−(n+1)이 되어 커집니다. 비의 극한이 존재하지 않아 비판정을 쓸 수 없습니다.
실무에서는 그래도 비판정을 먼저 씁니다. 계승이 있을 때 n!(n+1)!=n+1처럼 약분이 잘 되어 계산이 훨씬 쉽기 때문입니다. 근판정은 항 전체가 n제곱 꼴일 때 쓰는 것이 자연스럽습니다.
검산에서 an=2nn2을 보면 n=20 근처의 비가 0.55125로 이론값과 정확히 맞습니다. 반면 n제곱근은 n=30에서 아직 0.627로 극한 0.5에서 멉니다. n2/n→1의 수렴이 느리기 때문이며, 근판정의 극한을 수치로 확인하기 어려운 이유입니다.
심화 6.HN−lnN이 수렴함을 보이고 그 극한값의 의미를 설명하세요.
풀이.cN=HN−lnN으로 둡니다. 두 가지를 보이면 됩니다.
감소함을 봅니다.
cN+1−cN=N+11−(ln(N+1)−lnN)=N+11−ln(1+N1)
인데, 심화 2에서 쓴 부등식 ln(1+x)≥1+xx(x>0)에 x=N1을 넣으면 ln(1+N1)≥N+11입니다. 따라서 cN+1−cN≤0이고 {cN}은 감소합니다.
아래로 유계임을 봅니다. 심화 2의 HN≥ln(N+1)>lnN에서 cN>0입니다.
감소하고 아래로 유계이므로 단조수렴정리에 의해 극한이 존재합니다. 그 값을
γ=N→∞lim(HN−lnN)≈0.5772156649
이라 하고 오일러-마스케로니 상수라 부릅니다.
검산에서 N=100에 0.5822, N=104에 0.57727, N=106에 0.577216으로 다가갑니다. 수렴이 느립니다. 실제로 cN−γ≈2N1이므로 자릿수 하나에 N을 열 배로 늘려야 합니다.
이 상수는 여러 곳에서 나타납니다. 51강의 감마함수, 소수의 분포, 알고리즘 분석에서 조화수가 등장할 때마다 함께 나옵니다. 96강 이후 퀵정렬의 평균 비교 횟수가 2nlnn 꼴로 나오는데 그 상수항에 γ가 들어갑니다.
놀라운 사실이 하나 있습니다. γ가 유리수인지 무리수인지 아직 아무도 모릅니다.π와 e는 무리수임이 증명되었고 초월수임까지 밝혀졌지만, γ는 이렇게 단순한 극한으로 정의되는데도 그 기본적인 성질이 미해결로 남아 있습니다.
이 강의에서는 numpy만 씁니다. 급수는 코드로 확인하기 좋습니다. 부분합은 유한합이므로 정의를 그대로 옮겨 적을 수 있습니다. 다만 53강과 같은 한계가 있습니다. 부분합이 안정되어 보여도 수렴을 증명하지 못하며, 조화급수처럼 아주 느리게 발산하는 경우는 유한한 계산으로 구별할 수 없습니다.
import numpy as np
# --- 문제 1: 등비급수 --------------------------------------------------
r = 0.5
for N in [5, 10, 50]:
k = np.arange(N)
print(N, "%.10f" % float(np.sum(r**k)), "%.10f" % (1/(1 - r)))
# 5 1.9375000000 2.0000000000
# 10 1.9980468750 2.0000000000
# 50 2.0000000000 2.0000000000
# --- 문제 2: 망원급수과 조화급수 ----------------------------------------
for N in [10, 1000]:
n = np.arange(1, N + 1)
print(N, "%.10f" % float(np.sum(1/(n*(n + 1)))), "%.10f" % (1 - 1/(N + 1)))
# 10 0.9090909091 0.9090909091
# 1000 0.9990009990 0.9990009990
print("조화급수 부분합:")
for N in [10, 1000, 1000000]:
n = np.arange(1, N + 1)
H = float(np.sum(1/n))
print(N, "%.6f" % H, "%.6f" % np.log(N), "%.6f" % (H - np.log(N)))
# 10 2.928968 2.302585 0.626383
# 1000 7.485471 6.907755 0.577716
# 1000000 14.392727 13.815511 0.577216
# --- 문제 4: p-급수 ----------------------------------------------------
for p in [2.0, 3.0]:
n = np.arange(1, 2000001)
print(p, "%.8f" % float(np.sum(n**(-p))))
print("%.8f %.8f" % (np.pi**2/6, 1.2020569031595943))
# 2.0 1.64493357
# 3.0 1.20205690
# 1.64493407 1.20205690
# --- 심화 1: 적분판정이 주는 오차 한계 ----------------------------------
N = 1000
n = np.arange(1, N + 1)
S = float(np.sum(1/n**2))
print("%.10f %.10f %.10f" % (S, S + 1/(N + 1), S + 1/N))
print("%.10f" % (np.pi**2/6))
# 1.6439345667 1.6449335677 1.6449345667
# 1.6449340668
# --- 심화 3: 교대급수 --------------------------------------------------
for N in [10, 1000, 100000]:
n = np.arange(1, N + 1)
print(N, "%.8f" % float(np.sum((-1.0)**(n + 1)/n)), "%.8f" % np.log(2))
# 10 0.64563492 0.69314718
# 1000 0.69264743 0.69314718
# 100000 0.69314218 0.69314718
# --- 심화 4: 재배열하면 값이 달라집니다 ---------------------------------
def rearranged(blocks):
"""양항 두 개 + 음항 한 개를 blocks 번 반복합니다."""
s = 0.0; odd = 1
for b in range(blocks):
s += 1.0/odd; odd += 2
s += 1.0/odd; odd += 2
s -= 1.0/(2*(b + 1))
return s
for b in [10, 1000, 100000]:
print(b, "%.8f" % rearranged(b), "%.8f" % (1.5*np.log(2)))
# 10 1.01518908 1.03972077
# 1000 1.03947082 1.03972077
# 100000 1.03971827 1.03972077
# --- 심화 5: 비판정과 근판정의 수렴 속도 --------------------------------
n = np.arange(1, 31)
a = n**2/2.0**n
print("%.8f %.8f" % (float(a[20]/a[19]), 0.5*(21/20)**2)) # 0.55125000 0.55125000
print("%.8f %.8f" % (float(a[29]**(1/30.0)), 0.5)) # 0.62725590 0.50000000
# --- 심화 6: 오일러-마스케로니 상수 -------------------------------------
for N in [100, 10000, 1000000]:
n = np.arange(1, N + 1)
print(N, "%.8f" % (float(np.sum(1/n)) - np.log(N)))
print("%.8f" % 0.5772156649015329)
# 100 0.58220733
# 10000 0.57726566
# 1000000 0.57721616
# 0.57721566
실행하면 주석과 같은 값이 나옵니다. 여섯 곳을 짚어 둡니다.
첫째, 등비급수가 N=50에서 이미 2.0000000000입니다. 2−50≈10−15이 배정밀도의 한계 아래이기 때문입니다. 등비급수는 수렴이 매우 빠릅니다. 항이 기하급수적으로 줄어드는 것과 조화급수가 로그로만 자라는 것의 대비가 첫 두 블록에 나란히 나타납니다.
둘째, 망원급수의 부분합이 이론값 1−N+11과 소수 열 자리까지 일치합니다. 상쇄가 정확히 일어나므로 오차가 쌓이지 않습니다.
셋째, 조화급수에서 H106이 겨우 14.39입니다. 백만 개를 더해도 15에 못 미칩니다. 이 값만 보면 수렴하는 것처럼 보이며, 발산을 유한한 계산으로 확인할 수 없다는 문제 2의 지적이 여기 있습니다. 반면 HN−lnN은 0.6264, 0.5777, 0.5772로 빠르게 안정되어 발산의 속도가 정확히 로그임을 보여 줍니다.
넷째, 심화 1의 오차 한계가 정확합니다. S1000+10011=1.6449335677과 S1000+10001=1.6449345667 사이에 참값 1.6449340668이 들어 있습니다. 부분합만으로는 소수 셋째 자리에서 틀리는데, 보정 항을 더하면 여섯째 자리까지 맞습니다.
다섯째, 심화 4의 재배열이 이 강의에서 가장 중요한 출력입니다. 같은 항들을 순서만 바꿔 더했는데 0.6931이 아니라 1.0397로 수렴합니다. 무한합에서 교환법칙이 성립하지 않는다는 사실이 숫자로 드러납니다.
여섯째, 심화 5에서 비는 n=20에서 이미 이론값과 소수 여덟 자리까지 맞는데 n제곱근은 n=30에서도 0.627로 극한 0.5에서 멉니다. n2/n이 1로 가는 속도가 느리기 때문입니다. 이론적으로 근판정이 더 강하지만 수치로 확인하기는 비판정이 훨씬 쉽습니다.
코드로 할 수 없는 일도 분명히 해 둡니다. 부분합이 안정되어 보이는 것은 수렴의 증거가 아닙니다. 조화급수가 그 반례이며, 판정은 언제나 정리로 해야 합니다.
다음 55강에서는 항에 변수를 넣습니다. ∑anxn처럼 x의 거듭제곱이 들어가면 x의 값에 따라 수렴하기도 하고 발산하기도 합니다. 수렴하는 x의 범위가 언제나 구간이 되고 그 반지름을 비판정으로 잴 수 있다는 것이 그 강의의 결론이며, 그 위에서 56강의 테일러 급수가 세워집니다.