맨위로가기

크랭크-니콜슨 방법

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

크랭크-니콜슨 방법은 사다리꼴 공식을 기반으로 하며, 시간에 대해 2차 수렴을 제공하는 유한 차분법으로, 편미분 방정식을 풀기 위해 사용된다. 확산 방정식, 1차원 확산, 2차원 확산 문제에 적용되며, 금융 수학에서는 옵션 가격 결정에 활용된다. 비선형 문제의 경우 반복적인 기법을 사용하여 해를 구하며, 금융 모델에서는 수치적 진동이 발생할 수 있다는 한계가 있다.

더 읽어볼만한 페이지

  • 룽게-쿠타 방법 - 오일러 방법
    오일러 방법은 레온하르트 오일러가 제시한 미분 방정식의 해를 구하는 수치 해석 방법으로, 초기값을 이용하여 시간 간격을 나누어 해를 계산하며, 테일러 급수를 활용하여 공식을 유도하고, 간단한 알고리즘 덕분에 과거에 널리 사용되었고 현재에도 수치 해석의 기본 원리를 설명하는 데 중요한 역할을 한다.
  • 룽게-쿠타 방법 - 호인의 방법
    호인의 방법은 미분방정식의 해를 구하는 수치적 방법으로, 오일러 방법의 개선된 형태이며, 구간 양 끝점의 기울기를 고려하여 오차를 줄이는 2차 룽게-쿠타 방법의 일종이다.
  • 수치미분방정식 - 호인의 방법
    호인의 방법은 미분방정식의 해를 구하는 수치적 방법으로, 오일러 방법의 개선된 형태이며, 구간 양 끝점의 기울기를 고려하여 오차를 줄이는 2차 룽게-쿠타 방법의 일종이다.
  • 수치미분방정식 - 전변동 점감
    전변동 점감 기법은 편미분 방정식의 수치 해를 구할 때 해의 전변동을 줄여 진동을 억제하고 수치 해의 단조성을 보존하며, 전산 유체 역학에서 불연속성을 가진 유동 현상을 예측하는 데 활용되지만 해의 정확도를 제한하는 단점도 있습니다.
크랭크-니콜슨 방법
개요
종류유한 차분법
분야수치해석
관련 항목열 방정식, 편미분 방정식
상세 정보
목적열 방정식과 같은 포물선 편미분 방정식을 수치적으로 풀기
방법암시적 및 명시적 방법을 결합한 2단계 방법
특징2차 정확도
무조건 안정적
장점안정적인 시간 단계 크기를 사용할 수 있음
단점각 시간 단계에서 선형 방정식 시스템을 풀어야 함

2. 원리

1차원 문제에 대한 크랭크-니콜슨 스텐실


크랭크-니콜슨 방법은 사다리꼴 공식을 기반으로 하며, 시간에 대해 2차 수렴을 제공한다. 선형 방정식의 경우, 사다리꼴 공식은 음적 중점 방법과 동일하며, 이는 가우스-르장드르 음적 룽게-쿠타 방법의 가장 간단한 예시이고, 기하학적 적분기라는 속성을 가지고 있다.

1차원 편미분 방정식이 다음과 같다고 가정해 보자.

:\frac{\partial u}{\partial t} = F\left(u, x, t, \frac{\partial u}{\partial x}, \frac{\partial^2 u}{\partial x^2}\right).

u(i \Delta x, n \Delta t) = u_i^nF_i^n = Fi, nu_i^n에 대해 평가하면, 크랭크-니콜슨 방법에 대한 방정식은 n에서의 전진 오일러 방법과 n+1에서의 후진 오일러 방법을 조합한 것이다. (단, 이 방법은 단순히 두 방법의 평균이 아니다. 후진 오일러 방정식은 해에 대한 음적 의존성을 갖기 때문이다.)

\frac{u_i^{n+1} - u_i^n}{\Delta t} = F_i^n\left(u, x, t, \frac{\partial u}{\partial x}, \frac{\partial^2 u}{\partial x^2}\right) 전진 오일러
\frac{u_i^{n+1} - u_i^n}{\Delta t} = F_i^{n+1}\left(u, x, t, \frac{\partial u}{\partial x}, \frac{\partial^2 u}{\partial x^2}\right) 후진 오일러
\frac{u_i^{n+1} - u_i^n}{\Delta t} = \frac{1}{2} \left[ F_i^{n+1}\left(u, x, t, \frac{\partial u}{\partial x}, \frac{\partial^2 u}{\partial x^2}\right) + F_i^n\left(u, x, t, \frac{\partial u}{\partial x}, \frac{\partial^2 u}{\partial x^2}\right) \right] 크랭크-니콜슨


