Chapter 16

편미분방정식의 수치 해법

온도, 압력, 전위, 농도처럼 공간과 시간에 함께 퍼져 있는 양은 편미분방정식을 따릅니다. ODEBook 16장(편미분방정식 입문)은 열·파동·라플라스 방정식을 변수분리로 풀고, 마지막에 명시적 차분법 FTCS와 그 안정 조건 r≤1/2r \le 1/2, 파동의 CFL 조건을 맛보았습니다. 이 장은 거기서 출발합니다. 막대 대신 판을, 사인 급수 대신 큰 희소 연립방정식을, 명시적 방법 대신 음적 방법을 씁니다. 모든 방법을 같은 세 질문으로 다룹니다. 얼마나 정확한가(차수), 오차가 자라지 않는가(안정성), 얼마나 비싼가(비용). 그리고 이 세 질문을 묶는 랙스 동등성 정리, 이류 방정식에서 드러나는 수치 확산과 분산, 그리고 복잡한 모양을 다루는 유한 요소법과 보존 법칙을 지키는 유한 체적법까지 갑니다. 이 장은 책의 마지막 본문 장이라, 끝에서 책 전체를 돌아봅니다.

이 수식이 없었다면칩의 열 설계와 날개 주위의 공기 흐름

스마트폰 칩 안의 뜨거운 점이 어디에 생기는지, 엔진 블록이 시동 뒤 몇 분 만에 데워지는지, 날개 위를 지나는 공기의 압력 분포가 어떤지, 트랜지스터 안의 전자 농도가 어떻게 분포하는지는 모두 편미분방정식의 해입니다. 이런 문제의 영역은 직사각형이 아니고 물성도 균일하지 않아서, 변수분리나 급수로는 풀 수 없습니다. 공학자는 영역을 수만~수십억 개의 칸이나 요소로 자르고, 미분을 이웃 값의 차이로 바꾸어 거대한 연립방정식으로 만든 뒤 컴퓨터로 풉니다.

미분방정식을 격자로 바꾸는 생각의 수학적 토대 가운데 하나는 쿠랑, 프리드리히스, 레위(Courant, Friedrichs, Lewy)의 1928년 논문입니다. 1950년대에는 랙스(Peter Lax)의 동등성 정리와 폰 노이만(John von Neumann)의 안정성 분석이, 1960년대 이후에는 구조 공학에서 자란 유한 요소법이 자리 잡았습니다. 오늘날 상용 열·구조 해석 프로그램, 전산 유체 역학(CFD) 코드, 반도체 소자 시뮬레이터는 이 장의 방법을 수백만 배 큰 규모로 돌립니다.

∂u/∂t = α∇²u→격자 위의 차분→희소 연립방정식 Au = b, 안정한 시간 진행→열·유체·소자 시뮬레이션

격자와 유한 차분 근사

미분을 이웃 값의 차이로

길이 1 m인 막대에 열원 f(x)f(x)가 있고 양 끝이 0 °C일 때의 정상 온도는 −u′′=f-u'' = f, u(0)=u(1)=0u(0) = u(1) = 0을 따릅니다. 컴퓨터는 함수 u(x)u(x)를 저장할 수 없고 점 몇 개의 값만 저장할 수 있습니다. 점 N−1N - 1개의 값만으로 방정식을 어떻게 쓰고, 점을 두 배로 늘리면 답은 얼마나 좋아질까요?

구간을 간격 h=1/Nh = 1/N로 나눈 격자(grid, mesh) xi=ihx_i = ih 위에서 ui≈u(xi)u_i \approx u(x_i)를 미지수로 둡니다. 9장의 중앙 차분을 2계 도함수에 쓰면, 테일러 전개 u(x±h)=u±hu′+h22u′′±h36u′′′+h424u′′′′+⋯u(x \pm h) = u \pm hu' + \frac{h^2}{2}u'' \pm \frac{h^3}{6}u''' + \frac{h^4}{24}u'''' + \cdots를 더해 홀수 항이 지워지고

u(x+h)−2u(x)+u(x−h)h2=u′′(x)+h212u′′′′(ξ).\frac{u(x + h) - 2u(x) + u(x - h)}{h^2} = u''(x) + \frac{h^2}{12}u''''(\xi).
좌변을 δ2u/h2\delta^2 u/h^2로 적는다. 버린 항이 국소 절단 오차이고 h2h^2에 비례한다(2차 정확). 이 공식을 이웃 세 점의 무게 (1,−2,1)/h2(1, -2, 1)/h^2로 보는 것을 스텐실이라 한다.

이를 각 내부 점에 쓰면 −ui−1+2ui−ui+1=h2fi-u_{i-1} + 2u_i - u_{i+1} = h^2 f_i, i=1,…,N−1i = 1, \dots, N - 1이고, 경계값 u0=uN=0u_0 = u_N = 0을 넣으면 삼중대각 연립방정식 Tu=h2fT\mathbf u = h^2\mathbf f입니다. 행렬 T=tridiag⁡(−1,2,−1)T = \operatorname{tridiag}(-1, 2, -1)은 대칭 양정치이며, 12장의 토머스 알고리즘으로 O(N)O(N) 연산에 풀립니다.

정의 16.1 (일관성과 정확도 차수) 차분 방정식에 참 해 u(xi)u(x_i)를 넣었을 때 남는 값 τi\tau_i를 국소 절단 오차라 하고, h→0h \to 0일 때 τ→0\tau \to 0이면 그 방법이 미분방정식과 일관적(consistent)이라 한다. τ=O(hp)\tau = O(h^p)이면 pp차 정확하다.
정리 16.2 (1차원 푸아송 차분법의 수렴) u∈C4u \in C^4이면 위 차분 해의 오차는 max⁡i∣ui−u(xi)∣≤h296max⁡∣u′′′′∣\max_i|u_i - u(x_i)| \le \frac{h^2}{96}\max|u''''|이다.

증명의 핵심. 오차 ei=ui−u(xi)e_i = u_i - u(x_i)는 Te/h2=−τT\mathbf e/h^2 = -\boldsymbol\tau를 만족한다. 그러므로 ∥e∥∞≤∥(T/h2)−1∥∞∥τ∥∞\|\mathbf e\|_\infty \le \|(T/h^2)^{-1}\|_\infty\|\boldsymbol\tau\|_\infty. (T/h2)−1(T/h^2)^{-1}의 성분은 모두 양수이고 행 합은 −w′′=1-w'' = 1의 차분 해 xi(1−xi)/2x_i(1 - x_i)/2(이 이차식에서는 차분이 정확하다)이므로 최대 1/81/8이다. ∣τ∣≤h212max⁡∣u′′′′∣|\tau| \le \frac{h^2}{12}\max|u''''|와 곱하면 된다. 절단 오차가 작다는 것(일관성)과 역행렬이 hh에 무관하게 유계라는 것(안정성)이 합쳐져 수렴이 된다. 5절의 랙스 동등성 정리의 원형이다. ∎

예제 16.1 (격자 수렴 실험) −u′′=π2sin⁡πx-u'' = \pi^2\sin\pi x, 참 해 u=sin⁡πxu = \sin\pi x.
NuN/2 (참값 1)최대 오차오차 비 (이전/지금)
41.0530295.303×10⁻²—
81.0129511.295×10⁻²4.095
161.0032193.219×10⁻³4.023
321.0008048.036×10⁻⁴4.006
641.0002012.008×10⁻⁴4.001

격자를 두 배로 촘촘히 하면 오차가 4분의 1, 곧 log⁡24=2\log_2 4 = 2차다. 상한 h296π4\frac{h^2}{96}\pi^4은 N=4N = 4에서 6.3×10−26.3\times10^{-2}으로 실제 오차 5.3×10−25.3\times10^{-2}에 가깝다. 이 비율 실험은 PDE 코드를 검증하는 표준 절차다(제조된 해의 방법).

SIMULATOR

격자 수렴: 점을 두 배로, 오차는 4분의 1

