ディリクレ境界条件が与えられた熱方程式の初期値問題に対する数値解析的解法
📂数値解析ディリクレ境界条件が与えられた熱方程式の初期値問題に対する数値解析的解法
##例
⎩⎨⎧ut=γuxxu(t,0)=u(t,l)=0u(0,x)=f(x)
与えられた問題には代数的解があるほど簡単で、しかし、微分方程式を解くための数値解析法をなぜ学ぶのかを明快に示す例にもなる。これは単に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)
Λ:=δ21−210⋮001−21⋮0001−2⋮00⋯⋯⋯⋱⋯⋯000⋮−21000⋮1−2
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次の第二種チェビシェフ多項式を意味する。
第二種チェビシェフ多項式の根と対称性:
- [1]: Un(X)の根はxk=cos(n+1kπ)、k=1,⋯,n
- [2]: Un(−x)=(−1)nUn(x)
括弧から−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
であるため、m=δ1が大きくなるほど、固有値の大きさも莫大になる。数値解をできるだけ正確に知るためにδを小さくして[0,1]をたくさん分割した場合、計算は非常に難しくなる。たとえばm=100にしてもu’(t)=Λu(t)はスティッフstiffな問題となり、数値的に解くのはかなり困難である。
参照