2. 1. 수치적 방법

크랭크-니콜슨 방법은 음적 방법으로, 다음 시간 단계의 해를 구하기 위해 대수 방정식을 풀어야 한다. 편미분 방정식이 비선형인 경우, 시간 이산화 또한 비선형이 되므로, 시간을 진행하는 것은 비선형 대수 방정식 시스템의 해를 포함하게 되지만, 선형화가 가능하다. 특히 선형 확산 문제와 같이 많은 문제에서 대수 문제는 삼대각 행렬이며, 삼대각 행렬 알고리즘을 사용하면 \mathcal{O}(N)의 빠른 직접 해를 얻을 수 있다. 여기서 N은 행렬 크기를 나타내는데, 이는 일반적인 \mathcal{O}(N^3)의 전체 행렬과 비교했을 때 효율적이다.

3. 예시: 1차원 확산

확산 문제에 크랭크-니콜슨 방법을 적용하는 예시는 다음과 같다. 1차원 선형 확산 방정식은 다음과 같다.

:\frac{\partial u}{\partial t} = a \frac{\partial^2 u}{\partial x^2},

이 방정식에 유한 차분법 공간 이산화를 적용하면, 크랭크-니콜슨 이산화는 다음과 같이 나타낼 수 있다.

:\frac{u_i^{n+1} - u_i^n}{\Delta t} = \frac{a}{2 (\Delta x)^2}\left(

(u_{i+1}^{n+1} - 2 u_i^{n+1} + u_{i-1}^{n+1}) +

(u_{i+1}^n - 2 u_i^n + u_{i-1}^n)

\right)

여기서 r = \frac{a \Delta t}{2(\Delta x)^2}라고 하면, 위 식은 다음과 같이 정리된다.

:-r u_{i+1}^{n+1} + (1 + 2r) u_i^{n+1} - r u_{i-1}^{n+1} = r u_{i+1}^n + (1 - 2r) u_i^n + r u_{i-1}^n.

이 방정식은 삼대각 행렬 문제이므로, u_i^{n+1}의 값은 삼대각 행렬 알고리즘을 사용하여 효율적으로 구할 수 있다.

3. 1. 준선형 방정식의 경우

크랭크-니콜슨 방법은 다음과 같은 준선형 확산 방정식에도 적용할 수 있지만, 이 경우 풀이가 더 복잡해진다.

:\frac{\partial u}{\partial t} = a(u) \frac{\partial^2 u}{\partial x^2},

이 방정식에 크랭크-니콜슨 방법을 적용하면 비선형 대수 방정식 시스템이 나타나는데, 이는 선형 방정식 시스템보다 풀기 어렵다.

하지만 몇 가지 방법을 통해 이 문제를 해결할 수 있다.

  • 선형화: 어떤 경우에는 계수 a(u)를 이전 시간 단계의 값 a_i^n(u)으로 대체하여 문제를 선형화할 수 있다. 즉, a_i^{n+1}(u) 대신 a_i^n(u)를 사용하는 것이다.
  • 명시적 방법: 안정성을 유지하면서 a_i^{n+1}(u)를 명시적 방법으로 추정하는 것도 가능하다.

4. 예시: 정상 흐름에서의 1차원 확산 및 이류 (다중 채널 연결)

정상 흐름 조건에서 하천이나 강에서의 오염 물질 농도 모델링은 확산 방정식, 이류(대류) 성분, 그리고 채널 간 상호 작용을 고려하여 1차원으로 단순화할 수 있다.

하위 섹션에서 방정식의 구성과 채널 모델링에 대한 내용이 자세하게 다루어지고 있으므로, 이 섹션에서는 간략하게 요약한다.

1차원 모델링에서는 다음 세 가지 요소를 고려한다.


  • 확산 방정식 (D_x는 상수)
  • 대류 성분 (U_x는 상수)
  • 종방향 채널 간의 측면 상호 작용 (k)


이러한 요소들을 고려한 방정식은 다음과 같다.[1]

:\frac{\partial C}{\partial t} = D_x \frac{\partial^2 C}{\partial x^2} - U_x \frac{\partial C}{\partial x} - k(C - C_N) - k(C - C_M)