차분 해(점)와 참 해(선)
최대 오차 vs h (로그–로그)
h = 1/N—
최대 오차—
오차 비 (N/2 대비)—
맞춘 기울기 (차수)—
해볼 것: ① N을 4 → 8 → 16으로 올리며 오차 비가 4에 다가가는지 보세요. ② 'eˣ' 문제에서도 기울기는 2입니다. 차수는 해의 매끄러움에만 달려 있습니다. ③ 덜 매끄러운 해(u‴가 x = 0.4에서 무한대)에서는 오차 비가 N마다 들쭉날쭉해집니다. 격자점이 x = 0.4에 얼마나 가까운지에 따라 오차가 달라지고, 정리 16.2의 가정 u ∈ C⁴가 깨져 깔끔한 h² 법칙이 사라집니다. 모델: 경계값은 참 해에서 가져오고, 삼중대각계는 토머스 알고리즘으로 풉니다. 오차는 격자점에서의 최대 오차, N = 4 … 512.

푸아송 방정식: 5점 스텐실과 희소 선형계

칩 위의 정상 온도 분포

정사각형 판의 네 변 온도가 정해져 있고 판 안에 발열 부품이 있습니다. 정상 상태 온도는 −∇2u=f-\nabla^2 u = f(푸아송 방정식, f=0f = 0이면 라플라스 방정식)를 따릅니다. ODEBook에서는 이웃 평균을 되풀이해 판의 온도를 구했습니다. 그 되풀이가 실제로는 어떤 연립방정식을 푸는 것이고, 격자를 키우면 얼마나 비싸지는지 정량적으로 봅시다.

xx와 yy 방향에 앞 절의 중앙 차분을 각각 쓰면, 간격 hh의 정사각 격자 점 (xi,yj)(x_i, y_j)에서

−ui+1,j+ui−1,j+ui,j+1+ui,j−1−4ui,jh2=fi,j.-\frac{u_{i+1,j} + u_{i-1,j} + u_{i,j+1} + u_{i,j-1} - 4u_{i,j}}{h^2} = f_{i,j}.
가운데 점과 동서남북 네 이웃, 다섯 점의 5점 스텐실. 절단 오차는 h212(uxxxx+uyyyy)\frac{h^2}{12}(u_{xxxx} + u_{yyyy}), 2차 정확하다. f=0f = 0이면 "각 점의 값은 네 이웃의 평균"이다.
4 −1−1−1−1 5점 스텐실 (× 1/h²) 행렬 A (내부 3×3 = 9개 미지수) 대각 4 바로 옆 −1 (같은 줄 이웃) 띠 거리 n의 −1 (위·아래 줄) 한 행에 0 아닌 값 ≤ 5개 띠 너비 n, 크기 n² × n²
그림 16-1. 5점 스텐실(왼쪽)과 그것이 만드는 행렬(오른쪽). 미지수를 한 줄씩 차례로 번호 매기면 행렬은 대각 근처의 세 줄과 거리 nn의 두 줄만 0이 아닌 블록 삼중대각 행렬이 된다.

한 변에 내부 점이 n=N−1n = N - 1개면 미지수는 n2n^2개, 행렬은 n2×n2n^2\times n^2입니다. n=100n = 100이면 미지수 9801개(N=100N = 100), 밀집 행렬로 저장하면 약 10810^8개의 칸이지만 0이 아닌 값은 5만 개 미만입니다. 그래서 행렬을 만들지 않고 스텐실만으로 계산하는 희소 방법이 중요합니다. 밀집 가우스 소거는 (n2)3/3≈3×1011(n^2)^3/3 \approx 3\times10^{11}번, 띠 촐레스키는 띠 너비 nn을 이용해 약 n2⋅n2/2=5×107n^2\cdot n^2/2 = 5\times10^7번입니다. 3차원이면 차이가 훨씬 커집니다.

정리 16.3 (이산 최대 원리) f=0f = 0인 5점 차분 해는 각 내부 점의 값이 네 이웃의 평균이므로, 최댓값과 최솟값을 경계에서만 가진다. 따라서 차분 해는 유일하고(같은 경계값의 두 해의 차는 0), 경계값의 범위를 벗어나지 않는다. ODEBook 정리 16.5의 평균값 성질을 격자로 옮긴 것이다.
예제 16.2 (윗변만 뜨거운 판) 단위 정사각형의 윗변 100 °C, 나머지 세 변 0 °C, f=0f = 0.
  1. 판을 90°씩 돌린 네 문제를 겹치면 경계가 모두 100 °C인 문제가 되고 그 해는 어디나 100이다. 정중앙은 네 문제에서 같은 값이므로 u(12,12)=25u(\frac12, \frac12) = 25. 이 논증은 차분 방정식에도 그대로 성립해서, 5점 차분 해의 중앙값도 어떤 NN(짝수)에서나 정확히 25다(계산 결과 N=4,8,16N = 4, 8, 16에서 25.00000000).
  2. 점 (0.5,0.75)(0.5, 0.75)의 참값(급수해)은 54.053. 차분 해는 N=4,8,16N = 4, 8, 16에서 52.679, 53.608, 53.933, 오차 1.37, 0.445, 0.120으로 비가 3.1, 3.7이다. 윗변 양 끝 모서리에서 경계값이 불연속(100과 0)이라 해가 매끄럽지 않아 처음에는 2차보다 느리게 준다.

큰 희소계를 푸는 방법은 13장의 주제였습니다. 이 문제에서 야코비 반복의 스펙트럼 반지름은 정확히 ρJ=cos⁡πh\rho_J = \cos\pi h, 가우스–자이델은 ρJ2\rho_J^2, 최적 SOR(ω=2/(1+sin⁡πh)\omega = 2/(1 + \sin\pi h))은 ω−1\omega - 1입니다. 오차를 10−610^{-6}배 줄이는 데 필요한 반복 수는 다음과 같습니다.

N (h = 1/N)미지수야코비가우스–자이델최적 SOR (ω)
108127613822 (1.528)
20361111655844 (1.730)
50240169953498110 (1.882)
10098012799213996220 (1.939)

야코비는 N2N^2에, SOR은 NN에 비례해 늘어납니다. 격자 간격이 작아지면 행렬의 조건수가 κ≈4/(πh)2\kappa \approx 4/(\pi h)^2로 커지기 때문입니다. 켤레 기울기법도 κ∝N\sqrt\kappa \propto N번이 들고, 격자 크기와 무관한 반복 수로 푸는 것이 13장의 다중 격자법입니다. 직사각형 영역의 상수 계수 문제라면 8장의 FFT로 사인 변환을 해서 O(n2log⁡n)O(n^2\log n)에 직접 풀 수도 있습니다.

SIMULATOR

판의 정상 온도: 경계를 바꾸고 열원을 찍기

판을 누르면 열원(다시 누르면 지움)
보기
중앙 온도 u(½, ½)—
미지수 · 0 아닌 행렬 값—
반복 수 (잔차 10⁻⁸) 야코비 · G-S—
최적 SOR—
해볼 것: ① 기본값(윗변만 100 °C)에서 중앙 온도가 정확히 25.00인지 보세요(예제 16.2). 네 변을 모두 100으로 하면 어디나 100입니다. ② 판 안을 눌러 열원을 몇 개 찍으면 온도가 경계값보다 높아질 수 있습니다. f ≠ 0이면 최대 원리가 성립하지 않기 때문입니다. ③ 'SOR 반복 과정'은 0에서 시작한 SOR이 경계의 정보를 안쪽으로 퍼뜨리는 모습을, '행렬 구조'는 같은 문제를 6×6 내부 격자로 줄였을 때의 36×36 행렬을 보여 줍니다. 모델: N = 32(미지수 31² = 961개), 열원은 한 점에 f = 3·10⁴(°C/m²). 반복 수는 같은 문제를 0에서 시작해 직접 센 값입니다.

열 방정식: 명시적 FTCS, 음적 BTCS, 크랭크–니콜슨

안정 조건이 계산을 묶는다

