섕크스 변환

오류 제보
수치해석 마지막 수정: 2026-10-21 04:46:30

○ 공개 검수 대기 AI 보조 작성 표시 기준 보기

1. 개요

섕크스 변환
Shanks Transformation
입력수열의 연속한 2k+1 항
가정오차 = 기하수열 k 개의 합
k = 1아이켄 델타제곱법
계산윈의 ε-알고리즘 (행렬식 대신 점화식)
급수에 쓰면파데 근사와 같은 값
제안슈미트 1941, 섕크스 1955

아이켄이 「기하수열 하나」로 극한을 찍었다면, 섕크스는 「기하수열 여러 개」로 찍는다. 그 덕에 발산하는 급수에서도 값을 뽑아낸다.

섕크스 변환(Shanks transformation)은 수열 SnS_n 의 오차가 kk 개 기하수열의 합 Sn≈S+∑i=1kciqi nS_n \approx S + \sum_{i=1}^{k} c_i q_i^{\,n} 이라고 가정하고, 연속한 2k+12k+1 개 항으로 미지수 S,ci,qiS, c_i, q_i 를 맞춰 극한 SS 를 추정하는 비선형 수열 가속 변환이다. 그 값을 ek(Sn)e_k(S_n) 으로 쓰고, k=1k = 1 이 정확히 아이켄 델타제곱법이다. 대니얼 섕크스가 1955년 논문에서 체계화했고1, 같은 변환이 R. J. 슈미트(1941)의 연립방정식 반복 풀이 논문에 먼저 나온다.

아이켄 문서가 정의와 ε-알고리즘 점화식, 파데 근사와의 관계를 한 절로 요약해 두었다. 이 문서는 그 요약 밑에 있는 것 — 행렬식 공식과 정확히 맞는 수열의 특성(핵 정리), 파데 근사와의 정확한 대응, 발산 급수에 대한 실측, 그리고 반복 아이켄과의 비교에서 섕크스가 지는 경우와 배정밀도에서 표가 무너지는 지점 — 을 다룬다.

2. 정의 — 행켈 행렬식의 비

ΔSn=Sn+1−Sn\Delta S_n = S_{n+1} - S_n 으로 쓰면

ek(Sn)=∣SnSn+1⋯Sn+kΔSnΔSn+1⋯ΔSn+k⋮⋮⋮ΔSn+k−1ΔSn+k⋯ΔSn+2k−1∣∣11⋯1ΔSnΔSn+1⋯ΔSn+k⋮⋮⋮ΔSn+k−1ΔSn+k⋯ΔSn+2k−1∣e_k(S_n) = \frac{ \begin{vmatrix} S_n & S_{n+1} & \cdots & S_{n+k} \\ \Delta S_n & \Delta S_{n+1} & \cdots & \Delta S_{n+k} \\ \vdots & \vdots & & \vdots \\ \Delta S_{n+k-1} & \Delta S_{n+k} & \cdots & \Delta S_{n+2k-1} \end{vmatrix} }{ \begin{vmatrix} 1 & 1 & \cdots & 1 \\ \Delta S_n & \Delta S_{n+1} & \cdots & \Delta S_{n+k} \\ \vdots & \vdots & & \vdots \\ \Delta S_{n+k-1} & \Delta S_{n+k} & \cdots & \Delta S_{n+2k-1} \end{vmatrix} }

이다. 분모 아래쪽 블록은 차분 수열로 만든 행켈 행렬이다. k=1k = 1 을 풀어 쓰면 (SnSn+2−Sn+12)/(Sn+2−2Sn+1+Sn)\bigl(S_n S_{n+2} - S_{n+1}^2\bigr)/\bigl(S_{n+2} - 2S_{n+1} + S_n\bigr), 곧 아이켄 공식이다.

이 정의는 선형 차분방정식으로 읽으면 더 자연스럽다. 상수 a0,…,aka_0, \dots, a_k 에 대해

∑i=0kai (Sn+i−S)=0\sum_{i=0}^{k} a_i\,(S_{n+i} - S) = 0

이 성립하는 SS 와 aia_i 를 2k+12k+1 개 항에서 찾는 것이다. aia_i 는 정규화(∑ai=1\sum a_i = 1)하면 kk 개 미지수라 ΔS\Delta S 로 만든 kk 개 식으로 정해지고, 그 뒤 SS 가 나온다. 행렬식 비는 이걸 크래머 공식으로 쓴 것뿐이다.

2.1. 윈의 ε-알고리즘