여기서 C는 오염 물질의 농도이고, NM은 각각 '이전' 채널과 '다음' 채널을 의미한다.

이 선형 연립 방정식을 풀기 위해서는 채널 시작 부분에 경계 조건을 설정해야 하며, 채널 마지막 셀에서는 단열 조건이 적용된다.

3개의 채널과 5개의 노드(초기 경계 조건 포함)를 가진 경우, 행렬 형태로 문제를 풀 수 있다.

:\mathbf{AA}\,\mathbf{C^{j+1}} = \mathbf{BB}\,\mathbf{C^j} + \mathbf{d}

행렬 '''AA''', '''BB''', '''d''' 와 농도 벡터 '''C''' 에 대한 자세한 내용은 "=== 행렬 형태로 표현 ===" 에서 확인할 수 있다.

각 시점에서의 농도는 다음 방정식을 반복하여 계산한다.

:\mathbf{C^{j+1}} = \mathbf{AA}^{-1} (\mathbf{BB}\,\mathbf{C^j} + \mathbf{d})

4. 1. 방정식 구성

Crank–Nicolson method|크랭크-니콜슨 방법영어편미분 방정식을 풀 때 사용되는 수치해석 방법 중 하나이다. 이 섹션에서는 편미분 방정식의 각 성분을 크랭크-니콜슨 방법을 사용하여 어떻게 변환하는지 알아본다.

먼저, 물 속 용질 오염 물질의 농도(C)를 나타내는 다음 방정식을 고려한다.[1]

:\frac{\partial C}{\partial t} = D_x \frac{\partial^2 C}{\partial x^2} - U_x \frac{\partial C}{\partial x} - k(C - C_N) - k(C - C_M)

여기서,

  • D_x: 확산 방정식의 상수
  • U_x: 대류 성분의 상수
  • k: 종방향 채널 간 측면 상호작용
  • C_NC_M: 각각 ''이전'' 채널과 ''다음'' 채널의 오염 물질 농도


크랭크-니콜슨 방법에서 i는 위치, j는 시간을 나타낸다. PDE의 각 성분은 다음과 같이 변환된다.[1]

:\frac{\partial C}{\partial t} \Rightarrow \frac{C_i^{j+1} - C_i^j}{\Delta t}

:\frac{\partial^2 C}{\partial x^2} \Rightarrow \frac{1}{2 (\Delta x)^2}\left(

(C_{i+1}^{j+1} - 2 C_i^{j+1} + C_{i-1}^{j+1}) +

(C_{i+1}^j - 2 C_i^j + C_{i-1}^j)

\right)

:\frac{\partial C}{\partial x} \Rightarrow \frac{1}{2}\left(

\frac{(C_{i+1}^{j+1} - C_{i-1}^{j+1})}{2 (\Delta x)} +

\frac{(C_{i+1}^j - C_{i-1}^j)}{2 (\Delta x)}

\right)

:C \Rightarrow \frac{1}{2} (C_i^{j+1} + C_i^j)

:C_N \Rightarrow \frac{1}{2} (C_{Ni}^{j+1} + C_{Ni}^j)

:C_M \Rightarrow \frac{1}{2} (C_{Mi}^{j+1} + C_{Mi}^j)

대수를 단순화하기 위해 다음과 같은 상수들을 정의한다.[1]

:\lambda = \frac{D_x \, \Delta t}{2 \, \Delta x^2}

:\alpha = \frac{U_x \, \Delta t}{4 \, \Delta x}

:\beta = \frac{k \, \Delta t}{2}

위에서 정의한 상수들과 변환된 PDE 성분들을 원래 방정식에 대입하고 정리하면 다음과 같은 방정식을 얻을 수 있다.[1]

:-\beta C_{Ni}^{j+1} - (\lambda + \alpha)C_{i-1}^{j+1} + (1 + 2\lambda + 2\beta)C_i^{j+1} - (\lambda - \alpha)C_{i+1}^{j+1} - \beta C_{Mi}^{j+1} = {}

:\qquad \beta C_{Ni}^j + (\lambda + \alpha)C_{i-1}^j + (1 - 2\lambda - 2\beta)C_i^j + (\lambda - \alpha)C_{i+1}^j + \beta C_{Mi}^j

4. 2. 채널 모델링

여기서는 물 속의 용질 오염 물질의 농도를 모델링한다. 이 문제는 확산 방정식, 대류 성분, 그리고 종방향 채널 간의 측면 상호 작용(k)의 세 부분으로 구성된다.