ODEBook에서 FTCS는 r=αΔt/Δx2≤1/2r = \alpha\Delta t/\Delta x^2 \le 1/2일 때만 안정했습니다. 막대를 Δx=1/1000\Delta x = 1/1000로 자르면 α=1\alpha = 1일 때 Δt≤5×10−7\Delta t \le 5\times10^{-7}, 시각 1까지 가는 데 200만 걸음이 필요합니다. 답의 정확도로는 Δt=10−3\Delta t = 10^{-3}이면 충분한데도 말입니다. 11장의 강성 ODE와 같은 상황입니다. 처방도 같습니다. 음적 방법.

공간을 먼저 차분화하면 열 방정식 ut=αuxxu_t = \alpha u_{xx}는 내부 점 nn개의 연립 ODE u′=−αΔx2Tu\mathbf u' = -\frac{\alpha}{\Delta x^2}T\mathbf u가 됩니다(선의 방법(method of lines)). TT의 고유값은 4sin⁡2kπΔx24\sin^2\frac{k\pi\Delta x}{2}(k=1,…,nk = 1, \dots, n)로, 가장 큰 것이 약 4라 이 ODE의 고유값은 00에 가까운 것부터 −4α/Δx2-4\alpha/\Delta x^2까지 퍼져 있습니다. 강성비가 Δx−2\Delta x^{-2}에 비례하는 전형적인 강성 계입니다. 이 ODE에 11장의 세 방법을 쓰면 세 가지 PDE 방법이 나옵니다.

정의 16.4 (FTCS, BTCS, 크랭크–니콜슨) r=αΔt/Δx2r = \alpha\Delta t/\Delta x^2, δ2ui=ui+1−2ui+ui−1\delta^2u_i = u_{i+1} - 2u_i + u_{i-1}라 하자.
FTCS (전진 오일러):uik+1=uik+r δ2uikBTCS (후진 오일러):uik+1−r δ2uik+1=uik크랭크–니콜슨 (사다리꼴):uik+1−r2 δ2uik+1=uik+r2 δ2uik\begin{aligned} \text{FTCS (전진 오일러):}\quad & u_i^{k+1} = u_i^k + r\,\delta^2u_i^k\\ \text{BTCS (후진 오일러):}\quad & u_i^{k+1} - r\,\delta^2u_i^{k+1} = u_i^k\\ \text{크랭크–니콜슨 (사다리꼴):}\quad & u_i^{k+1} - \tfrac r2\,\delta^2u_i^{k+1} = u_i^k + \tfrac r2\,\delta^2u_i^k \end{aligned}
행렬로 쓰면 BTCS는 (I+rT)uk+1=uk(I + rT)\mathbf u^{k+1} = \mathbf u^k, CN은 (I+r2T)uk+1=(I−r2T)uk(I + \frac r2T)\mathbf u^{k+1} = (I - \frac r2T)\mathbf u^k. 매 걸음 삼중대각 연립방정식을 하나 푼다. 국소 절단 오차는 FTCS·BTCS가 O(Δt+Δx2)O(\Delta t + \Delta x^2), CN이 O(Δt2+Δx2)O(\Delta t^2 + \Delta x^2)이다.

크랭크–니콜슨 방법은 1947년 크랭크와 니콜슨(John Crank, Phyllis Nicolson)이 발표했습니다. 음적 방법의 대가는 매 걸음의 선형계인데, 1차원에서는 토머스 알고리즘(12장)으로 O(n)O(n), 곧 FTCS 한 걸음과 같은 차수의 비용입니다. 다차원에서는 희소 선형계를 반복법이나 교대 방향 음적법(ADI: 방향마다 삼중대각계를 번갈아 푸는 방법)으로 풉니다.

function crank_nicolson_step(u, r)          // u: 내부 점 n개, 양끝 0
  for i = 1 .. n                             // 오른쪽: (I - r/2 T) u
    d[i] = u[i] + (r/2) * (u[i-1] - 2*u[i] + u[i+1])
  sub = -r/2;  diag = 1 + r;  sup = -r/2      // 왼쪽: (I + r/2 T)
  return thomas(sub, diag, sup, d)          // O(n): 12장
예제 16.3 (같은 정확도, 다른 비용) ut=uxxu_t = u_{xx}, u(x,0)=sin⁡πxu(x, 0) = \sin\pi x, 양끝 0, Δx=1/20\Delta x = 1/20. t=0.1t = 0.1에서 u(0.5)u(0.5)의 참값은 e−0.1π2=0.372708e^{-0.1\pi^2} = 0.372708. 공간 차분만의 오차(Δt→0\Delta t \to 0의 극한)는 7.6×10−47.6\times10^{-4}이다.
방법Δtr걸음 수u(0.5, 0.1)시간 오차 (반이산 해 대비)
FTCS0.0010.41000.371645−1.82×10⁻³
FTCS0.0025140약 3.8×10²폭발
BTCS0.014100.3908641.74×10⁻²
BTCS0.0052200.3823398.87×10⁻³
BTCS0.00251400.3779474.48×10⁻³
CN0.014100.373167−2.98×10⁻⁴
CN0.0052200.373390−7.44×10⁻⁵
CN0.00251400.373446−1.86×10⁻⁵
  1. BTCS의 시간 오차는 Δt\Delta t를 반으로 줄일 때마다 1.96, 1.98배로 준다: 1차. CN은 4.00, 4.00배: 2차.
  2. CN은 10걸음(r=4r = 4)만으로 시간 오차 3×10−43\times10^{-4}, 전체 오차 4.6×10−44.6\times10^{-4}로 공간 오차 수준에 닿는다. 안정한 FTCS는 100걸음을 걷고도 시간 오차가 1.8×10−31.8\times10^{-3}이다.
  3. FTCS r=1r = 1은 40걸음 만에 값이 약 380이 되었다(정확한 값은 반올림 오차의 크기라 계산 순서에 따라 달라진다). 처음 자료 sin⁡πx\sin\pi x에는 톱니 성분이 반올림 오차 정도로만 있지만, ∣G(π)∣=3|G(\pi)| = 3배씩 자라 340≈10193^{40} \approx 10^{19}배가 되면 10−1610^{-16}도 눈에 보인다.

CN에도 약점이 있습니다. 가운데 0.4~0.6만 1이고 나머지가 0인 사각 펄스에서 Δt=0.05\Delta t = 0.05(r=20r = 20)로 한 걸음 가면, t=0.05t = 0.05의 참값 중앙 온도 0.244 대신 CN은 −0.235-0.235라는 음의 온도를 내고 이웃 점과 부호가 번갈아 바뀝니다. BTCS는 0.281로 조금 퍼졌지만 매끄럽습니다. 다음 절의 증폭 인자가 이유를 보여 줍니다.

SIMULATOR

세 방법 나란히: FTCS · BTCS · 크랭크–니콜슨

처음 온도
참 해 (급수)FTCSBTCS크랭크–니콜슨
걸음 k · 시각 t—
최대 오차 FTCS—
BTCS—
CN—
해볼 것: ① r = 0.4에서 세 방법이 모두 참 해를 따라갑니다. r을 0.6으로 올리면 FTCS에만 톱니가 자랍니다(사각 펄스에서 빨리 보입니다). ② r = 4에서 sin πx를 돌리면 BTCS는 눈에 띄게 늦게 식고(1차), CN은 참 해에 거의 붙어 있습니다(2차). ③ 사각 펄스 + r = 20에서 '한 걸음'을 누르면 CN이 음의 온도와 지그재그를 냅니다. BTCS는 그렇지 않습니다. 모델: ut = uxx, [0, 1], Δx = 1/20, 양끝 0. 참 해는 400항 사인 급수. 화면 밖으로 나간 값은 잘립니다.

폰 노이만 안정성 분석

ODEBook 16장은 FTCS의 증폭 인자 G(θ)=1−4rsin⁡2θ2G(\theta) = 1 - 4r\sin^2\frac\theta2를 구해 r≤12r \le \frac12을 얻었습니다. 같은 계산을 모든 선형 상수 계수 차분법에 할 수 있습니다. 이것이 폰 노이만 안정성 분석(von Neumann stability analysis)입니다.

