주어진 문제는 대수적 풀이가 있을 정도로 쉽고 간단하지만, 미분방정식을 푸는 방법으로써의 수치해석을 왜 배우는지 명쾌하게 알려주는 예시가 되기도 한다. 단순히 y′=f(x,y) 꼴의 미분방정식을 푸는 게 편미분방정식의 풀이로도 이어지는 것이다.
풀이
대수적 풀이에서와 달리 γ 의 값이 중요한 것은 아니므로 편의 상 γ=1 이라고 하자.
xj=δj
선공간line spacex 의 스텝사이즈를 δ 로 두면 j=0,1,⋯,m 에 대해 위와 같이 나타낼 수 있다.
x 에 대한 이계미분의 근사로써
Uxx≈δ2U(t,xj+1)−2U(t,xj)+U(t,xj−1)
라고 하면 오직 t 에 대한 식
ut(t,xj)=δ2u(t,xj+1)−2u(t,xj)+u(t,xj−1)
을 m−1 개만큼 얻을 수 있다. 이것을 행렬로 나타내보면
ut(t,x1)ut(t,x2)ut(t,x3)⋮ut(t,xm−2)ut(t,xm−1)=δ21−210⋮001−21⋮0001−2⋮00⋯⋯⋯⋱⋯⋯000⋮−21000⋮1−2u(t,x1)u(t,x2)u(t,x3)⋮u(t,xm−2)u(t,xm−1)
이고, 지면을 아끼기 위해
u′(t):=ut(t,x1)ut(t,x2)ut(t,x3)⋮ut(t,xm−2)ut(t,xm−1)
u(t):=u(t,x1)u(t,x2)u(t,x3)⋮u(t,xm−2)u(t,xm−1)
라고 두면 u’(t)=Λu(t) 이다. 이제 시간 t 의 스텝사이즈를 h 로 두어 tk=hk 라 하고 여러가지 메소드를 적용해서 수치적인 솔루션을 구하면 된다.
■
교훈: 스티프한 미분방정식
그러나 이것은 어디까지나 이론적인 이야기고, 실제로 수치적인 해를 구하는데에는 상당한 어려움이 있다.
Λ 의 고유값을 알기 위해 Λ−λIm−1 의 행렬식을 구해보자.
삼중대각행렬의 행렬식: 삼중대각행렬 Xn:=x10⋮001x1⋮0001x⋮00⋯⋯⋯⋱⋯⋯000⋮x1000⋮1x 에 대해 ∣xn∣=Un(2x)
Λ−λIm−1=δ21−2−δ2λ10⋮001−2−δ21⋮0001−2−δ2⋮00⋯⋯⋯⋱⋯⋯000⋮−2−δ21000⋮1−2−δ2
은 (m−1)×(m−1) 삼중대각행렬이므로, 행렬식은
det(Λ−λIm−1)=δ21Um−1(2−2−δ2λ)
와 같이 구해진다. 여기서 Um−1 은 m−1 차 제2종 체비셰프 다항함수를 의미한다.
괄호에서 −1 을 빼내면
δ2(−1)m−1Um−1(22+δ2λ)
이고, 고유값을 구하기 위해선
Um−1(22+δ2λ)
만 신경쓰면 충분하다. Um−1(22+δ2λ) 의 j 번째 근은 j=1,⋯,(m−1) 에 대해
22+δ2λj=cos(mjπ)
이고, 양변에 2 을 곱하면
2+δ2λj===2cos(mjπ)2cos(2⋅2mjπ)2[1−2sin2(2mjπ)]
따라서 고유값은
λj=−δ24sin2(2mjπ)
과 같이 구해진다. 그런데
∣λm−1∣=≈=δ24sin2(2m(m−1)π)δ244m2
이므로, λj 는 m=δ1 이 크면 클수록 고유값의 크기도 엄청나게 커진다. 수치해를 가능한 한 정확히 알기 위해 δ 를 작게 잡아 [0,1] 을 많이 쪼갰다면 계산이 무척 어려워지는 것이다. 가령 m=100 으로만 잡아도 u’(t)=Λu(t) 은 스티프stiff 한 문제가 되어서 수치적으로 풀기엔 꽤 어렵다.