:\frac{\partial C}{\partial t} = D_x \frac{\partial^2 C}{\partial x^2} - U_x \frac{\partial C}{\partial x} - k(C - C_N) - k(C - C_M), [1]

여기서 C는 오염 물질의 농도이고, 첨자 NM은 각각 ''이전'' 채널과 ''다음'' 채널에 해당한다.

크랭크-니콜슨 방법(여기서 i는 위치를 나타내고 j는 시간을 나타냄)은 PDE의 각 성분을 다음과 같이 변환한다.

:\frac{\partial C}{\partial t} \Rightarrow \frac{C_i^{j+1} - C_i^j}{\Delta t}, [2]

:\frac{\partial^2 C}{\partial x^2} \Rightarrow \frac{1}{2 (\Delta x)^2}\left(

(C_{i+1}^{j+1} - 2 C_i^{j+1} + C_{i-1}^{j+1}) +

(C_{i+1}^j - 2 C_i^j + C_{i-1}^j)

\right), [3]

:\frac{\partial C}{\partial x} \Rightarrow \frac{1}{2}\left(

\frac{(C_{i+1}^{j+1} - C_{i-1}^{j+1})}{2 (\Delta x)} +

\frac{(C_{i+1}^j - C_{i-1}^j)}{2 (\Delta x)}

\right), [4]

:C \Rightarrow \frac{1}{2} (C_i^{j+1} + C_i^j), [5]

:C_N \Rightarrow \frac{1}{2} (C_{Ni}^{j+1} + C_{Ni}^j),

:C_M \Rightarrow \frac{1}{2} (C_{Mi}^{j+1} + C_{Mi}^j).

이제 대수를 단순화하기 위해 다음 상수를 만든다.

:\lambda = \frac{D_x \, \Delta t}{2 \, \Delta x^2},

:\alpha = \frac{U_x \, \Delta t}{4 \, \Delta x},

:\beta = \frac{k \, \Delta t}{2},

그리고 [2], [3], [4], [5], , , \alpha, \beta\lambda[1]에 대입한다. 그런 다음 ''새로운 시간'' 항(j+1)을 왼쪽에 놓고 ''현재 시간'' 항(j)을 오른쪽에 놓으면 다음을 얻는다.

:-\beta C_{Ni}^{j+1} - (\lambda + \alpha)C_{i-1}^{j+1} + (1 + 2\lambda + 2\beta)C_i^{j+1} - (\lambda - \alpha)C_{i+1}^{j+1} - \beta C_{Mi}^{j+1} = {}

:\qquad \beta C_{Ni}^j + (\lambda + \alpha)C_{i-1}^j + (1 - 2\lambda - 2\beta)C_i^j + (\lambda - \alpha)C_{i+1}^j + \beta C_{Mi}^j.

''첫 번째'' 채널을 모델링하기 위해, 이 채널은 다음 채널(M)과만 접촉할 수 있음을 고려하면, 식은 다음과 같이 단순화된다.

:-(\lambda + \alpha)C_{i-1}^{j+1} + (1 + 2\lambda + \beta)C_i^{j+1} - (\lambda - \alpha)C_{i+1}^{j+1} - \beta C_{Mi}^{j+1} = {}

:\qquad {} +(\lambda + \alpha)C_{i-1}^j + (1 - 2\lambda - \beta)C_i^j + (\lambda - \alpha)C_{i+1}^j + \beta C_{Mi}^j.

마찬가지로 ''마지막'' 채널을 모델링하기 위해, 이 채널은 이전 채널(N)과만 접촉할 수 있음을 고려하면, 식은 다음과 같이 단순화된다.

:-\beta C_{Ni}^{j+1} - (\lambda + \alpha)C_{i-1}^{j+1} + (1 + 2\lambda + \beta)C_i^{j+1} - (\lambda - \alpha)C_{i+1}^{j+1} = {}

:\qquad \beta C_{Ni}^j + (\lambda + \alpha)C_{i-1}^j + (1 - 2\lambda - \beta)C_i^j + (\lambda - \alpha)C_{i+1}^j.