정의 16.5 (증폭 인자) 무한하거나 주기적인 격자에서 격자 푸리에 모드 ujk=Gkeijθu_j^k = G^k e^{\mathrm ij\theta}(−π≤θ≤π-\pi \le \theta \le \pi, θ=ξΔx\theta = \xi\Delta x)를 차분법에 넣으면 한 걸음의 곱 인자 G(θ)G(\theta)가 정해진다. 이를 증폭 인자(amplification factor)라 한다. 모든 θ\theta에서 ∣G(θ)∣≤1|G(\theta)| \le 1(또는 ≤1+CΔt\le 1 + C\Delta t)이면 폰 노이만 의미에서 안정하다.

δ2eijθ=(eiθ−2+e−iθ)eijθ=−4s2eijθ\delta^2 e^{\mathrm ij\theta} = (e^{\mathrm i\theta} - 2 + e^{-\mathrm i\theta})e^{\mathrm ij\theta} = -4s^2e^{\mathrm ij\theta}, s=sin⁡θ2s = \sin\frac\theta2를 쓰면 세 방법의 증폭 인자가 곧바로 나옵니다.

GFTCS=1−4rs2,GBTCS=11+4rs2,GCN=1−2rs21+2rs2,G참=e−rθ2.G_{\text{FTCS}} = 1 - 4rs^2,\qquad G_{\text{BTCS}} = \frac{1}{1 + 4rs^2},\qquad G_{\text{CN}} = \frac{1 - 2rs^2}{1 + 2rs^2},\qquad G_{\text{참}} = e^{-r\theta^2}.
참 해의 모드 eiξxe^{\mathrm i\xi x}는 한 걸음 Δt\Delta t에 e−αξ2Δt=e−rθ2e^{-\alpha\xi^2\Delta t} = e^{-r\theta^2}배가 된다. 낮은 모드(θ→0\theta \to 0)에서 세 인자 모두 이 값과 맞고, 차이는 높은 모드에서 난다.
정리 16.6 (열 방정식 차분법의 안정성) FTCS는 r≤12r \le \frac12일 때만 안정하다. BTCS와 크랭크–니콜슨은 모든 r>0r > 0에서 안정하다(무조건 안정). 또 r→∞r \to \infty일 때 가장 높은 모드에서 GBTCS(π)=1/(1+4r)→0G_{\text{BTCS}}(\pi) = 1/(1 + 4r) \to 0이지만 GCN(π)=(1−2r)/(1+2r)→−1G_{\text{CN}}(\pi) = (1 - 2r)/(1 + 2r) \to -1이다.

증명. 0≤s2≤10 \le s^2 \le 1. BTCS의 분모는 1 이상이라 0<G≤10 \lt G \le 1. CN은 ∣1−2rs2∣≤1+2rs2|1 - 2rs^2| \le 1 + 2rs^2이 늘 성립한다. FTCS는 ODEBook 정리 16.6. 극한은 s=1s = 1을 넣으면 된다. ∎

정리의 둘째 부분이 앞 절 CN의 지그재그를 설명합니다. r=20r = 20이면 GCN(π)=−39/41=−0.951G_{\text{CN}}(\pi) = -39/41 = -0.951. 톱니 모드는 사라지지 않고 걸음마다 부호만 바꾸며 거의 그대로 남습니다. 참 해에서는 이 모드가 e−20π2e^{-20\pi^2}배, 사실상 즉시 사라져야 합니다. 사각 펄스처럼 높은 모드를 많이 가진 자료에서 이것이 눈에 보입니다. BTCS처럼 ∣G∣→0|G| \to 0인 성질을 11장에서 L-안정이라 불렀습니다. 실무에서는 처음 몇 걸음을 BTCS로 걸어 높은 모드를 죽인 뒤 CN으로 바꾸는 요령(래너처 시작)을 씁니다.

폰 노이만 분석은 이류 방정식에도 그대로 쓰입니다(6절). 아래 시뮬레이터에서 두 방정식의 증폭 인자를 비교하세요.

SIMULATOR

증폭 인자 그래프: 모드마다 한 걸음에 몇 배인가

방정식
그래프
FTCS max|G|—
BTCS—
CN—
G(π) CN—
해볼 것: ① 열 방정식에서 r을 0.5 위로 올리면 FTCS 곡선(빨강)이 θ = π 근처에서 −1 아래로 내려갑니다. ② r = 20에서는 CN 곡선이 θ = π에서 −1에 붙고, BTCS는 0에 붙습니다. 참 인자 e−rθ²(검정)는 거의 즉시 0입니다. ③ 이류로 바꾸면 중앙 차분 FTCS의 |G|는 어떤 C에서도 1보다 크고, 풍상·랙스–벤드로프는 C ≤ 1에서만 1 이하입니다. '위상 비'는 수치 파의 속도 / 참 속도입니다. 모델: θ = ξΔx ∈ [0, π].

랙스 동등성 정리: 일관성 + 안정성 = 수렴

절단 오차가 작은데 왜 틀리나

FTCS를 r=0.6r = 0.6으로 돌리면, 매 걸음 미분방정식을 O(Δt+Δx2)O(\Delta t + \Delta x^2) 오차로 근사합니다. 격자를 아무리 줄여도(같은 rr) 국소 오차는 0으로 갑니다. 그런데 답은 폭발합니다. 반대로, 국소 오차가 작고 폭발하지 않으면 답이 맞는다고 믿어도 될까요?

수치 해가 참 해에 다가가는 것(수렴)은 우리가 원하는 성질이지만 직접 확인하기 어렵습니다. 참 해를 모르기 때문입니다. 반면 일관성은 테일러 전개로, 안정성은 폰 노이만 분석으로 확인할 수 있습니다. 다음 정리가 둘을 수렴에 잇습니다.

정리 16.7 (랙스 동등성 정리) 잘 놓인(해가 존재·유일하고 처음 자료에 연속적으로 의존하는) 선형 초기값 문제와 그것에 일관적인 선형 차분법에 대해, 그 차분법이 수렴할 필요충분조건은 안정한 것이다. 여기서 안정성은 고정된 시간 TT까지 kΔt≤Tk\Delta t \le T인 모든 kk에 대해 ∥Sk∥≤CT\|S^k\| \le C_T(한 걸음 연산자 SS의 거듭제곱이 격자에 무관하게 유계)라는 뜻이다. 1956년 랙스와 리히트마이어(Lax, Richtmyer)가 발표했다.

"안정 ⇒ 수렴"의 핵심. 오차 ek\mathbf e^k는 ek+1=Sek+Δt τk\mathbf e^{k+1} = S\mathbf e^k + \Delta t\,\boldsymbol\tau^k를 따르므로 ek=Δt∑m<kSk−1−mτm\mathbf e^k = \Delta t\sum_{m \lt k}S^{k-1-m}\boldsymbol\tau^m. 안정성으로 ∥ek∥≤CT Tmax⁡∥τm∥\|\mathbf e^k\| \le C_T\,T\max\|\boldsymbol\tau^m\|이고, 일관성으로 이것이 0으로 간다. 정리 16.2와 ODEBook의 오일러 오차 정리(전역 오차 = 국소 오차 × 증폭의 합)가 같은 구조다. ∎

이 정리에서 실용적인 결론 두 가지가 나옵니다. 첫째, 안정한 방법의 수렴 차수는 절단 오차의 차수와 같습니다. 예제 16.3의 BTCS 1차, CN 2차가 그 예입니다. 그래서 새 코드를 검증할 때는 (1) 절단 오차의 차수를 손으로 구하고, (2) 폰 노이만으로 안정성을 확인한 뒤, (3) 격자 수렴 실험으로 그 차수가 실제로 나오는지 봅니다. 둘째, 일관적이지만 불안정한 방법은 어떤 격자에서도 쓸모가 없습니다. 격자를 줄이면 국소 오차는 줄지만 증폭 횟수가 늘어 결국 반올림 오차까지 키웁니다.

