경계값 문제를 사격법처럼 쏘아 맞히지 않고, 막대를 같은 간격의 점으로 나눠 각 점의 값을 미지수로 둔다. 미분을 이웃 점 값의 차이로 바꾸면 각 점에서 일차방정식 하나가 생기고, 양 끝 값은 알므로 오른쪽으로 옮긴다. 결과는 대각선 근처 세 줄에만 수가 있는 연립 일차방정식이라 아주 빠르게 풀린다. 간격을 반으로 줄이면 오차가 약 4분의 1로 준다. 다만 방정식이 비선형이면 연립 비선형 방정식이 되어 반복이 필요하다.
예시로 보기
사격법과 같은 막대 문제(\(h' = 0.01\), \(T_a = 20\), \(T(0) = 40\), \(T(10) = 200\))를 간격 \(\Delta x = 2\)로 나눈다. 안쪽 점은 \(x = 2, 4, 6, 8\)의 넷이다.
\(h'\Delta x^2 = 0.04\)라 대각선은 \(2.04\), 우변은 \(0.04 \times 20 = 0.8\)에 양 끝 점에서는 경계 온도를 더한다.
\[\begin{pmatrix}2.04 & -1 & 0 & 0\\ -1 & 2.04 & -1 & 0\\ 0 & -1 & 2.04 & -1\\ 0 & 0 & -1 & 2.04\end{pmatrix}\begin{pmatrix}T_1\\ T_2\\ T_3\\ T_4\end{pmatrix} = \begin{pmatrix}40.8\\ 0.8\\ 0.8\\ 200.8\end{pmatrix}\]| \(x\) | 2 | 4 | 6 | 8 |
|---|---|---|---|---|
| 유한 차분 (\(\Delta x = 2\)) | 65.9698 | 93.7785 | 124.5382 | 159.4795 |
| 참값 | 65.9518 | 93.7478 | 124.5035 | 159.4534 |
가장 큰 오차는 0.035다. \(\Delta x = 1\)로 줄이면 0.0087로 약 4분의 1이 된다1.
왼쪽은 \(\Delta x = 2\)의 점들이 참값 곡선 위에 거의 그대로 놓이는 모습이다. 오른쪽은 간격을 반씩 줄일 때 가장 큰 오차가 0.035, 0.0087, 0.0022, 0.00055로 매번 약 4분의 1이 되는 것을 보인다2.
정의
원래 방정식의 도함수를 유한 차분으로 바꿔, 선형 미분방정식을 연립 대수 방정식으로 만든다. 2계 도함수에는 중심 차분을 쓴다.
\[\frac{d^2T}{dx^2} \approx \frac{T_{i-1} - 2T_i + T_{i+1}}{\Delta x^2}\]막대를 \(n\)칸으로 나누면 안쪽 점 \(n - 1\)개마다 식이 하나씩 생긴다. \(\frac{d^2T}{dx^2} + h'(T_a - T) = 0\)에 넣고 정리하면 다음과 같다.
\[\frac{T_{i-1} - 2T_i + T_{i+1}}{\Delta x^2} + h'(T_a - T_i) = 0 \quad\Longrightarrow\quad -T_{i-1} + (2 + h'\Delta x^2)T_i - T_{i+1} = h'\Delta x^2T_a\]x 0 2 4 6 8 10
o------*------*------*------*------o
T0 T1 T2 T3 T4 T5
(40) (?) (?) (?) (?) (200)
i = 2의 식: T1 ---- T2 ---- T3
(-1) (2.04) (-1)
o는 값을 아는 양 끝, *는 미지수다. 식 하나는 한 점과 그 양옆 두 점만 쓴다. 그래서 행렬의 한 줄에는 수가 세 개뿐이고, \(T_0\)와 \(T_5\)는 첫 식과 마지막 식의 우변으로 간다.
\(T_0\)와 \(T_n\)은 알고 있으므로 첫 식과 마지막 식의 오른쪽으로 옮긴다. 그러면 계수 행렬은 대각선과 그 바로 위아래에만 수가 있는 삼중대각 행렬이다.
\[\begin{pmatrix}2 + h'\Delta x^2 & -1 & & \\ -1 & 2 + h'\Delta x^2 & -1 & \\ & \ddots & \ddots & \ddots\\ & & -1 & 2 + h'\Delta x^2\end{pmatrix}\begin{pmatrix}T_1\\ T_2\\ \vdots\\ T_{n-1}\end{pmatrix} = \begin{pmatrix}h'\Delta x^2T_a + T_0\\ h'\Delta x^2T_a\\ \vdots\\ h'\Delta x^2T_a + T_n\end{pmatrix}\]삼중대각 연립방정식은 가우스 소거를 대각선 근처만 하는 토마스 알고리즘으로 \(O(n)\) 연산에 푼다1. 이 행렬은 대각 우세(\(2.04 > 1 + 1\))라 가우스-자이델 방법으로도 수렴한다.
중심 차분의 오차가 \(\Delta x^2\)에 비례하므로 결과의 오차도 \(\Delta x^2\) 차수다1.
활용
- 열 전도, 보의 처짐, 정전기 전위처럼 경계 조건이 양 끝에 있는 문제에 쓴다. 2차원·3차원으로 넓히면 격자의 연립방정식이 되어 큰 희소 행렬을 반복법으로 푼다(편미분방정식의 수치 풀이)1.
- 사격법과 비교: 유한 차분법은 연립방정식 하나로 전체 해를 한 번에 얻고 선형이면 반복이 없다. 사격법은 이미 있는 초깃값 풀이(RK4)를 그대로 쓰고, 비선형에서도 근 찾기만 더하면 된다.
- 흔한 실수: 경계 값 \(T_0\), \(T_n\)을 미지수에 넣는 것. 또 우변에 경계 값을 더하는 것을 첫 식과 마지막 식에서 빠뜨리는 것.
연결
- 선수: 사격법(같은 문제, 다른 방법), LU 분해(삼중대각 소거)
- 큰 격자의 연립방정식: 야코비 방법과 가우스-자이델 방법
- 같은 중심 차분 공식: 헤세 행렬과 극값 판정의 과목별 관점
확인 문제
C1 \(\frac{d^2T}{dx^2} + h'(T_a - T) = 0\)을 중심 차분으로 바꾼 안쪽 점의 식을 쓰라. 경계 값은 어디로 가나?
답: \(-T_{i-1} + (2 + h'\Delta x^2)T_i - T_{i+1} = h'\Delta x^2T_a\). \(T_0\)는 첫 식, \(T_n\)은 마지막 식의 우변에 더한다.
C2 \(T'' = 0\), \(T(0) = 0\), \(T(3) = 3\)을 \(\Delta x = 1\)로 풀라.
답: 안쪽 점 둘: \(2T_1 - T_2 = 0\), \(-T_1 + 2T_2 = 3\). \(T_1 = 1\), \(T_2 = 2\). 참값 \(T = x\)와 같다(직선은 중심 차분이 정확하다).
C3 선형 경계값 문제를 격자 점 1,000개에서 한 번에 풀고 싶다. 사격법과 유한 차분법 중 무엇이 자연스러운가? 다른 쪽은 왜 덜 맞는가?
답: 유한 차분법. 삼중대각 연립방정식 하나를 \(O(n)\)에 풀어 모든 격자 점의 값을 한 번에 얻는다. 사격법도 되지만 RK4로 두 번 끝까지 적분하고 보간해야 하며, 결과가 적분 걸음의 점에서만 나온다. 방정식이 비선형이고 RK 풀이가 이미 있으면 사격법이 편하다.