이 선형 연립 방정식을 풀기 위해, 먼저 채널의 시작 부분에 다음과 같은 경계 조건을 제공해야 한다.

  • C_0^j: 현재 시간 단계에서 채널의 초기 조건
  • C_{0}^{j+1}: 다음 시간 단계에서 채널의 초기 조건
  • C_{N0}^j: 현재 시간 단계에서 분석되는 채널의 이전 채널에 대한 초기 조건
  • C_{M0}^j: 현재 시간 단계에서 분석되는 채널의 다음 채널에 대한 초기 조건


채널의 마지막 셀(z)의 경우, 가장 편리한 조건은 단열 조건이다.

: \left. \frac{\partial C}{\partial x} \right|_{x=z} =

\frac{C_{i+1} - C_{i-1}}{2 \, \Delta x} = 0.

이 조건은 다음 경우에만 충족된다.

:C_{i+1}^{j+1} = C_{i-1}^{j+1}.

3개의 채널과 5개의 노드(초기 경계 조건 포함)의 경우에 대해 이 문제를 (행렬 형태로) 풀면 다음과 같다.

:\mathbf{AA}\,\mathbf{C^{j+1}} = \mathbf{BB}\,\mathbf{C^j} + \mathbf{d},

여기서

:\mathbf{C^{j+1}} = \begin{bmatrix}

C_{11}^{j+1}\\ C_{12}^{j+1} \\ C_{13}^{j+1} \\ C_{14}^{j+1} \\

C_{21}^{j+1}\\ C_{22}^{j+1} \\ C_{23}^{j+1} \\ C_{24}^{j+1} \\

C_{31}^{j+1}\\ C_{32}^{j+1} \\ C_{33}^{j+1} \\ C_{34}^{j+1}

\end{bmatrix},

\quad

\mathbf{C^j} = \begin{bmatrix}

C_{11}^j\\ C_{12}^j \\ C_{13}^j \\ C_{14}^j \\

C_{21}^j\\ C_{22}^j \\ C_{23}^j \\ C_{24}^j \\

C_{31}^j\\ C_{32}^j \\ C_{33}^j \\ C_{34}^j

\end{bmatrix}.

'''AA'''와 '''BB'''는 네 개의 서로 다른 하위 배열로 구성된 배열이며, 아래 예시는 세 개의 채널만 고려하지만 위에서 논의된 주요 부분을 다룬다.

:\mathbf{AA} = \begin{bmatrix}

AA1 & AA3 & 0 \\

AA3 & AA2 & AA3 \\

0 & AA3 & AA1

\end{bmatrix},

\quad

\mathbf{BB} = \begin{bmatrix}

BB1 & -AA3 & 0 \\

  • AA3 & BB2 & -AA3 \\

0 & -AA3 & BB1

\end{bmatrix},

여기서 위에 언급된 요소는 다음 배열에 해당하며 4×4 크기의 0으로 채워진 추가 배열이다. AA와 BB의 크기는 12×12이다.

:\mathbf{AA1} = \begin{bmatrix}

(1 + 2\lambda + \beta) & -(\lambda - \alpha) & 0 & 0 \\

  • (\lambda + \alpha) & (1 + 2\lambda + \beta) & -(\lambda - \alpha) & 0 \\

0 & -(\lambda + \alpha) & (1 + 2\lambda + \beta) & -(\lambda - \alpha) \\

0 & 0 & -2\lambda & (1 + 2\lambda + \beta)

\end{bmatrix},

:\mathbf{AA2} = \begin{bmatrix}

(1 + 2\lambda + 2\beta) & -(\lambda - \alpha) & 0 & 0 \\

  • (\lambda + \alpha) & (1 + 2\lambda + 2\beta) & -(\lambda - \alpha) & 0 \\

0 & -(\lambda + \alpha) & (1 + 2\lambda + 2\beta) & -(\lambda - \alpha) \\

0 & 0 & -2\lambda & (1 + 2\lambda + 2\beta)

\end{bmatrix},

:\mathbf{AA3} = \begin{bmatrix}

  • \beta & 0 & 0 & 0 \\

0 & -\beta & 0 & 0 \\

0 & 0 & -\beta & 0 \\

0 & 0 & 0 & -\beta

\end{bmatrix},

:\mathbf{BB1} = \begin{bmatrix}

(1 - 2\lambda - \beta) & (\lambda - \alpha) & 0 & 0 \\

(\lambda + \alpha) & (1 - 2\lambda - \beta) & (\lambda - \alpha) & 0 \\

0 & (\lambda + \alpha) & (1 - 2\lambda - \beta) & (\lambda - \alpha) \\