방법일관성 (절단 오차)안정 조건결론
열 FTCSO(Δt + Δx²)r ≤ 1/2조건부 수렴, 1차(시간)
열 BTCSO(Δt + Δx²)무조건수렴, 1차(시간)
열 크랭크–니콜슨O(Δt² + Δx²)무조건수렴, 2차
이류 중앙 차분 FTCSO(Δt + Δx²)없음 (|G| > 1)수렴하지 않음
이류 풍상 차분O(Δt + Δx)0 ≤ C ≤ 1조건부 수렴, 1차
이류 랙스–벤드로프O(Δt² + Δx²)|C| ≤ 1조건부 수렴, 2차
파동 립프로그O(Δt² + Δx²)C ≤ 1조건부 수렴, 2차

이류 방정식: 풍상 차분, 수치 확산, 랙스–벤드로프, CFL

모양 그대로 실어 나르기

강물에 떨어진 염료, 바람에 실린 오염 물질, 파이프 속의 온도 펄스는 흐름을 따라 모양을 유지한 채 움직입니다. 가장 단순한 모형 ut+aux=0u_t + au_x = 0의 해는 u(x,t)=u0(x−at)u(x, t) = u_0(x - at), 처음 모양을 속도 aa로 옮긴 것입니다. 해를 손으로 쓸 수 있는 이 쉬운 방정식이 수치적으로는 놀라울 만큼 어렵습니다. 가장 자연스러운 중앙 차분이 무조건 불안정하기 때문입니다.

C=aΔt/ΔxC = a\Delta t/\Delta x를 쿠랑 수라 합니다. 시간 전진·공간 중앙 차분 ujk+1=ujk−C2(uj+1k−uj−1k)u_j^{k+1} = u_j^k - \frac C2(u_{j+1}^k - u_{j-1}^k)의 증폭 인자는 G=1−iCsin⁡θG = 1 - \mathrm iC\sin\theta이고 ∣G∣2=1+C2sin⁡2θ>1|G|^2 = 1 + C^2\sin^2\theta > 1입니다. 어떤 Δt\Delta t를 써도 불안정합니다. 열 방정식에는 확산이 높은 모드를 눌러 주지만, 이류에는 그런 힘이 없어 중앙 차분의 작은 증폭이 그대로 쌓입니다.

처방은 정보가 오는 쪽을 보는 것입니다. a>0a > 0이면 해는 왼쪽에서 옵니다.

정의 16.8 (풍상 차분과 랙스–벤드로프) a>0a > 0일 때
풍상:ujk+1=ujk−C (ujk−uj−1k),랙스–벤드로프:ujk+1=ujk−C2(uj+1k−uj−1k)+C22(uj+1k−2ujk+uj−1k).\text{풍상:}\quad u_j^{k+1} = u_j^k - C\,(u_j^k - u_{j-1}^k),\qquad \text{랙스–벤드로프:}\quad u_j^{k+1} = u_j^k - \frac C2(u_{j+1}^k - u_{j-1}^k) + \frac{C^2}{2}(u_{j+1}^k - 2u_j^k + u_{j-1}^k).
풍상(upwind) 차분은 1차 정확, ∣G∣2=1−2C(1−C)(1−cos⁡θ)|G|^2 = 1 - 2C(1 - C)(1 - \cos\theta). 랙스–벤드로프(Lax–Wendroff, 1960)는 테일러 전개 utt=a2uxxu_{tt} = a^2u_{xx}를 써서 2차 정확, ∣G∣2=1−4C2(1−C2)sin⁡4θ2|G|^2 = 1 - 4C^2(1 - C^2)\sin^4\frac\theta2. 둘 다 0≤C≤10 \le C \le 1에서 안정하다.

풍상 차분은 안정하지만 대가가 있습니다. 풍상 식에 참 해를 넣고 테일러 전개하면, 이 방법이 실제로 더 정확하게 푸는 방정식(수정 방정식(modified equation))은

ut+aux=a Δx2(1−C)⏟Dnum uxx+O(Δx2)u_t + au_x = \underbrace{\frac{a\,\Delta x}{2}(1 - C)}_{D_{\text{num}}}\,u_{xx} + O(\Delta x^2)
이류 방정식에 없던 확산항이 생겼다. 이것이 수치 확산(numerical diffusion)이다. Δx=0.01\Delta x = 0.01, C=0.8C = 0.8, a=1a = 1이면 Dnum=0.001D_{\text{num}} = 0.001. C=1C = 1이면 사라지고, 그때 풍상 차분은 ujk+1=uj−1ku_j^{k+1} = u_{j-1}^k, 정확히 한 칸 이동이다.

랙스–벤드로프는 이 확산항을 지웠지만 다음 항인 3계 도함수 항(분산)이 남아, 파장마다 속도가 달라집니다. 짧은 파장이 뒤처지며 급한 경사 뒤에 물결 같은 진동이 생깁니다. 실제로 계산해 보면 다음과 같습니다.

예제 16.4 (사각 펄스 실어 나르기) 주기 구간 [0, 1], 칸 100개, a=1a = 1, C=0.8C = 0.8(Δt=0.008\Delta t = 0.008), 처음 자료는 0.1<x<0.30.1 \lt x \lt 0.3에서 1. 60걸음(t=0.48t = 0.48) 뒤.
방법최댓값최솟값L¹ 오차총량 ∫u dx
참 해1000.200000
중앙 차분 FTCS2.7×10⁵−2.6×10⁵5.2×10⁴0.200000
풍상0.99900.00004.91×10⁻²0.200000
랙스–프리드리히스0.97160.00007.31×10⁻²0.200000
랙스–벤드로프1.1613−0.16133.90×10⁻²0.200000
  1. 중앙 차분은 60걸음 만에 10510^5배가 되었다. 모든 방법이 총량은 정확히 보존한다(7절의 유한 체적 구조). 보존이 정확성을 보장하지는 않는다.
  2. 풍상과 랙스–프리드리히스는 모서리를 둥글게 뭉갰지만 새 최댓값·최솟값을 만들지 않았다(단조). 랙스–벤드로프는 오차가 가장 작지만 0과 1 밖으로 16%씩 넘친다. 농도가 음수가 되는 것이다.
  3. 매끄러운 가우스 펄스(폭 0.05)에서는 칸을 두 배씩 늘릴 때 L¹ 오차의 차수가 풍상 0.70 → 0.81 → 0.88(1로 다가감), 랙스–벤드로프 1.65 → 1.92 → 1.99다. 같은 칸 100개에서 풍상은 봉우리를 0.750으로, 랙스–벤드로프는 0.968로 남긴다.

이 딜레마는 우연이 아닙니다. 고두노프(Sergei Godunov)는 새 극값을 만들지 않는(단조) 선형 방법은 많아야 1차 정확이라는 것을 보였습니다. 현대의 고해상도 방법(TVD, 플럭스 제한자, WENO)은 매끄러운 곳에서는 2차 이상, 급한 경사 근처에서는 1차로 바뀌는 비선형 방법으로 이 벽을 넘습니다.

정리 16.9 (CFL 조건) 명시적 차분법이 수렴하려면 수치적 의존 영역이 참 의존 영역을 포함해야 한다. 이웃 한 칸만 쓰는 방법에서 이것은 ∣C∣=∣a∣Δt/Δx≤1|C| = |a|\Delta t/\Delta x \le 1이다. 이 조건은 필요조건이며 충분조건이 아니다(중앙 차분 FTCS는 C≤1C \le 1이어도 불안정하다).

CFL 조건의 의미는 "한 걸음에 정보가 한 칸보다 멀리 가면 안 된다"입니다. 빠른 흐름(aa 큼)이나 가는 격자(Δx\Delta x 작음)는 시간 걸음을 직접 줄입니다. 3차원 CFD 코드가 비싼 이유의 상당 부분이 이것이고, 음적 방법이 여기서도 쓰입니다. 다만 이류에서는 큰 CC의 음적 방법이 정확도를 크게 잃으므로, 열 방정식만큼 쉽게 걸음을 키우지는 못합니다.

SIMULATOR

펄스 실어 나르기: 중앙 · 풍상 · 랙스–프리드리히스 · 랙스–벤드로프

