ODEBook 5장에서 오일러·호인·RK4, 내장 쌍의 걸음 조절, 안정성 영역, 음적 오일러, 심플렉틱 오일러를 만났습니다. 이 장은 그 도구들을 설계하고 검증하는 쪽에서 다시 봅니다. 왜 "일관성 + 안정성 = 수렴"인지, 부처 표 한 장으로 룽게–쿠타 방법을 정의하고 차수 조건을 확인하는 법, 지난 걸음의 기울기를 재활용하는 다단계 방법(애덤스·BDF), 다단계 방법의 안정성 영역과 달퀴스트 장벽, 강성 문제에서 매 걸음 뉴턴 반복을 돌리는 실제 구현, 수백만 걸음 동안 에너지를 지키는 스퇴르머–베를레, 그리고 끝 조건이 주어진 경계값 문제를 다룹니다. 이 장의 공통 언어는 차수 p, 안정성 영역, 그리고 f 계산 횟수입니다.
일단계·다단계 방법의 일관성, 영 안정성(근 조건), 수렴을 정의하고 "일관성 + 안정성 ⇔ 수렴"의 뜻을 예로 설명한다.
부처 표로 명시적 룽게–쿠타 방법을 정의하고, 4차까지의 차수 조건을 손으로 확인하며, 로그–로그 기울기로 검증한다.
임베디드 쌍의 오차 추정, 허용 오차의 척도(atol·rtol), 걸음 조절 공식과 안전 계수를 구현 수준에서 안다.
선형 다단계 방법의 안정성 영역을 그리고, A-안정·A(α)-안정과 달퀴스트 제2 장벽의 의미를 안다.
BDF와 뉴턴 반복으로 강성 문제(로버트슨 반응)를 풀고, 명시적 방법과 걸음 수를 비교한다.
스퇴르머–베를레가 위상 공간의 넓이를 보존하고 에너지 오차를 유계로 묶는 이유를 안다.
경계값 문제를 슈팅(할선법)과 유한 차분(뉴턴 + 삼중대각 풀이)으로 푼다.
이 수식이 없었다면회로 시뮬레이터와 화학 반응 모델
칩 설계자는 실리콘을 굽기 전에 수만 개의 트랜지스터가 얽힌 회로의 과도 응답을 시뮬레이션합니다. 연소 엔진이나 대기 화학 모델에는 나노초 단위로 끝나는 반응과 몇 시간에 걸친 반응이 한 방정식 안에 섞여 있습니다. 이런 방정식은 RK4로 돌리면 걸음 폭이 가장 빠른 시상수에 묶여 사실상 끝나지 않습니다. 해결책은 1950년대에 커티스(C. F. Curtiss)와 허시펠더(J. O. Hirschfelder)가 화학 반응 계산에서 제안한 후방 차분 공식(BDF)이었고, 기어(C. W. Gear)가 1970년대 초에 차수와 걸음을 함께 바꾸는 실용 프로그램으로 만들었습니다. 오늘날 SPICE 계열 회로 시뮬레이터, MATLAB의 ode15s, SciPy의 BDF가 모두 이 계보에 있습니다.
y′ = f(t, y), 강성→음적 공식 + 뉴턴 반복→BDF: Σ αⱼ yₙ₊ⱼ = h β f(yₙ₊ₖ)→회로·반응·격자 PDE
일관성 + 안정성 = 수렴
3차 정확한 공식이 왜 터지는가
두 걸음짜리 명시적 공식 yn+2+4yn+1−5yn=h(4fn+1+2fn)을 생각해 봅시다. 테일러 전개로 확인하면 국소 절단 오차가 O(h4), 즉 3차 정확합니다. 애덤스–배시포스 2단계(2차)보다 한 차수 높고 계산량은 같습니다. 그런데 y′=−y에 h=0.1로 돌리면 y(1)의 오차가 7, h=0.05로 줄이면 4.7×106입니다. 걸음을 줄일수록 더 틀립니다. 무엇이 빠졌을까요?
ODEBook 5장의 정리 5.3은 오일러 방법에 대해 "국소 오차 O(h2)가 쌓여 전역 오차 O(h)"라는 것을 보였습니다. 그 증명에서 몰래 쓴 성질이 하나 있습니다. 앞선 오차가 다음 걸음에서 많아야 1+hL배로 커진다는 것, 곧 오차가 걸음마다 폭발하지 않는다는 성질입니다. 수렴하려면 이것과 "한 걸음이 맞다"는 성질이 둘 다 필요합니다.
정의 11.1 (일관성·차수, 일단계 방법) 일단계 방법을 yn+1=yn+hΦ(tn,yn;h)로 쓰자(Φ를 증분 함수(increment function)라 한다). 참 해 y(t)를 대입했을 때 남는 양
τn+1=hy(tn+1)−y(tn)−Φ(tn,y(tn);h)
를 (단위 걸음당) 국소 절단 오차라 한다. h→0에서 τ→0이면 일관성(consistency)이 있다고 하고, τ=O(hp)이면 p차라 한다. 일관성은 Φ(t,y;0)=f(t,y)와 같다.
정리 11.2 (일단계 방법의 수렴)Φ가 y에 대해 립시츠 상수 LΦ를 가지고 방법이 p차로 일관적이면, 유한 구간 [t0,T]에서 전역 오차는
증명의 핵심.En+1=En+h(Φ(y(tn))−Φ(yn))+hτn+1이므로 ∣En+1∣≤(1+hLΦ)∣En∣+h∣τ∣. 오일러 때와 똑같이 등비급수로 더하면 된다. 룽게–쿠타 방법의 Φ는 f를 유한 번 합성한 것이라 f가 립시츠이면 Φ도 립시츠다. 따라서 일단계 방법은 일관적이기만 하면 언제나 수렴한다. ∎
다단계 방법은 사정이 다릅니다. k단계 선형 다단계 방법(linear multistep method)은
βk=0이면 명시적, βk=0이면 음적이다. 특성 다항식 ρ(ζ)=∑αjζj, σ(ζ)=∑βjζj로 방법을 요약한다.
꼴이고, 다음 값이 k개의 이전 값으로 정해지는 차분 방정식입니다. h=0으로 두면 ∑αjyn+j=0, 해는 ρ의 근 ζi에 대해 ζin 꼴입니다. 참 해에 해당하는 근은 ζ=1(일관성 조건 ρ(1)=0)이고 나머지는 계산이 만들어 낸 기생 해입니다. 반올림 오차나 출발값 오차가 이 기생 해를 조금이라도 깨우면, ∣ζi∣>1일 때 그것이 ∣ζi∣n으로 자랍니다. n=(T−t0)/h이므로 걸음을 줄일수록 더 많이 자랍니다.
정의 11.3 (근 조건과 영 안정성)ρ(ζ)의 모든 근이 ∣ζ∣≤1이고, ∣ζ∣=1인 근은 모두 단근이면 방법이 근 조건(root condition)을 만족한다고 하고, 이런 방법을 영 안정(zero-stable)이라 한다. 일단계 방법은 ρ(ζ)=ζ−1이라 언제나 영 안정이다.
정리 11.4 (달퀴스트 동등성 정리) 출발값 오차가 h→0에서 0으로 가는 선형 다단계 방법이 수렴할 필요충분조건은 일관성과 영 안정성이다. 또한 영 안정인 k단계 방법의 차수는 k가 홀수면 k+1, 짝수면 k+2를 넘지 못하고, 명시적이면 k를 넘지 못한다(달퀴스트 제1 장벽).
이 "일관성 + 안정성 ⇔ 수렴"은 수치해석 전체를 꿰는 원리입니다. 16장에서 편미분방정식의 격자 방법에 대해 같은 모양의 랙스 동등성 정리를 다시 만납니다(16장). 문제 상자의 공식은 ρ(ζ)=ζ2+4ζ−5=(ζ−1)(ζ+5)이라 기생 근 −5가 있습니다. 2단계 명시적 공식이 3차라는 것 자체가 제1 장벽(명시적이면 차수 ≤ 2)을 넘었으니, 영 안정일 수가 없었던 것입니다.
계수를 cAbT 꼴의 표로 적은 것을 부처 표(Butcher tableau)라 한다. 명시적 방법은 A가 순하삼각(대각 포함 위쪽이 0)이다. 보통 ci=∑jaij로 둔다(행 합 조건).
그림 11-1. 부처 표. i행은 ki를 잴 시각 tn+cih와, 그 점의 y를 만들 때 앞선 kj에 곱할 계수 aij를 적는다. 맨 아래 행은 마지막 가중 평균의 가중치다.
차수 조건은 방법의 한 걸음과 참 해의 테일러 전개를 h의 거듭제곱별로 맞춘 것입니다. 스칼라 자율 방정식만 보면 조건이 실제보다 적게 보이므로, 부처는 연립 방정식의 전개에 나타나는 항을 뿌리 있는 나무(rooted tree)로 분류했습니다. 차수 q의 나무 하나가 조건 하나이고, 나무의 개수는 q=1,2,3,4,5에서 1, 1, 2, 4, 9개입니다.
정리 11.6 (4차까지의 차수 조건)ci=∑jaij일 때 명시적 룽게–쿠타 방법이 p차일 필요충분조건은 아래 표에서 차수 ≤p인 조건이 모두 성립하는 것이다.
∑biaijcj2=31⋅21⋅41+61⋅41=121. ∑biaijajkck: 유일한 사슬 4→3→2가 61⋅1⋅21⋅21=241.
여덟 조건이 모두 성립하므로 4차다. 5차 조건(9개 중 하나 ∑bici4=51)은 32⋅161+61=245=51라 깨진다.
예제 11.3 (쿠타 3차 한 걸음) 쿠타의 3차 방법 k1=f(t,y), k2=f(t+2h,y+2hk1), k3=f(t+h,y−hk1+2hk2), yn+1=yn+6h(k1+4k2+k3)로 y′=y2, y(0)=1, h=0.1을 한 걸음 계산하라(참 해 1/(1−t)).
아래 시뮬레이터에서 부처 표의 칸을 직접 고쳐 보세요. 분수(1/6)로 입력할 수 있고, 차수 조건이 하나씩 켜지고 꺼집니다. 그와 동시에 y′=ycost를 여러 걸음 폭으로 풀어 로그–로그 기울기를 측정합니다. 조건으로 예측한 차수와 측정한 기울기가 일치하는지가 핵심입니다.
SIMULATOR
부처 표 → 방법 실행: 차수 조건과 측정 기울기
부처 표: 왼쪽 열 c, 가운데 A, 아래 b
조건으로 본 차수—
측정한 기울기—
오차 (h = 1/16)—
해볼 것: ① RK4에서 b₂를 1/3에서 0.3으로 바꾸면 ∑bᵢ = 1이 깨져 기울기가 0, 즉 수렴하지 않습니다. ② '버그' 프리셋은 c₂ = 0인데 a₂₁ = 1/2인 경우로, 비자율 방정식에서 차수가 1로 떨어집니다(행 합 조건 위반). ③ 3/8 규칙과 RK4는 다른 표인데 둘 다 기울기 4입니다. 모델: y′ = y cos t, y(0) = 1, t ∈ [0, 3], h = 2−1 … 2−9. 기울기는 오차가 10−12보다 큰 점으로 최소제곱 맞춤. 시각 cᵢ는 행 합에서 자동으로 계산하지 않고 왼쪽 열에 적힌 값을 그대로 씁니다(그래서 버그를 흉내 낼 수 있습니다).
임베디드 룽게–쿠타와 오차 제어
사용자는 h가 아니라 정확도를 말하고 싶다
반데르폴 진동자 y′′−μ(1−y2)y′+y=0은 μ=5에서 천천히 기어가다 순식간에 뒤집히는 이완 진동을 합니다. 뒤집히는 구간에 맞춘 고정 h는 나머지 구간에서 낭비이고, 기어가는 구간에 맞춘 h는 뒤집히는 곳에서 틀립니다. 라이브러리는 rtol=1e-6 하나만 받고 나머지를 알아서 합니다. 그 "알아서"의 내부를 구현 수준에서 봅시다.
ODEBook 5장 6절은 내장 쌍의 원리를 소개했습니다. 같은 단계 기울기에 두 벌의 가중치 b(p차)와 b^(p^차)를 주면 추가 비용 없이 두 근사의 차이 e=h∑(bi−b^i)ki가 낮은 쪽의 국소 오차 추정이 됩니다. 실제 구현에는 세 가지 결정이 더 들어갑니다.
어느 쪽으로 걸을까. 추정한 것은 낮은 차수 쪽 오차지만, 채택된 걸음은 높은 차수 쪽 값으로 진행합니다. 이것을 국소 외삽(local extrapolation)이라 합니다. 도르만드–프린스 5(4)는 5차로, 보가키–샴핀 3(2)는 3차로 걷습니다.
오차를 무엇과 비교할까. 성분마다 크기가 다르므로 척도 sci=atol+rtol⋅max(∣yi∣,∣yn+1,i∣)로 나눈 노름 err=maxi∣ei∣/sci(또는 RMS)를 쓰고, err≤1이면 채택합니다.
다음 h는. 국소 오차가 Chq+1(q=min(p,p^))에 비례하므로 hnew=h⋅min(fmax,max(fmin,0.9err−1/(q+1))). 0.9는 안전 계수, fmin=0.2, fmax=5는 한 번에 너무 크게 바뀌지 않게 하는 제한입니다.
function adaptive_rk(f, t0, y0, T, rtol, atol, tableau)
t ← t0; y ← y0; h ← 초기 추정 // 예: 0.01·|y0| / |f(t0, y0)|while t < T
h ← min(h, T − t)
k[1..s] ← 단계 기울기 (부처 표 A, c)
y_hi ← y + h·Σ bᵢ kᵢ // 높은 차수: 채택되면 이 값으로 진행
e ← h·Σ (bᵢ − b̂ᵢ) kᵢ // 오차 추정 (추가 f 계산 없음)
err ← max over i of |eᵢ| / (atol + rtol·max(|yᵢ|, |y_hiᵢ|))
if err ≤ 1 then t ← t + h; y ← y_hi // 채택end if// 아니면 버리고 같은 t에서 다시
h ← h · min(5, max(0.2, 0.9 · err^(−1/(q+1))))
end while
정의 11.7 (허용 오차 비례성) 국소 오차를 걸음마다 tol 이하로 맞추는 제어는 전역 오차를 직접 보장하지 않는다. 그러나 매끄러운 문제에서 전역 오차가 대략 tol에 비례하면(tol을 10배 줄이면 전역 오차도 약 10배 준다) 그 구현이 허용 오차 비례성(tolerance proportionality)을 가진다고 한다. 이때 걸음 수는 tol−1/(q+1)에 비례해 늘어나므로 차수가 높은 쌍일수록 엄격한 tol에서 유리하다.
예제 11.4 (보가키–샴핀 3(2) 한 걸음과 다음 h)y′=−2ty, y(0)=1, h=0.5. 표: c=(0,21,43,1), a21=21, a32=43, 3차 가중치 (92,31,94,0), 2차 가중치 (247,41,31,81). k4는 3차 결과에서 잰 기울기다.
추정 ∣y3−y2∣=5.86×10−3. 참값 e−0.25=0.778801이므로 실제 오차는 3차 2.4×10−3, 2차 8.3×10−3. 추정값은 2차 쪽 오차의 크기를 제대로 잡는다.
tol=10−3(절대)이면 err=5.86>1: 버린다. 다음 시도 h=0.9⋅0.5⋅(10−3/5.86×10−3)1/3=0.250. tol=10−2이면 채택하고 다음 h=0.538.
이 쌍의 k4는 다음 걸음의 k1과 같다(FSAL: first same as last). 그래서 실제 비용은 걸음당 3회다.
시뮬레이터는 세 쌍(호인–오일러 2(1), 보가키–샴핀 3(2), 도르만드–프린스 5(4))을 같은 문제에 돌립니다. 아래쪽 그래프는 tol을 10−3에서 10−8까지 바꾸며 얻은 전역 오차 대 f 계산 횟수, 이른바 작업–정밀도 그림입니다. 반데르폴(μ=5, t∈[0,20])에서 tol = 10−6이면 f 계산 횟수가 호인–오일러 36,944회, 보가키–샴핀 4,308회, 도르만드–프린스 1,960회이고(FSAL 절약은 세지 않음), 전역 오차는 각각 9.1×10−7, 2.9×10−6, 3.1×10−7입니다.
SIMULATOR
적응 간격 오차 제어: 세 임베디드 쌍의 걸음과 작업–정밀도
y₁(t)과 채택된 걸음 (× = 버린 시도)
걸음 폭 h(t), 로그 눈금
작업–정밀도: 전역 오차 vs f 계산 횟수
임베디드 쌍
HE 2(1)BS 3(2)DP 5(4)기준 해
채택 / 버림—
f 계산 횟수—
끝점 전역 오차—
최소 h · 최대 h—
해볼 것: ① 반데르폴에서 h(t)가 뒤집히는 순간마다 깊게 꺼지는 것을 보세요. ② 작업–정밀도 그림에서 tol이 작아질수록 DP 5(4)의 선이 가장 아래·왼쪽에 놓입니다. 느슨한 tol(10−3)에서는 BS 3(2)도 경쟁력이 있습니다. ③ '약한 강성'에서는 해가 매끄러운데도 h가 안정 경계(hλ ≈ −2.51(BS), −3.31(DP), −2(HE)) 근처에서 오르내리고 버린 걸음이 많습니다. 정확도가 아니라 안정성이 걸음을 정하는 강성의 신호입니다(5절). 모델: 척도 tol·(1 + |y|), 처음 h = 0.01, 기준 해는 DP 5(4), tol = 10−13.
다단계 방법: 애덤스–배시포스, 애덤스–몰턴, 예측–수정
이미 잰 기울기를 버리지 말자
RK4는 한 걸음에 기울기를 네 번 재고, 다음 걸음에서는 그것을 모두 버립니다. f 한 번 계산이 유체 시뮬레이션 한 판처럼 비싸다면 아깝습니다. 지난 몇 걸음의 기울기 fn,fn−1,…는 이미 손에 있습니다. 그것으로 다음 걸음을 4차로 걸을 수 있을까요?
y(tn+1)=y(tn)+∫tntn+1f(t,y(t))dt에서 피적분 함수를 이미 아는 점들을 지나는 보간 다항식(5장)으로 바꾸고 정확히 적분합니다. 보간점으로 tn,tn−1,…,tn−k+1을 쓰면 구간 밖으로 외삽하는 명시적 공식, tn+1까지 넣으면 음적 공식이 됩니다.
그림 11-2. 애덤스–배시포스 4단계. 과거 네 점의 기울기를 지나는 3차 다항식 p(t)를 다음 구간 [tn,tn+1]까지 연장해 적분한다(색칠한 넓이). 새로 계산할 것은 fn+1 하나뿐이다.
국소 오차의 주항은 Cp+1hp+1y(p+1)이고 오차 상수는 AB2 125, AM2 −121, AB4 720251, AM4 −72019이다. 같은 차수에서 음적 공식의 오차 상수가 훨씬 작다.
AB2의 계수는 fn−1,fn을 지나는 직선 p(t)=fn+(t−tn)(fn−fn−1)/h를 [tn,tn+h]에서 적분하면 hfn+2h(fn−fn−1)=2h(3fn−fn−1)으로 바로 나옵니다. 다단계 방법에는 실무상 두 가지 일이 따라붙습니다. 첫째, 출발: 처음 k−1개의 값은 RK4 같은 일단계 방법으로 만듭니다. 둘째, 걸음 폭 바꾸기: 계수가 등간격을 가정하므로 h를 바꾸려면 보간을 다시 하거나 계수를 다시 계산해야 합니다.
음적인 AM은 yn+1을 풀어야 합니다. 강성이 없는 문제에서는 뉴턴 반복까지 필요 없고, AB로 예측한 값을 AM의 우변에 넣어 한 번 수정하는 것으로 충분합니다.
// PECE: AB(k) 예측 → f 계산 → AM 수정 → f 계산for n = k−1, k, …
y_p ← yₙ + h·Σ βⱼᴬᴮ fₙ₋ⱼ // P: 예측 (외삽)
f_p ← f(tₙ₊₁, y_p) // E: 계산
yₙ₊₁ ← yₙ + h·(β₀ᴬᴹ f_p + Σ βⱼᴬᴹ fₙ₊₁₋ⱼ) // C: 수정
fₙ₊₁ ← f(tₙ₊₁, yₙ₊₁) // E: 다음 걸음용
est ← |yₙ₊₁ − y_p| · |C_AM| / |C_AB − C_AM| // 밀른의 오차 추정end for
마지막 줄이 다단계 방법의 공짜 오차 추정입니다. 예측자와 수정자의 국소 오차가 각각 CABhp+1y(p+1), CAMhp+1y(p+1)이면(같은 차수의 쌍을 쓸 때) 두 값의 차이에서 y(p+1)을 소거해 수정자의 오차를 추정할 수 있습니다. 이것을 밀른 장치(Milne's device)라 하며 임베디드 RK의 오차 추정과 같은 역할을 합니다.
사다리꼴 수정: y2=0.904837+0.05(−0.904837−0.819112)=0.818640. 오차 −9.1×10−5, 예측의 4분의 1 이하.
밀른 추정: ∣y2−yp∣⋅5/12+1/121/12=4.72×10−4/6=7.9×10−5. 실제 오차 9.1×10−5과 크기가 맞는다.
비용: f 계산 2회(예측점 1, 수정점 1). AB2 단독은 1회다.
y′=ycost, t∈[0,3] 최대 오차
h=0.1
h=0.05
h=0.025
관측 차수
f / 걸음
AB1 (오일러)
8.26×10⁻²
4.10×10⁻²
2.05×10⁻²
1.00
1
AB2
2.00×10⁻²
5.09×10⁻³
1.29×10⁻³
1.99
1
AB4
5.27×10⁻⁴
3.13×10⁻⁵
1.88×10⁻⁶
4.05
1
PECE AB2–AM2
3.44×10⁻³
9.43×10⁻⁴
2.47×10⁻⁴
1.93
2
PECE AB4–AM4
3.94×10⁻⁵
2.36×10⁻⁶
1.42×10⁻⁷
4.05
2
표의 출발값은 정확한 해로 주었습니다. 같은 4차라도 PECE 4는 AB4보다 13배 정확하고, f 계산은 두 배입니다. 오차 상수의 비 19251≈13이 그대로 드러납니다.
SIMULATOR
애덤스 예측–수정: 과거 기울기의 다항식을 한 걸음씩
y(t): 수치 해(점)와 참 해 e^(sin t)
f(t, y) = y cos t: 보간 다항식과 적분 넓이
방법
참 해 / 참 f쓰이는 과거 fₙ₋ⱼ예측 다항식 (AB)수정 다항식 (AM)예측점의 기울기
t—
예측 yp · 수정 y—
밀른 추정 · 실제 오차—
f 계산 누계—
n
tₙ
yₙ
참값
오차
해볼 것: ① '다음 단계'를 누르며 과거 점(보라)을 지나는 다항식이 다음 구간으로 연장되고 그 아래 넓이가 yₙ₊₁ − yₙ이 되는 것을 보세요. ② PECE에서는 예측점의 기울기(주황 원)를 포함한 두 번째 다항식(파란 점선)으로 다시 적분합니다. 밀른 추정과 실제 오차가 비슷한 크기로 움직입니다. ③ h = 0.4로 키우면 AB4의 외삽 다항식이 크게 빗나갑니다. 모델: 출발값 y₀ … yk−1은 참 해, t ∈ [0, 6].
안정성 영역과 A-안정
정확한 공식이 안정한 공식은 아니다
AB4는 AB2보다 두 차수 높지만, y′=−y처럼 단순한 감쇠 문제에서 h=0.5로 돌리면 AB2는 줄어드는데 AB4는 진동하며 커집니다. 차수가 높을수록 외삽이 공격적이라 안정 영역이 좁아집니다. 방법을 고를 때 차수만큼 중요한 것이 안정성 영역의 모양입니다.
시험 방정식 y′=λy에 선형 다단계 방법을 쓰면 ∑(αj−zβj)yn+j=0(z=hλ)입니다. 이 차분 방정식의 해는 안정성 다항식(stability polynomial)π(ζ;z)=ρ(ζ)−zσ(ζ)의 근 ζi(z)의 거듭제곱입니다. 룽게–쿠타의 ∣R(z)∣≤1에 해당하는 조건이 "모든 근이 단위원 안"입니다.
정의 11.9 (다단계 방법의 절대 안정 영역)π(ζ;z)의 모든 근이 ∣ζ∣≤1이고 ∣ζ∣=1인 근은 단근인 z∈C의 집합을 절대 안정 영역이라 한다. 영역의 경계는 ζ=eiθ를 대입한 경계 궤적z(θ)=ρ(eiθ)/σ(eiθ), 0≤θ<2π 위에 있다.
정의 11.10 (A-안정, A(α)-안정, L-안정) 절대 안정 영역이 왼쪽 반평면 전체를 포함하면 A-안정, 음의 실수축을 중심으로 반각 α인 쐐기 {∣arg(−z)∣<α}를 포함하면 A(α)-안정, A-안정이면서 ∣R(z)∣→0(z→−∞)이면 L-안정(L-stable)이라 한다. L-안정 방법은 아주 빠른 성분을 한 걸음 만에 지운다.
정리 11.11 (달퀴스트 제2 장벽) A-안정인 선형 다단계 방법은 음적이어야 하고 차수가 2 이하이다. 2차 A-안정 방법 중 오차 상수의 절댓값이 가장 작은 것은 사다리꼴 공식(C3=−121)이다.
사다리꼴 공식은 A-안정이지만 R(z)=1−z/21+z/2→−1(z→−∞)이라 L-안정은 아닙니다. 아주 빠른 성분이 지워지지 않고 부호만 바꾸며 남아 회로 시뮬레이터에서 "링잉"이라 불리는 가짜 진동을 만듭니다. BDF1(음적 오일러)과 BDF2는 L-안정입니다. 3차 이상의 BDF는 제2 장벽 때문에 A-안정일 수 없지만 큰 각도의 A(α)-안정을 가집니다.
방법
차수
음의 실수축 안정 구간
성격
AB2 · AB3 · AB4
2 · 3 · 4
(−1, 0) · (−0.545, 0) · (−0.300, 0)
명시적, 차수가 오를수록 좁아짐
RK4 · DP5
4 · 5
(−2.785, 0) · (−3.306, 0)
명시적, 단당 비용 고려 시 AB와 비슷
AM3 · AM4
3 · 4
(−6, 0) · (−3, 0)
음적이지만 유한 영역
사다리꼴 (AM2)
2
(−∞, 0)
A-안정, L-안정 아님
BDF1 · BDF2
1 · 2
(−∞, 0)
A-안정 + L-안정
BDF3 · 4 · 5 · 6
3 · 4 · 5 · 6
(−∞, 0)
A(α): α = 86.03°, 73.35°, 51.84°, 17.84°
표의 수치는 시뮬레이터와 같은 방법(격자 위에서 안정성 다항식의 근을 직접 계산하고, BDF의 α는 경계 궤적에서 최소 각을 찾음)으로 계산했습니다. BDF7 이상은 영 안정성마저 잃으므로 실용 BDF 코드는 차수 5 또는 6까지만 씁니다.
SIMULATOR
안정성 영역 지도: 복소 hλ 평면과 특성근
z = hλ 평면: 칠한 곳이 안정 (점을 끌기)
현재 z에서 안정성 다항식의 근 ζᵢ
보기 범위
z = hλ—
max |ζᵢ|—
판정—
실수축 안정 구간—
해볼 것: ① AB2 → AB3 → AB4로 바꾸며 영역이 원점 근처로 오그라드는 것을 보세요. ② BDF2의 칠하지 않은 부분은 오른쪽 반평면 안의 작은 섬뿐입니다(A-안정). BDF5에서 쐐기를 켜면 허수축 근처가 잘려 나간 것이 보입니다. ③ z를 영역 경계 밖으로 끌면 오른쪽 그림에서 근 하나가 단위원을 뚫고 나갑니다. 다단계 방법은 근이 여러 개라 "어느 근이 먼저 나가는가"가 안정성을 정합니다. 모델: RK4는 |R(z)| ≤ 1, 다단계는 π(ζ; z) = ρ(ζ) − zσ(ζ)의 근을 칸마다 계산.
강성과 BDF: 음적 방법의 뉴턴 반복
세 물질의 반응을 40초 동안
로버트슨의 화학 반응 모형은 강성 문제의 시험대로 널리 쓰입니다. A→B(속도 0.04), B+C→A+C(속도 104), 2B→B+C(속도 3×107). 농도 y1,y2,y3은
을 따르고 y(0)=(1,0,0)입니다. 중간 물질 y2는 t≈0.005에서 최댓값 3.6×10−5에 닿은 뒤 아주 천천히 줄어듭니다. 해가 이렇게 느린데 도르만드–프린스 5(4)(tol = 10−4)로 t=40까지 가는 데 34,557걸음(버린 걸음 1,550)이 걸립니다. 같은 tol의 BDF2는 154걸음입니다.
원인은 야코비안 J=∂f/∂y의 고유값입니다. t=40 부근에서 J의 고유값은 0(질량 보존 y1+y2+y3=1), −0.0214, −3393입니다. 해의 변화는 −0.02짜리 느린 모드가 정하지만, 명시적 방법의 걸음은 h∣λmax∣≲3.3(DP5의 실수축 안정 경계)에 묶여 h≈10−3을 넘지 못합니다. 40/10−3=4×104걸음, 관찰한 걸음 수와 맞습니다. 강성비 3393/0.0214≈1.6×105가 걸음 수의 비가 됩니다.
정의 11.12 (후방 차분 공식, BDF)k단계 BDF(backward differentiation formula)는 yn+1,yn,…,yn+1−k를 지나는 보간 다항식의 도함수를 tn+1에서 f(tn+1,yn+1)과 같게 놓은 음적 공식이다.
음적 공식은 매 걸음 비선형 방정식 G(yn+1)=yn+1−γhf(tn+1,yn+1)−ψn=0(ψn은 과거 값의 조합, BDF2에서 γ=32)을 풉니다. 강성 문제에서는 단순 고정점 반복 y←ψ+γhf(y)가 γh∥J∥<1일 때만 수렴하므로, 바로 그 걸음 제한을 다시 불러옵니다. 그래서 뉴턴 반복(3장, 4장)을 씁니다.
function bdf_step(f, J, t, ψ, γh, y_guess)
y ← y_guess // 과거 값의 외삽(예측자)
M ← I − γh·J(t, y) // 반복 행렬: 걸음마다 한 번만
LU ← factor(M) // 12장의 LU 분해, 여러 반복에서 재사용for it = 1, 2, …, maxit
G ← y − γh·f(t, y) − ψ
Δ ← solve(LU, −G) // 전진·후진 대입만: O(m²)
y ← y + Δ
if ‖Δ‖ ≤ 작은 수·‖y‖ then return y
end forreturn 실패 → h를 줄여 다시
위 구현은 반복 행렬을 걸음마다 한 번만 분해하는 단순화 뉴턴입니다. 수렴은 1차로 떨어지지만 m차원 계에서 분해 O(m3)를 반복마다 하지 않아도 되어 훨씬 싸고, 실제 코드는 야코비안을 여러 걸음 동안 재사용하기도 합니다. 큰 계에서 이 분해가 비용의 대부분이라 희소 LU(12장)나 반복 해법(13장)이 강성 ODE 풀이기의 심장이 됩니다.
예제 11.6 (강성 스칼라 문제의 BDF2 한 걸음)y′=−1000(y−cost), y(0)=1, h=0.1(hλ=−100). 출발값 y0=1, y1=y(0.1)=0.995103(정확한 값)에서 y2를 구하라.
BDF2: y2−34y1+31y0=32(0.1)(−1000)(y2−cos0.2). 우변이 y2에 대해 1차식이라 뉴턴 한 번에 정확히 풀린다.
γhλ의 크기 32⋅100=66.667을 써서 y2(1+66.667)=34(0.995103)−31+66.667(0.980067), y2=0.980265.
참값 y(0.2)=0.980264(과도 성분 e−1000t은 이미 사라졌고 해는 cost+sint/1000에 가깝다). 오차 4.0×10−7. 명시적 오일러라면 증폭률 ∣1−100∣=99로 즉시 폭발한다.
SIMULATOR
강성 로버트슨 반응: 명시적 DP 5(4) vs BDF2 + 뉴턴
농도 (로그 시간축): y₁, 10⁴·y₂, y₃
누적 걸음 수 vs t (로그–로그)
끝 시각 T
허용 오차
y₁10⁴·y₂y₃DP 5(4) 걸음 수BDF2 걸음 수
DP 5(4) 채택/버림—
BDF2 채택/버림 · 뉴턴 반복—
y(T) (BDF2)—
J의 가장 빠른 고유값 at T—
해볼 것: ① T를 0.3 → 40으로 늘리면 DP 5(4)의 걸음 수는 t에 비례해(기울기 1) 늘고, BDF2는 로그 시간축에서 거의 일정한 간격으로 걸어 수백 걸음에 그칩니다. ② T = 4·10⁴에서는 명시적 방법이 20만 걸음 한도에서 멈춥니다. ③ 아래 그래프의 DP 곡선이 기울기 1의 직선이라는 것은 h가 상수(안정 경계)에 묶였다는 뜻입니다. 모델: 가변 걸음 BDF2(걸음 비 ω에 맞춘 계수), 2차 외삽 예측자, 오차 추정 |y − yp|/3, 걸음마다 뉴턴 반복과 3×3 부분 피벗팅 소거. 척도 tol·(|yᵢ| + 10−6).
심플렉틱 적분: 스퇴르머–베를레와 장기 에너지
정확한 방법이 오래 돌리면 진다
진자 θ′′=−sinθ를 진폭 2 rad에서 놓고 h=0.2로 적분합니다. RK4의 에너지 오차는 t=100에서 3.2×10−4, t=1000에서 3.2×10−3, t=104에서 3.2×10−2으로 시간에 비례해 쌓입니다. 2차밖에 안 되는 스퇴르머–베를레는 처음부터 최대 1.1×10−2이지만, t=104에서도 여전히 1.1×10−2입니다. 긴 시간에서는 2차 방법이 4차 방법을 이깁니다.
ODEBook 5장 8절에서 심플렉틱 오일러가 용수철의 수정된 에너지를 정확히 지킨다는 것을 보았습니다. 실무에서 가장 많이 쓰는 심플렉틱 방법은 그것을 대칭으로 만든 2차 방법입니다.
정의 11.13 (스퇴르머–베를레 / 속도 베를레)q′′=a(q)(해밀토니언 H=21p2+V(q), a=−V′)에 대해
걸음당 힘 계산은 1회(a(qn+1)을 다음 걸음에 재사용)이고 2차이다. 위치만 쓰면 qn+1−2qn+qn−1=h2a(qn), 곧 2계 도함수의 중앙 차분이며 이 꼴을 립프로그(leapfrog)라고도 한다.
정리 11.14 (베를레의 기하학적 성질) 스퇴르머–베를레의 한 걸음 사상 Φh:(qn,pn)↦(qn+1,pn+1)은 (1) 심플렉틱(symplectic)이고(2차원에서는 야코비 행렬식이 1, 곧 위상 공간 넓이 보존), (2) 시간 가역적이다(Φ−h=Φh−1). 후방 오차 해석에 따르면 Φh는 H~=H+h2H2+h4H4+⋯라는 수정된 해밀토니언의 정확한 흐름에 지수적으로 작은 오차까지 가깝다. 따라서 에너지 오차 ∣H(qn,pn)−H0∣=O(h2)가 지수적으로 긴 시간 동안 유계로 머문다.
넓이 보존의 이유. 세 단계 각각이 "한 변수만 다른 변수의 함수만큼 민다"는 전단 사상이다. 예를 들어 (q,p)↦(q,p+2ha(q))의 야코비 행렬은 [12ha′(q)01]이고 행렬식이 1이다. 행렬식 1인 사상의 합성도 행렬식이 1이다. ∎
RK4가 에너지를 잃는 이유는 반대로 설명됩니다. RK4의 한 걸음은 넓이를 아주 조금 줄이는 사상이라(선형 진동자에서 걸음당 넓이 비가 1−h6/72+h8/576), 그 작은 수축이 매 걸음 같은 방향으로 쌓입니다. 베를레의 오차는 크지만 한 방향으로 쌓이지 않습니다. 그래서 분자 동역학(수십억 걸음), 행성계의 장기 안정성 연구, 입자 가속기의 궤도 추적, 게임 물리 엔진이 베를레나 그 고차 합성(요시다 4차 등)을 씁니다.
진자 θ₀ = 2, t ∈ [0, 1000]
h = 0.2
h = 0.1
h = 0.05
베를레: 최대 |ΔH|
1.08×10⁻²
2.71×10⁻³
6.76×10⁻⁴
RK4: t = 1000의 ΔH
−3.24×10⁻³
−1.02×10⁻⁴
−3.18×10⁻⁶
베를레의 오차는 h를 반으로 줄일 때마다 4분의 1(2차)이고, RK4는 32분의 1입니다. RK4의 표류는 t⋅h4에 비례하는데, 이 계수가 작아서 t=1000 정도에서는 RK4가 여전히 낫습니다. 승부는 적분 시간과 h로 정해지고, 시간이 충분히 길면 반드시 베를레가 이깁니다.
SIMULATOR
위상 공간의 넓이: 오일러 · RK4 · 스퇴르머–베를레
진자 위상 평면 (θ, p): 초기값 원판의 변형
|에너지 오차| vs t (로그–로그), 원판 중심 궤도
오일러RK4베를레에너지 등고선
t—
넓이 / 처음 넓이: 오일러—
RK4—
베를레—
해볼 것: ① ▶를 누르면 원판이 진자의 흐름을 따라 늘어나며 휘어집니다. 참 흐름은 넓이를 보존합니다(리우빌 정리). 오일러 원판은 부풀고, 베를레 원판의 넓이는 반올림 수준까지 1입니다. ② h = 0.3에서 RK4의 넓이 비가 1보다 조금씩 작아지는 것을 보세요. ③ 오른쪽 그래프에서 RK4 에너지 오차는 기울기 1로 자라고 베를레는 수평 띠에 머뭅니다. 모델: θ″ = −sin θ, 원판 중심 (θ, p) = (1.2, 0), 반지름 0.35, 경계점 160개의 다각형 넓이(신발끈 공식).
경계값 문제: 슈팅 방법과 유한 차분
끝 조건이 양쪽에 있다
연소 이론의 브라투 문제 y′′+λey=0, y(0)=y(1)=0은 열이 온도에 대해 지수적으로 발생하는 판의 정상 온도입니다. 지금까지의 방법은 모두 t0에서 y와 y′을 알고 앞으로 걷는 초기값 문제용입니다. 여기서는 y′(0)을 모르고 대신 y(1)을 압니다. 그리고 λ=1이면 해가 두 개, λ>3.5138이면 하나도 없습니다(ODEBook: 경계값 문제).
첫 번째 방법은 모르는 기울기 s=y′(0)을 맞힐 때까지 쏘아 보는 것입니다. 초기값 문제 y′′=−λey, y(0)=0, y′(0)=s를 RK4로 풀어 끝값 y(1;s)를 얻고, 빗나간 정도F(s)=y(1;s)−0의 근을 3장의 근 찾기로 구합니다.
정의 11.15 (슈팅 방법) 경계값 문제 y′′=g(x,y,y′), y(a)=α, y(b)=β에 대해 F(s)=y(b;s)−β로 두고 F(s)=0을 할선법 sk+1=sk−F(sk)F(sk)−F(sk−1)sk−sk−1이나 뉴턴 방법(F′(s)는 변분 방정식 w′′=gyw+gy′w′, w(a)=0, w′(a)=1의 w(b))으로 푸는 방법을 슈팅 방법(shooting method)이라 한다.
예제 11.7 (브라투 λ = 1의 슈팅) RK4(200걸음)로 F(0)=−0.46316, F(1)=0.36270이다.
정확한 해 y=−2lncosh(θ/4)cosh((x−21)θ/2)(θ=2λcosh(θ/4), θ=1.51716)의 y′(0)=0.549353과 일치한다. 최고 온도 y(0.5)=0.140539.
다른 근 θ=10.9387에 해당하는 두 번째 해는 y′(0)=10.8469, y(0.5)=4.0915이다. 할선법을 s=10,11에서 출발하면 그쪽으로 간다.
슈팅은 간단하지만 약점이 있습니다. 초기값 문제가 불안정하면(해가 eLx로 벌어지면) F(s)가 s에 극도로 민감해져 반올림 오차만으로도 맞출 수 없습니다. 구간을 여러 조각으로 나눠 조각마다 쏘고 이음매를 맞추는 다중 슈팅이 처방입니다. 두 번째 방법은 구간 전체를 한꺼번에 푸는 것입니다.
정의 11.16 (유한 차분 방법)xi=ih, h=1/N에서 y′′(xi)≈(yi−1−2yi+yi+1)/h2(9장의 중앙 차분, 오차 O(h2))로 바꾸면 미지수 y1,…,yN−1에 대한 비선형 연립방정식
Gi(y)=h2yi−1−2yi+yi+1+λeyi=0,y0=yN=0
을 얻는다. 야코비안 ∂Gi/∂yj는 대각 −2/h2+λeyi, 비대각 1/h2인 삼중대각 행렬이라 뉴턴 한 번이 토머스 알고리즘(12장)으로 O(N)에 끝난다.
브라투 λ = 1, 유한 차분
N = 4
N = 8
N = 16
N = 32
N = 64
최대 오차
9.08×10⁻⁴
2.23×10⁻⁴
5.57×10⁻⁵
1.39×10⁻⁵
3.47×10⁻⁶
뉴턴 반복 (y = 0에서 출발)
4
4
4
4
4
N을 두 배로 할 때마다 오차가 정확히 4분의 1, 2차 수렴입니다. 뉴턴 반복 수는 격자 크기와 무관합니다. 유한 차분은 불안정한 초기값 문제를 거치지 않으므로 슈팅이 실패하는 문제에서도 잘 동작하고, 같은 아이디어가 2차원 푸아송 방정식(16장)으로 그대로 확장됩니다.
SIMULATOR
브라투 경계값 문제: 슈팅(할선법) vs 유한 차분(뉴턴)
y(x): 시도한 궤적과 경계 조건 y(1) = 0
슈팅: 빗나감 F(s) = y(1; s) · 유한 차분: 뉴턴 잔차
방법
반복 k—
s 또는 y(½)—
|F| 또는 ‖Δy‖—
정확한 해와 최대 차이—
해볼 것: ① 슈팅에서 s 슬라이더를 움직여 끝점이 0을 지나는 s를 손으로 찾아보세요. 아래 그래프 F(s)가 0을 두 번 지납니다(해 두 개). ② '반복 한 번'은 할선법 한 걸음입니다. s = 10 근처에서 시작하면 두 번째 해로 갑니다. ③ λ를 3.6 이상으로 올리면 F(s)가 0에 닿지 않습니다. 해가 없습니다. ④ 유한 차분으로 바꾸면 y = 0에서 출발한 뉴턴 반복이 4~5번 만에 수렴하고, N을 두 배로 하면 오차가 약 4분의 1이 됩니다. 모델: 슈팅은 RK4 200걸음, 정확한 해는 θ = √(2λ) cosh(θ/4)의 작은 근으로 만든 공식.