0 & 0 & 2\lambda & (1 - 2\lambda - \beta)

\end{bmatrix},

:\mathbf{BB2} = \begin{bmatrix}

(1 - 2\lambda - 2\beta) & (\lambda - \alpha) & 0 & 0 \\

(\lambda + \alpha) & (1 - 2\lambda - 2\beta) & (\lambda - \alpha) & 0 \\

0 & (\lambda + \alpha) & (1 - 2\lambda - 2\beta) & (\lambda - \alpha) \\

0 & 0 & 2\lambda & (1 - 2\lambda - 2\beta)

\end{bmatrix}.

'''d''' 벡터는 경계 조건을 유지하는 데 사용되며, 이 예에서는 12×1 벡터이다.

:\mathbf{d} = \begin{bmatrix}

(\lambda + \alpha)(C_{10}^{j+1} + C_{10}^j) \\ 0 \\ 0 \\ 0 \\

(\lambda + \alpha)(C_{20}^{j+1} + C_{20}^j) \\ 0 \\ 0 \\ 0 \\

(\lambda + \alpha)(C_{30}^{j+1} + C_{30}^j) \\ 0 \\ 0 \\ 0

\end{bmatrix}.

어느 시점에서든 농도를 찾으려면 다음 방정식을 반복해야 한다.

:\mathbf{C^{j+1}} = \mathbf{AA}^{-1} (\mathbf{BB}\,\mathbf{C^j} + \mathbf{d}).

4. 3. 행렬 형태로 표현

3개의 채널과 5개의 노드를 가진 경우, 크랭크-니콜슨 방법은 다음과 같은 행렬 형태로 표현될 수 있다.

: \mathbf{AA}\,\mathbf{C^{j+1}} = \mathbf{BB}\,\mathbf{C^j} + \mathbf{d},

여기서,

: \mathbf{C^{j+1}} = \begin{bmatrix}

C_{11}^{j+1}\\ C_{12}^{j+1} \\ C_{13}^{j+1} \\ C_{14}^{j+1} \\

C_{21}^{j+1}\\ C_{22}^{j+1} \\ C_{23}^{j+1} \\ C_{24}^{j+1} \\

C_{31}^{j+1}\\ C_{32}^{j+1} \\ C_{33}^{j+1} \\ C_{34}^{j+1}

\end{bmatrix},

\quad

\mathbf{C^j} = \begin{bmatrix}

C_{11}^j\\ C_{12}^j \\ C_{13}^j \\ C_{14}^j \\

C_{21}^j\\ C_{22}^j \\ C_{23}^j \\ C_{24}^j \\

C_{31}^j\\ C_{32}^j \\ C_{33}^j \\ C_{34}^j

\end{bmatrix}

는 각각 다음 시간 단계(j+1)와 현재 시간 단계(j)에서의 농도 벡터를 나타낸다.

\mathbf{AA}\mathbf{BB}는 다음과 같이 4개의 하위 배열로 구성된 12x12 크기의 행렬이다.

: \mathbf{AA} = \begin{bmatrix}

AA1 & AA3 & 0 \\

AA3 & AA2 & AA3 \\

0 & AA3 & AA1

\end{bmatrix},

\quad

\mathbf{BB} = \begin{bmatrix}

BB1 & -AA3 & 0 \\

  • AA3 & BB2 & -AA3 \\

0 & -AA3 & BB1

\end{bmatrix},

여기서 \mathbf{AA1}, \mathbf{AA2}, \mathbf{AA3}, \mathbf{BB1}, \mathbf{BB2}는 4x4 크기의 행렬이며, 0은 4x4 크기의 영행렬이다. 각 하위 배열은 다음과 같이 정의된다.

: \mathbf{AA1} = \begin{bmatrix}

(1 + 2\lambda + \beta) & -(\lambda - \alpha) & 0 & 0 \\

  • (\lambda + \alpha) & (1 + 2\lambda + \beta) & -(\lambda - \alpha) & 0 \\

0 & -(\lambda + \alpha) & (1 + 2\lambda + \beta) & -(\lambda - \alpha) \\

0 & 0 & -2\lambda & (1 + 2\lambda + \beta)

\end{bmatrix},

: \mathbf{AA2} = \begin{bmatrix}

(1 + 2\lambda + 2\beta) & -(\lambda - \alpha) & 0 & 0 \\

  • (\lambda + \alpha) & (1 + 2\lambda + 2\beta) & -(\lambda - \alpha) & 0 \\