방법
처음 모양
참 해중앙풍상랙스–프리드리히스랙스–벤드로프
걸음 · 시각 t (바퀴)—
최대 · 최소—
L¹ 오차—
총량 ∫u dx—
해볼 것: ① 풍상, C = 0.8로 한 바퀴를 돌리면 사각 펄스가 둥근 언덕이 됩니다(수치 확산). C = 1로 하면 모양이 그대로 돌아옵니다. ② 랙스–벤드로프는 모양을 더 잘 지키지만 모서리 뒤에 물결이 생기고 0 아래로 내려갑니다(분산). ③ C를 1.05로 올리면 풍상·랙스–벤드로프도 폭발합니다(CFL). 중앙 차분은 C = 0.3에서도 결국 폭발합니다. 모델: 주기 구간 [0, 1], 칸 100개, a = 1. 값은 화면 밖에서 잘립니다.

파동 방정식: 립프로그와 수치 분산

ODEBook 16장은 파동 방정식 utt=c2uxxu_{tt} = c^2u_{xx}의 중앙 차분 uik+1=2uik−uik−1+C2δ2uiku_i^{k+1} = 2u_i^k - u_i^{k-1} + C^2\delta^2u_i^k와 CFL 조건 C=cΔt/Δx≤1C = c\Delta t/\Delta x \le 1을 보였습니다. 시간과 공간 모두 중앙 차분이라 앞뒤 두 시각을 "뛰어넘는" 꼴이어서 흔히 립프로그(leapfrog) 방법이라 부릅니다. 여기서는 그 다음 질문, 안정한 범위 안에서도 무엇이 틀리는가를 봅니다.

시작에는 두 시각이 필요합니다. u0=fu^0 = f와 ut(x,0)=gu_t(x, 0) = g에서 테일러 전개로 ui1=ui0+Δt gi+C22δ2ui0u_i^1 = u_i^0 + \Delta t\,g_i + \frac{C^2}{2}\delta^2u_i^0을 만들면 2차 정확도가 유지됩니다. 모드 ujk=ei(ξjΔx−ωkΔt)u_j^k = e^{\mathrm i(\xi j\Delta x - \omega k\Delta t)}를 넣으면 수치 분산 관계

sin⁡ωΔt2=Csin⁡ξΔx2\sin\frac{\omega\Delta t}{2} = C\sin\frac{\xi\Delta x}{2}
참 관계는 ω=cξ\omega = c\xi(모든 파장이 같은 속도 cc). C≤1C \le 1이면 우변이 1 이하라 ω\omega가 실수, 곧 진폭이 유지된다(안정, 감쇠 없음). 수치 위상 속도는 ω/ξ\omega/\xi이다.

가 나옵니다. 수치 파의 속도 cnum/c=2Cθarcsin⁡(Csin⁡θ2)c_{\text{num}}/c = \frac{2}{C\theta}\arcsin\bigl(C\sin\frac\theta2\bigr), θ=ξΔx\theta = \xi\Delta x는 파장에 따라 달라집니다. 계산하면

cnum/c파장당 10칸 (θ = π/5)파장당 4칸 (θ = π/2)파장당 2.2칸 (θ = 0.9π)
C = 0.50.987590.920210.73071
C = 0.90.996770.975890.86060
C = 1111

짧은 파장일수록 늦고, CC가 작을수록 더 늦습니다. 급한 펄스는 여러 파장의 합이므로, 시간이 지나면 짧은 성분이 뒤처져 펄스 뒤에 잔물결 꼬리가 생깁니다. 이것이 수치 분산(numerical dispersion)입니다. 흥미롭게도 1차원에서는 C=1C = 1이 가장 정확하고(격자점에서 정확한 해), 안정 경계에서 가장 정확하다는 것은 다차원에서는 성립하지 않습니다. 지진파·음향 시뮬레이션은 "파장당 몇 칸"을 기준으로 격자를 고르고, 분산을 줄이려고 고차 스텐실을 씁니다.

SIMULATOR

줄 위의 펄스: CFL 수와 수치 분산

립프로그 해(색)와 참 해(검정)
수치 위상 속도 cnum/c vs θ = ξΔx
펄스 폭
걸음 · 시각 t—
최대 |u|—
최대 오차—
파장당 4칸 속도—
해볼 것: ① C = 0.5, 좁은 펄스로 ▶를 누르면 두 갈래로 나뉜 펄스 뒤에 잔물결이 따라옵니다. 짧은 파장이 늦기 때문입니다(아래 그래프). ② C = 1로 하면 꼬리가 사라지고 참 해와 겹칩니다. ③ C = 1.05로 올리면 몇십 걸음 뒤 톱니가 폭발합니다(CFL). 모델: utt = uxx, [0, 1], 칸 200개, 양끝 고정, 처음 속도 0. 참 해는 홀수 주기 확장의 달랑베르 공식.

유한 요소법 입문: 약형식, 모자 함수, 강성 행렬

구멍 뚫린 브래킷의 응력

차분법은 바둑판 격자를 좋아합니다. 그러나 엔진 브래킷, 치아 임플란트, 반도체 패키지는 곡선 경계와 구멍과 서로 다른 재료로 되어 있습니다. 경계에 맞춰 크기가 다른 삼각형으로 영역을 채우고 싶지만, 삼각형 격자에서는 "이웃 값의 차이"를 어떻게 써야 할지 분명하지 않습니다. 미분 대신 적분으로 방정식을 다시 쓰면 길이 열립니다.

−u′′=f-u'' = f, u(0)=u(1)=0u(0) = u(1) = 0에 경계에서 0인 아무 시험 함수 vv를 곱해 적분하고 부분 적분하면 경계항이 사라져

∫01u′v′ dx=∫01fv dx모든 v (v(0)=v(1)=0)에 대해.\int_0^1 u'v'\,dx = \int_0^1 fv\,dx\qquad\text{모든 } v \text{ (}v(0) = v(1) = 0\text{)에 대해}.
이를 약형식(weak form)이라 한다. uu는 2계 도함수 없이 1계 도함수만 있으면 된다. 구조역학에서는 가상 일의 원리, 에너지로 보면 12∫u′2−∫fu\frac12\int u'^2 - \int fu의 최소화와 같다.

유한 요소법(finite element method, FEM)은 uu와 vv를 유한 차원 공간에서 고릅니다. 가장 단순한 공간은 마디 xix_i에서 1, 다른 마디에서 0이고 그 사이는 직선인 모자 함수(hat function) φi\varphi_i들로 만든 조각별 선형 함수입니다. uh=∑jUjφju_h = \sum_j U_j\varphi_j를 넣고 v=φiv = \varphi_i로 두면(갤러킨 방법)