행렬식을 kk 마다 계산하면 O(k3)O(k^3) 이고 수치적으로도 나쁘다. 윈(1956)은 같은 값을 마름모 점화식

εj+1(n)=εj−1(n+1)+1εj(n+1)−εj(n),ε−1(n)=0, ε0(n)=Sn\varepsilon_{j+1}^{(n)} = \varepsilon_{j-1}^{(n+1)} + \frac{1}{\varepsilon_j^{(n+1)} - \varepsilon_j^{(n)}}, \qquad \varepsilon_{-1}^{(n)} = 0,\ \varepsilon_0^{(n)} = S_n

으로 뽑는 방법을 냈고, 짝수 열이 ε2k(n)=ek(Sn)\varepsilon_{2k}^{(n)} = e_k(S_n) 이다. 홀수 열은 차분 수열의 섕크스 값의 역수 1/ek(ΔSn)1/e_k(\Delta S_n) 이라 중간 계산용이다. 50자리 정밀도로 행렬식 정의와 ε 표를 비교하면 k=6k = 6 까지 차이가 10−4610^{-46} 이하 — 같은 것을 계산한다. 자세한 구현은 윈 엡실론 알고리즘으로 넘긴다.

3. 핵 정리 — 어떤 수열에서 정확한가

ek(Sn)=Se_k(S_n) = S 가 모든 nn 에서 성립하는 수열 전체를 그 변환의 핵(kernel)이라 한다. 위 차분방정식 표현에서 바로 답이 나온다 — Sn−SS_n - S 가 kk 차 상수계수 선형 점화식을 만족하고 그 특성다항식이 1을 근으로 갖지 않으면(∑ai≠0\sum a_i \ne 0) 정확하다. 점화식의 일반해는

Sn=S+∑iPi(n) qi n,∑i(deg⁡Pi+1)=kS_n = S + \sum_i P_i(n)\, q_i^{\,n}, \qquad \sum_i \bigl(\deg P_i + 1\bigr) = k

꼴이다. 즉 기하수열 kk 개뿐 아니라, 중근이 있으면 nqnn q^n 같은 다항식 곱 항까지 핵에 들어간다.

실측: Sn=2+3(0.5)n+(−0.8)n+n(0.3)nS_n = 2 + 3(0.5)^n + (-0.8)^n + n(0.3)^n 은 근 0.50.5, −0.8-0.8, 0.30.3(중근)으로 4차 점화식을 만족한다. 50자리로 ek(S0)e_k(S_0) 를 재면

kk12345
∣ek−2∣\lvert e_k - 2\rvert1.480.2142.5×10−32.5\times10^{-3}1.3×10−491.3\times10^{-49}7×10−507\times10^{-50}

로 k=4k = 4 에서 정확히 떨어진다. k=3k = 3 은 거의 맞히지만(근 하나를 못 잡은 오차) 정확하지는 않다.

이 정리가 선형 반복법과 연결되는 지점이 흥미롭다. xn+1=Gxn+c\mathbf{x}_{n+1} = G\mathbf{x}_n + \mathbf{c} 의 각 성분은 GG 의 고유값들의 거듭제곱 합이므로, 서로 다른 고유값이 kk 개면 eke_k 가 정확한 해를 준다. 벡터판 외삽(MPE, RRE)을 선형 반복에 쓰면 각각 아놀디형 방법·GCR/GMRES 와 수학적으로 동치라는 것이 시디(1988)의 결과다 — 외삽과 크리로프 부분공간법은 같은 동전의 양면이다.

4. 파데 근사와의 정확한 대응

거듭제곱 급수 f(x)=∑cjxjf(x) = \sum c_j x^j 의 부분합 Sn=∑j=0ncjxjS_n = \sum_{j=0}^{n} c_j x^j 에 섕크스 변환을 씌우면

ek(Sn)=[ n+k / k ]f(x)e_k(S_n) = [\,n+k\,/\,k\,]_f(x)

— 분자 차수 n+kn+k, 분모 차수 kk 인 파데 근사의 값과 같다. f=exf = e^x, x=1x = 1 로 확인하면 e1(S0)=3=[1/1]e_1(S_0) = 3 = [1/1], e2(S0)=2.714285714…=[2/2]e_2(S_0) = 2.714285714\ldots = [2/2], e1(S2)=2.722222…=[3/1]e_1(S_2) = 2.722222\ldots = [3/1], e2(S2)=2.718253968…=[4/2]e_2(S_2) = 2.718253968\ldots = [4/2] 로 15자리 전부 일치한다. ε 표의 짝수 열이 파데 표의 대각선을 따라 걷는 셈이고, 그래서 ε-알고리즘은 「파데 근사를 계수 대신 부분합에서 직접 계산하는 방법」이기도 하다.