0 & -(\lambda + \alpha) & (1 + 2\lambda + 2\beta) & -(\lambda - \alpha) \\

0 & 0 & -2\lambda & (1 + 2\lambda + 2\beta)

\end{bmatrix},

: \mathbf{AA3} = \begin{bmatrix}

  • \beta & 0 & 0 & 0 \\

0 & -\beta & 0 & 0 \\

0 & 0 & -\beta & 0 \\

0 & 0 & 0 & -\beta

\end{bmatrix},

: \mathbf{BB1} = \begin{bmatrix}

(1 - 2\lambda - \beta) & (\lambda - \alpha) & 0 & 0 \\

(\lambda + \alpha) & (1 - 2\lambda - \beta) & (\lambda - \alpha) & 0 \\

0 & (\lambda + \alpha) & (1 - 2\lambda - \beta) & (\lambda - \alpha) \\

0 & 0 & 2\lambda & (1 - 2\lambda - \beta)

\end{bmatrix},

: \mathbf{BB2} = \begin{bmatrix}

(1 - 2\lambda - 2\beta) & (\lambda - \alpha) & 0 & 0 \\

(\lambda + \alpha) & (1 - 2\lambda - 2\beta) & (\lambda - \alpha) & 0 \\

0 & (\lambda + \alpha) & (1 - 2\lambda - 2\beta) & (\lambda - \alpha) \\

0 & 0 & 2\lambda & (1 - 2\lambda - 2\beta)

\end{bmatrix}.

\mathbf{d}는 경계 조건을 나타내는 12x1 벡터이다.

: \mathbf{d} = \begin{bmatrix}

(\lambda + \alpha)(C_{10}^{j+1} + C_{10}^j) \\ 0 \\ 0 \\ 0 \\

(\lambda + \alpha)(C_{20}^{j+1} + C_{20}^j) \\ 0 \\ 0 \\ 0 \\

(\lambda + \alpha)(C_{30}^{j+1} + C_{30}^j) \\ 0 \\ 0 \\ 0

\end{bmatrix}.

따라서, 각 시간 단계에서 농도 \mathbf{C^{j+1}}는 다음 식을 통해 계산할 수 있다.

: \mathbf{C^{j+1}} = \mathbf{AA}^{-1} (\mathbf{BB}\,\mathbf{C^j} + \mathbf{d}).

5. 예시: 2차원 확산

균일한 데카르트 격자에서 2차원 열 방정식은 다음과 같다.

:\frac{\partial u}{\partial t} = a \left(\frac{\partial^2 u}{\partial x^2} + \frac{\partial^2 u}{\partial y^2}\right)

위 식은 크랭크-니콜슨 이산화 기법을 사용하여 풀 수 있다. 이때 \Delta x = \Delta y인 정사각 격자를 가정하고, CFL 수 \mu = \frac{a \, \Delta t}{(\Delta x)^2}를 사용하면 방정식을 단순화할 수 있다. 크랭크-니콜슨 수치 기법은 안정성을 위해 낮은 CFL 수가 필요하지 않지만, 수치 정확도를 위해서는 필요하다. 방정식을 정리하면 다음과 같다.

:(1 + 2\mu)u_{i,j}^{n+1} - \frac{\mu}{2}\left(u_{i+1,j}^{n+1} + u_{i-1,j}^{n+1} + u_{i,j+1}^{n+1} + u_{i,j-1,j}^{n+1}\right)

:\qquad = (1 - 2\mu)u_{i,j}^{n} + \frac{\mu}{2}\left(u_{i+1,j}^{n} + u_{i-1,j}^{n} + u_{i,j+1}^{n} + u_{i,j-1}^{n}\right).

5. 1. 교대 방향 음함수 방법 (ADI)

2차원 문제에서 선형 시스템을 푸는 것은 계산 비용이 많이 들 수 있다. 교대 방향 음함수 방법(ADI)을 사용하면 각 시간 단계의 절반 동안 한 차원을 음함수로, 나머지 절반 동안 다른 차원을 명시적으로 처리하여 효율성을 높일 수 있다. 이 방법은 음함수 솔버가 삼중 대각 행렬 알고리즘을 푸는 것만 필요로 한다는 장점이 있다.

실제 크랭크-니콜슨 해와 ADI 근사 해의 차이는 정확도 차수가 O(\Delta t^4)이며, 따라서 충분히 작은 시간 간격에서는 무시할 수 있다.