∑j(∫φi′φj′ dx)⏟KijUj=∫fφi dx⏟Fi,KU=F.\sum_j\underbrace{\Bigl(\int\varphi_i'\varphi_j'\,dx\Bigr)}_{K_{ij}}U_j = \underbrace{\int f\varphi_i\,dx}_{F_i},\qquad K\mathbf U = \mathbf F.
KK를 강성 행렬(stiffness matrix), F\mathbf F를 하중 벡터라 한다. 이름은 구조 해석의 스프링 강성에서 왔다. φi′\varphi_i'는 이웃 요소에서만 0이 아니므로 KK는 희소하다.
x₀x₁x₂x₃x₄ φ₁φ₂ 요소 e = [x₁, x₂] 요소 강성 행렬 (길이 h) Kₑ = (1/h)·[ 1 −1 ] [ −1 1 ] 요소마다 이웃 두 마디의 2×2 칸에 더한다 → 전체 K = (1/h)·tridiag(−1, 2, −1) f = 1이면 하중 Fᵢ = ∫φᵢ dx = h (차분법의 h²f/h와 같은 식)
그림 16-2. 1차원 모자 함수. 각 φi\varphi_i는 이웃 두 요소에서만 0이 아니다. 요소 하나에서 계산한 2×2 행렬을 두 마디 자리에 더하는 "조립"이 유한 요소 코드의 중심 루프다.
정리 16.10 (갤러킨 최적성) 유한 요소 해 uhu_h는 에너지 노름 ∥w∥E=(∫w′2)1/2\|w\|_E = (\int w'^2)^{1/2}에서 조각별 선형 함수 가운데 참 해에 가장 가깝다: ∥u−uh∥E=min⁡vh∥u−vh∥E\|u - u_h\|_E = \min_{v_h}\|u - v_h\|_E. 따라서 ∥u−uh∥E=O(h)\|u - u_h\|_E = O(h)이고, 최대 오차는 O(h2)O(h^2)이다. 또 1차원의 이 문제에서는 하중을 정확히 적분하면 마디 값 Ui=u(xi)U_i = u(x_i)가 정확하다.

증명의 핵심. 약형식에서 갤러킨 식을 빼면 ∫(u−uh)′φi′=0\int(u - u_h)'\varphi_i' = 0, 곧 오차가 근사 공간에 에너지 내적으로 수직이다(갤러킨 직교성). 7장의 최소제곱에서 잔차가 열공간에 수직인 것과 같은 그림이고, 수직 사영이 최단 거리다. 마디 정확성은 이 문제의 그린 함수가 조각별 선형이라 근사 공간에 들어 있기 때문이다. ∎

예제 16.5 (요소 넷) −u′′=1-u'' = 1, n=4n = 4 요소, h=1/4h = 1/4.
  1. 요소 강성 1h[1−1−11]=[4−4−44]\frac1h\begin{bmatrix}1&-1\\-1&1\end{bmatrix} = \begin{bmatrix}4&-4\\-4&4\end{bmatrix}을 네 요소에 대해 조립하고 경계 마디를 지우면 K=[8−40−48−40−48]K = \begin{bmatrix}8&-4&0\\-4&8&-4\\0&-4&8\end{bmatrix}, 하중 Fi=h=0.25F_i = h = 0.25.
  2. 풀면 U=(0.09375, 0.125, 0.09375)\mathbf U = (0.09375,\ 0.125,\ 0.09375). 참 해 u=x(1−x)/2u = x(1 - x)/2의 마디 값과 정확히 같다.
  3. 마디 사이에서는 직선이라 최대 오차는 7.81×10−37.81\times10^{-3}(요소 중앙). n=8,16,32n = 8, 16, 32에서 최대 오차는 4분의 1씩(2차), 에너지 노름 오차는 7.22×10−27.22\times10^{-2}에서 반씩(1차) 준다.

2차원에서는 삼각형 요소 위의 조각별 선형 함수를 쓰고, 요소 강성 행렬은 3×3이 됩니다. 정사각 격자의 직각삼각형으로 라플라스 방정식을 풀면 5점 스텐실과 같은 행렬이 나옵니다. 유한 요소법은 차분법을 포함하면서 임의의 모양과 재료, 고차 요소, 오차 추정에 따른 적응 세분화로 확장됩니다. 구조 해석의 상용 코드, 전자기장 해석, 열 해석 대부분이 이 방법입니다.

SIMULATOR

1차원 FEM: 모자 함수 조립하기

모자 함수 · FEM 해(색) · 참 해(검정)
강성 행렬 K (조립 중: 이번 요소의 칸 강조)
조립한 요소—
마디 최대 오차—
최대 오차 (마디 사이 포함)—
에너지 노름 오차—
해볼 것: ① '요소 하나 조립'을 눌러 요소마다 2×2 블록이 대각선을 따라 더해지는 것을 보세요. 경계 마디의 행·열은 마지막에 지웁니다. ② f = 1에서 마디 오차가 반올림 수준(10⁻¹⁶)인 것을 확인하세요(정리 16.10). 마디 사이 오차는 n을 두 배로 하면 4분의 1입니다. ③ 'f = 5 (패치)'처럼 하중이 불연속이어도 FEM은 하중을 적분해서 쓰므로 문제없이 풉니다. 모델: 조각별 선형 요소, 하중은 요소마다 가우스 구적 5점으로 적분, 선형계는 토머스 알고리즘.

유한 체적법 맛보기: 보존을 정확히

유체의 질량·운동량·에너지, 반도체의 전하는 보존됩니다. 칸의 양이 변하는 것은 칸의 경계를 드나드는 흐름(플럭스) 때문뿐입니다. 보존 법칙 ut+F(u)x=0u_t + F(u)_x = 0을 칸 [xj−1/2,xj+1/2][x_{j-1/2}, x_{j+1/2}]에서 적분하면 칸 평균 uˉj\bar u_j에 대해

duˉjdt=−Fj+1/2−Fj−1/2Δx\frac{d\bar u_j}{dt} = -\frac{F_{j+1/2} - F_{j-1/2}}{\Delta x}
Fj+1/2F_{j+1/2}는 칸 경계를 지나는 수치 플럭스. 한 칸이 잃는 양은 이웃 칸이 정확히 얻으므로, 모든 칸을 더하면 내부 플럭스가 소거되어 총량은 반올림 오차까지 정확히 보존된다.

이것이 유한 체적법(finite volume method)의 뼈대입니다. 무엇을 Fj+1/2F_{j+1/2}로 쓰느냐가 방법을 정합니다. 이류 F=auF = au에서 바람이 불어오는 쪽 칸의 값 Fj+1/2=auˉjF_{j+1/2} = a\bar u_j를 쓰면 정확히 앞 절의 풍상 차분이 되고, 예제 16.4의 표에서 모든 방법의 총량이 0.200000으로 보존된 것도 그 식들이 이런 플럭스 차이 꼴이기 때문입니다. 비선형 보존 법칙(충격파가 생기는 기체 역학)에서는 칸 경계마다 작은 리만 문제를 풀어 플럭스를 정하는 고두노프 계열 방법이 표준이고, 보존형으로 쓰지 않으면 충격파의 속도가 틀리게 나옵니다. 임의의 다각형 칸에서도 경계 면의 플럭스만 계산하면 되므로, 상용·공개 CFD 코드 대부분이 유한 체적법을 씁니다.

응용: 열 해석, 유체, 반도체 소자

이 도구가 쓰이는 곳

문제알맞은 방법주의할 점
정상 상태(푸아송, 라플라스)5점 차분 / FEM + 다중 격자·PCG·희소 직접법격자 수렴 확인, 모서리 특이점
확산(열, 농도)BTCS·CN(+ BTCS 시작), 선의 방법 + BDFFTCS는 r ≤ 1/2, CN의 높은 모드 진동
이류·보존 법칙유한 체적 + 풍상/고해상도(TVD, WENO)CFL, 수치 확산과 진동
파동(음향, 지진, 전자기)립프로그(엇갈린 격자), 고차 스텐실CFL, 파장당 칸 수와 분산
복잡한 모양·여러 재료유한 요소법요소 품질, 적응 세분화

맺으며: 오차를 예측하고, 통제하고, 비용과 바꾸기

이 책은 한 문장에서 출발했습니다. 컴퓨터는 유한한 수와 유한한 단계로 근사한다. 좋은 수치해석은 오차를 예측하고, 통제하고, 비용과 바꾸는 기술이다. 1장에서 그 "유한한 수"는 0.1 + 0.2가 0.3이 아니게 만드는 기계 엡실론 2−522^{-52}이었고, 이 장의 마지막에서 "유한한 단계"는 판을 자른 격자와 시간 걸음이었습니다. 무대가 숫자 하나에서 수백만 개의 미지수로 넓어졌을 뿐, 묻는 질문은 같았습니다.

우리는 그 질문을 몇 개의 공통 언어로 다루었습니다. 오차 차수 O(hp)O(h^p)는 보간(5–6장), 미분과 적분(9–10장), ODE와 PDE(11장, 이 장)에서 로그–로그 그래프의 기울기로 되풀이해 나타났습니다. 수렴 차수는 이분법의 1차, 뉴턴의 2차, 할선법의 1.618(3–4장)에서 시작해 반복 해법과 최적화의 수렴률 (κ−1)/(κ+1)(\kappa - 1)/(\kappa + 1)과 κ\sqrt\kappa 가속(13장, 15장)으로 이어졌습니다. 조건수는 2장에서 문제의 민감도로 등장해 연립방정식의 오차 한계(12장), 최소제곱의 QR(7장), 경사 하강의 지그재그(15장), 격자를 줄일수록 나빠지는 푸아송 행렬(이 장)까지 따라왔습니다. 그리고 안정성은 2장의 점화식과 근의 공식에서 11장의 안정성 영역, 이 장의 증폭 인자와 랙스 동등성 정리까지, "작은 오차가 자라지 않는가"라는 한 질문의 여러 얼굴이었습니다.

여기서 길은 여러 갈래로 이어집니다. 다차원 유한 요소법과 적응 격자, 비선형 보존 법칙과 충격파, 확률 미분방정식과 몬테카를로, 큰 규모의 병렬 계산과 혼합 정밀도, 그리고 데이터로 학습한 모델과 물리 방정식을 결합하는 계산이 모두 이 책의 질문을 다시 묻습니다. 새로운 알고리즘을 만나면 먼저 물어보세요. 오차는 얼마나 빨리 줄어드는가, 작은 오차가 자라지는 않는가, 그 정확도에 얼마를 내는가. 세 질문에 숫자로 답할 수 있으면, 그 계산을 믿어도 됩니다.

핵심 정리

  1. 중앙 차분 δ2u/h2=u′′+h212u′′′′\delta^2u/h^2 = u'' + \frac{h^2}{12}u''''은 2차 정확하다. 격자를 두 배로 하면 오차가 4분의 1이 되는지 보는 격자 수렴 실험이 PDE 코드 검증의 기본이다.
  2. 5점 스텐실은 n2×n2n^2\times n^2 블록 삼중대각 희소 행렬을 만든다. 이산 최대 원리가 성립하고, 조건수가 h−2h^{-2}에 비례해 야코비는 N2N^2, 최적 SOR은 NN에 비례하는 반복이 든다. 다중 격자는 격자와 무관한 반복 수를 낸다.
  3. 열 방정식의 선의 방법은 강성 ODE다. FTCS(전진 오일러)는 r≤1/2r \le 1/2, BTCS(후진 오일러)와 크랭크–니콜슨(사다리꼴)은 무조건 안정이고 1차원에서 한 걸음 O(n)O(n)(토머스). CN은 2차지만 큰 rr에서 높은 모드가 G→−1G \to -1로 진동한다.
  4. 폰 노이만 분석은 격자 푸리에 모드의 증폭 인자 G(θ)G(\theta)를 구해 ∣G∣≤1|G| \le 1을 확인한다. 열: G=1−4rs2G = 1 - 4rs^2, 1/(1+4rs2)1/(1 + 4rs^2), (1−2rs2)/(1+2rs2)(1 - 2rs^2)/(1 + 2rs^2).
  5. 랙스 동등성 정리: 잘 놓인 선형 문제에서 일관적인 차분법은 안정할 때 그리고 그때만 수렴한다. 안정한 방법의 수렴 차수는 절단 오차의 차수다.
  6. 이류의 중앙 차분은 ∣G∣2=1+C2sin⁡2θ|G|^2 = 1 + C^2\sin^2\theta로 무조건 불안정하다. 풍상은 수치 확산 aΔx2(1−C)uxx\frac{a\Delta x}{2}(1 - C)u_{xx}를 가진 1차, 랙스–벤드로프는 진동(분산)을 가진 2차이며 둘 다 C≤1C \le 1(CFL)에서 안정하다. 단조 선형 방법은 1차가 한계다(고두노프).
  7. 파동의 립프로그는 C≤1C \le 1에서 안정하고 감쇠가 없지만, 수치 분산 sin⁡ωΔt2=Csin⁡ξΔx2\sin\frac{\omega\Delta t}{2} = C\sin\frac{\xi\Delta x}{2} 때문에 짧은 파장이 늦다. 1차원에서는 C=1C = 1이 정확하다.
  8. 유한 요소법은 약형식 ∫u′v′=∫fv\int u'v' = \int fv를 모자 함수 공간에서 풀어 강성 행렬 KU=FK\mathbf U = \mathbf F를 조립한다. 갤러킨 해는 에너지 노름에서 최선 근사다. 유한 체적법은 칸 경계의 플럭스로 보존을 정확히 지킨다.

확인 퀴즈

Q1. 2차 정확한 차분법으로 N=20N = 20에서 최대 오차가 2×10−32\times10^{-3}이었다. N=80N = 80이면 대략?

hh가 1/4이 되면 오차는 (1/4)2=1/16(1/4)^2 = 1/16배, 2×10−3/16=1.25×10−42\times10^{-3}/16 = 1.25\times10^{-4}. 5×10−45\times10^{-4}은 1차 방법일 때의 답이다.

Q2. 2차원 정사각형 판을 한 변에 내부 점 100개로 나눈 5점 차분 행렬의 크기와 한 행의 0 아닌 값의 최대 개수는?

미지수는 1002=104100^2 = 10^4개. 각 식은 자기와 네 이웃만 쓰므로 한 행에 최대 5개. 밀집 저장이면 10810^8칸이지만 0 아닌 값은 5×10⁴개 미만이다.

Q3. Δx=0.01\Delta x = 0.01, α=1\alpha = 1인 열 방정식을 FTCS로 안정하게 풀 수 있는 가장 큰 Δt\Delta t는?

r=Δt/Δx2≤1/2r = \Delta t/\Delta x^2 \le 1/2에서 Δt≤10−4/2\Delta t \le 10^{-4}/2. BTCS나 CN이면 제한이 없고, Δt\Delta t는 정확도로만 고른다.

Q4. 크랭크–니콜슨으로 r=10r = 10일 때 가장 높은 격자 모드(θ=π\theta = \pi)의 증폭 인자는?

G=(1−2r)/(1+2r)=−19/21G = (1 - 2r)/(1 + 2r) = -19/21. 절댓값이 1보다 작아 안정하지만 거의 줄지 않고 부호만 바꿔 톱니 진동이 남는다. 1/411/41은 BTCS, −39-39는 FTCS의 1−4r1 - 4r이다.

Q5. 랙스 동등성 정리에 따르면, 일관적인 선형 차분법이 수렴하지 않는다면 그 원인은?

잘 놓인 선형 문제에서 일관성이 있으면 수렴 ⇔ 안정성이다. 차수가 낮은 것은 수렴이 느린 것이지 수렴하지 않는 것이 아니다.

Q6. ut+ux=0u_t + u_x = 0을 풍상 차분, Δx=0.02\Delta x = 0.02, C=0.5C = 0.5로 풀 때 수정 방정식의 수치 확산 계수는?

D=aΔx2(1−C)=1⋅0.022⋅0.5=0.005D = \frac{a\Delta x}{2}(1 - C) = \frac{1\cdot0.02}{2}\cdot0.5 = 0.005. C=1C = 1이면 0이 되어 풍상 차분이 정확한 한 칸 이동이 된다.

Q7. 파동 방정식의 립프로그 방법에서 C<1C \lt 1일 때 짧은 파장 성분에 일어나는 일은?

sin⁡(ωΔt/2)=Csin⁡(ξΔx/2)\sin(\omega\Delta t/2) = C\sin(\xi\Delta x/2)에서 C≤1C \le 1이면 ω\omega가 실수(감쇠 없음)이고, cnum/c<1c_{\text{num}}/c \lt 1이 짧은 파장일수록 작다. 예를 들어 C=0.5C = 0.5, 파장당 4칸이면 0.920이다.

Q8. −u′′=f-u'' = f를 조각별 선형 유한 요소(nn개 요소, 간격 hh)로 풀 때 강성 행렬은?

요소 강성 1h[1−1−11]\frac1h\begin{bmatrix}1&-1\\-1&1\end{bmatrix}을 조립하면 1htridiag⁡(−1,2,−1)\frac1h\operatorname{tridiag}(-1, 2, -1). 첫 보기는 ∫φiφj\int\varphi_i\varphi_j의 질량 행렬이다. 하중 f=1f = 1이면 Fi=hF_i = h라 차분법과 같은 식이 된다.