이 대응이 섕크스 변환의 진짜 힘을 설명한다. 파데 근사는 급수의 수렴 반경 밖에서도, 심지어 수렴 반경이 0인 발산 급수에서도 의미 있는 값을 줄 수 있기 때문이다.

5. 실측

5.1. 교대 급수 ln 2 — 반복 아이켄에게 진다

ln⁡2=1−12+13−⋯\ln 2 = 1 - \tfrac12 + \tfrac13 - \cdots 의 부분합 13개(S1,…,S13S_1, \dots, S_{13})로 50자리 계산했다. 부분합 자체의 오차는 3.7×10−23.7\times10^{-2} 다.

kk123456
사용 항 수35791113
∣ek−ln⁡2∣\lvert e_k - \ln 2\rvert6.85×10−36.85\times10^{-3}1.86×10−41.86\times10^{-4}5.27×10−65.27\times10^{-6}1.52×10−71.52\times10^{-7}4.40×10−94.40\times10^{-9}1.28×10−101.28\times10^{-10}

kk 가 하나 늘 때마다 오차가 36.8, 35.3, 34.7, 34.5, 34.4 배씩 줄며 34 근처로 자리 잡는다. ln⁡(1+x)\ln(1+x) 의 대각 파데 근사가 x=1x = 1 에서 수렴하는 속도 (2−12+1)2=(1+2)−4≈1/33.97\bigl(\tfrac{\sqrt2-1}{\sqrt2+1}\bigr)^{2} = (1+\sqrt2)^{-4} \approx 1/33.97 과 맞아떨어진다.

그런데 같은 13개 항에 아이켄을 6번 거듭 씌우면 오차가 4.6×10−134.6\times10^{-13} 이다. 섕크스 e6e_6 보다 약 300배 좋다. 라이프니츠 급수에서도 9개 항으로 반복 아이켄 4단은 6.0×10−86.0\times10^{-8}(아이켄 델타제곱법 문서의 표), 섕크스 e4e_4 는 6.6×10−76.6\times10^{-7} 이었다. 교대 급수처럼 오차 구조가 「기하수열 몇 개」보다 「1/n1/n 의 거듭제곱 전개 × (−1)n(-1)^n」에 가까운 수열에서는, 매 단계 국소적으로 다시 맞추는 반복 아이켄이 더 유리할 수 있다. 섕크스가 아이켄의 상위 호환이라는 통념은 틀렸다 — 둘 다 같은 2k+12k+1 개 항을 쓰지만 가정하는 오차 모형이 다르다2.

5.2. 발산 급수 — 오일러의 급수

∑k≥0(−1)kk!\sum_{k\ge0} (-1)^k k! 은 부분합이 1,0,2,−4,20,−100,…1, 0, 2, -4, 20, -100, \dots 으로 날뛰는, 어느 기준으로 봐도 발산하는 급수다. 오일러는 이 급수에 ∫0∞e−t1+t dt=0.5963473623…\int_0^\infty \frac{e^{-t}}{1+t}\,dt = 0.5963473623\ldots (곰페르츠 상수)라는 값을 줬다3. 이 적분을 1/(1+t)1/(1+t) 의 급수로 전개해 항별로 적분하면 정확히 저 급수가 형식적으로 나온다. 부분합 21개에 섕크스를 씌우면:

kk1246810
∣ek(S0)−0.59634…∣\lvert e_k(S_0) - 0.59634\ldots\rvert7.0×10−27.0\times10^{-2}1.9×10−21.9\times10^{-2}2.5×10−32.5\times10^{-3}4.7×10−44.7\times10^{-4}1.1×10−41.1\times10^{-4}3.2×10−53.2\times10^{-5}

발산하는 수열에서 올바른 값으로 수렴한다. 이 급수는 스틸체스 급수라서 대각 파데 근사가 수렴한다는 이론적 보장이 있고, 섕크스는 그 파데를 부분합에서 직접 계산한 것이다. 수렴은 기하급수가 아니라 느리다 — 계수가 k!k! 로 자라는 급수라 이 정도가 한계다. 섭동 이론에서 나오는 점근 급수를 처리할 때 이 성질이 쓰인다.

6. 배정밀도의 한계와 특이 규칙