6. 비선형 문제에 대한 크랭크-니콜슨 방법

크랭크-니콜슨 방법은 음적이므로, 일반적으로 정확하게 해를 구하는 것이 불가능하다. 대신 해에 수렴하기 위해 반복적인 기법을 사용해야 한다. 뉴턴 방법을 사용할 수도 있지만, 이를 위해서는 야코비 행렬을 계산해야 한다. 전산 유체 역학이나 수치 상대성 이론과 같은 고차원 시스템에서는 야코비 행렬 계산이 불가능할 수 있으므로, 고정점 반복법과 같은 다른 방법을 사용할 수 있다.

6. 1. 고정점 반복법

크랭크-니콜슨 방법은 음적이기 때문에, 일반적으로 정확하게 해를 구하는 것이 불가능하다. 대신 해에 수렴하기 위해 반복적인 기법을 사용해야 하는데, 야코비 행렬을 계산해야 하는 뉴턴 방법 대신 고정점 반복법을 사용할 수 있다.

만약 f가 시스템의 속도라면, 크랭크-니콜슨 예측은 맵 \Phi(x) = x_0 + \frac{h}{2}\left[ f(x_0) + f(x) \right].의 고정점이 된다. 맵 반복 x^{(i+1)} = \Phi(x^{(i)}) 가 수렴하지 않는다면, 파라미터화된 맵 \Theta(x,\alpha) = \alpha x + (1-\alpha)\Phi(x), \alpha \in(0,1) 를 사용하는 것이 더 나을 수 있다. 확장된 형태의 업데이트 공식은 다음과 같다.

: x^{i+1} = \alpha x^i + (1-\alpha)\left[ x_0 + \frac{h}{2} \left( f(x_0) + f(x^i) \right) \right],

여기서 x^i는 현재 추측값이고, x_{i-1}는 이전 시간 단계이다.

고차원 시스템에서도 이 맵의 반복은 빠르게 수렴할 수 있다.

7. 금융 수학에서의 응용

크랭크-니콜슨 방법은 열 방정식(확산 방정식)으로 모델링될 수 있는 다양한 금융 현상에 적용될 수 있다.[5] 특히, 블랙-숄즈 모형의 미분 방정식은 열 방정식으로 변환될 수 있으며, 크랭크-니콜슨 방법을 사용하여 옵션 가격 결정에 대한 수치 해를 얻을 수 있다.

금융에서, 옵션 가격 결정 문제는 표준 가정(예: 변동하는 배당금 포함)을 넘어 확장될 때 닫힌 형식으로 풀 수 없지만, 크랭크-니콜슨 방법을 사용하면 해를 구할 수 있다.

7. 1. 한계점 및 개선

크랭크-니콜슨 방법은 여러 현상들이 모형화될 수 있는 열 방정식(금융 수학에서 종종 확산 방정식이라고 불림)에도 적용되어 왔다.[5] 특히, 블랙-숄즈 모형의 미분 방정식은 열 방정식으로 변환될 수 있으며, 따라서 수치 해법을 통해 옵션 가격 결정에 대한 해를 크랭크-니콜슨 방법으로 얻을 수 있다.

이는 금융에서 중요한데, 옵션 가격 결정 문제가 표준 가정(예: 변동하는 배당금 포함)을 넘어 확장될 때 닫힌 형식으로 풀 수 없지만, 이 방법을 사용하면 풀 수 있기 때문이다. 그러나 비매끄러운 최종 조건(대부분의 금융 상품에서 발생)의 경우, 크랭크-니콜슨 방법은 수치적 진동이 감쇠되지 않으므로 만족스럽지 않다. 바닐라 옵션의 경우, 이는 행사가격 주변에서 감마 값의 진동을 초래한다. 따라서 특별한 감쇠 초기화 단계(예: 완전 내재적 유한 차분법)가 필요하다.

참조

[1] 서적 Convective Heat Transfer https://books.google[...] Springer
[2] 간행물 A practical method for numerical evaluation of solutions of partial differential equations of the heat conduction type
[3] 서적 Numerical Partial Differential Equations: Finite Difference Methods Springer-Verlag
[4] 웹사이트 Multi-Dimensional Parabolic Problems http://www.cs.rpi.ed[...] RPI 2016-05-29
[5] 서적 The Mathematics of Financial Derivatives: A Student Introduction https://archive.org/[...] Cambridge Univ. Press



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com