라이프니츠 급수 π=4∑(−1)k/(2k+1)\pi = 4\sum (-1)^k/(2k+1) 의 부분합 40개를 배정밀도로 ε 표에 넣으면:

kk2468101112
오차7.5×10−47.5\times10^{-4}6.6×10−76.6\times10^{-7}5.7×10−105.7\times10^{-10}5.0×10−135.0\times10^{-13}2.2×10−152.2\times10^{-15}1.3×10−151.3\times10^{-15}NaN

k=10k = 10 (21개 항)에서 기계 정밀도에 닿고, k=12k = 12 에서 표가 NaN 으로 무너진다. 이웃한 두 값이 비트 단위로 같아져 분모가 정확히 0이 되었기 때문이다. 0이 아니더라도 분모가 작은 수의 차이면 상대오차가 폭발한다 — 아이켄 델타제곱법의 분모 상쇄가 열마다 누적되는 것이다.

실무 구현은 셋 중 하나를 한다.

  • 열 깊이 제한: 인접한 짝수 열 값의 차가 허용오차 밑으로 내려가면 거기서 멈추고 그 값을 답으로 낸다. 위 표에서 k=10k = 10 근처에서 멈추면 된다.
  • 윈의 특이 규칙(Wynn, 1963): 분모가 0 근처일 때 마름모 하나 대신 더 넓은 「십자」 관계로 건너뛰어 계산을 이어 간다.
  • 정밀도 올리기: 표 깊이가 정말 필요하면 4배·임의 정밀도로 계산한다. 같은 40개 항을 50자리로 계산하면 k=12k = 12 에서 3.8×10−193.8\times10^{-19}, k=19k = 19 에서 7.2×10−307.2\times10^{-30} 까지 무리 없이 내려간다.

7. 쓰임

  • 급수·격자합 가속: 교대 급수, 푸리에 급수의 부분합, 물리의 격자합처럼 오차비가 일정하거나 몇 개 성분으로 갈리는 수열.
  • 발산·점근 급수 재합산: 섭동 전개, 고온·저온 전개처럼 계수가 계승으로 자라는 급수에서 파데/섕크스 재합산은 표준 도구다. 보렐 재합산과 함께 쓰인다.
  • 반복법 후처리와 벡터 외삽: 스칼라 섕크스를 벡터로 일반화한 벡터·위상 ε-알고리즘, MPE, RRE 는 비선형 반복의 가속에 쓰이고, 실무에서 가장 많이 쓰이는 친척이 앤더슨 가속이다.
  • 고유값 추정: 거듭제곱법의 레일리 몫 수열처럼 고유값 비율의 거듭제곱 몇 개로 오차가 이뤄진 수열은 핵 정리에 가깝게 맞는다.

8. 관련 문서

9. Footnotes

  1. 섕크스는 π\pi 를 10만 자리까지 처음 계산한 사람(렌치와 함께, 1961년 계산)으로 더 유명하다. 수렴 가속 논문을 쓴 사람이 결국 가장 무식하게 많이 계산한 기록으로 이름을 남겼다는 건 아이러니라면 아이러니. ↩

  2. 「kk 를 키우면 무조건 좋아진다」도 비슷한 착각이다. 위 표에서 보듯 깊이 들어갈수록 반올림이 먼저 이긴다. 가속기는 수열의 오차 구조에 대한 가설이고, 가설이 틀리면 가속기는 그냥 비싼 평균기다. ↩

  3. 오일러가 이 급수에 값을 매긴 건 18세기다. 당시 수학자들 상당수는 「발산 급수의 합」이라는 말 자체를 신성모독으로 여겼는데, 2세기 뒤 섕크스·파데·보렐이 오일러 편을 들어 주었다. ↩

검증 자료

이 문서의 주요 출처

  1. D. Shanks (1955), Non-linear transformations of divergent and slowly convergent sequences, J. Math. Phys. 34, 1-42
  2. P. Wynn (1956), On a device for computing the e_m(S_n) transformation, MTAC 10, 91-96
  3. A. Sidi (1988), Extrapolation vs. projection methods for linear systems of equations, J. Comput. Appl. Math. 22, 71-88
  4. C. Brezinski, M. Redivo-Zaglia, Extrapolation Methods: Theory and Practice, North-Holland 1991
이 문서가 문제를 푸는 데 도움이 됐나요? 한 번의 클릭이 다음 검수 순서를 정합니다.

의견을 반영할게요. 감사합니다.

다음으로 읽기 리처드슨 외삽법 약 5분 더 탐색 →