4.2 熱伝導方程式
4.3.2 主要な 3 つの差分スキーム
から順に考えていこう. では,t, xについてともに前進差分を採用するのだから,
u(t+ ∆t, x)−u(t, x)
∆t +cu(t, x+ ∆x)−u(t, x)
∆t = 0
であるから,差分方程式は,
uk+1j =ukj −c∆t
∆x
(ukj+1−ukj)
となる.これは,前の時刻の2点の値の重み付き平均から1点の値が決まるメカニズムである.
ukj ukj+1 uk+1j
時刻(k+ 1)∆t
時刻k∆t
前の時刻の2点の値の重み付き平均
メカニズムがわかったら,例によって増幅率を計算しよう.
g = 1−c∆t
∆x(exp(iξ∆x)−1) = (
1 +c∆t
∆x )
−c∆t
∆xexp(iξ∆x) である.
ここで,λ = ∆t/∆x= const.なる差分スキームを考えることにすると,上の計算から,gは,1 +cλ を中心とする半径cλの円周上にある.そのようなgに対して,|g|は∀ξに対して1 +K∆tで押さえるこ とはできない.従って,不安定スキームであることがわかる.
1 +cλ 0
1
半径cλ
のスキームは,tに関して前進差分,xに関して中心差分近似するスキームである.
u(t+ ∆t, x)−u(t, x)
∆t +cu(t, x+ ∆x)−u(t, x−∆x)
∆t = 0
であるから,差分方程式は,
uk+1j =ukj − c 2· ∆t
∆x
(ukj+1−ukj−1)
となる.これは,(熱伝導方程式と同じように)前の時刻の3点の重み付き平均から1点での値が決まる スキームである.
ukj−1 ukj ukj+1 uk+1j
時刻(k+ 1)∆t
時刻k∆t
前の時刻の3点の値の重み付き平均
メカニズムがわかったら,例によって増幅率を計算しよう.
g = 1− c 2
(∆t
∆x )
(exp(iξ∆x)−exp(−iξ∆x)) = 1−ic (∆t
∆x )
sin(ξ∆x) となる.従って,
|g|=
√ 1 +c2
(∆t
∆x )2
sin2(ξ∆x)
となる.ここで,λ = ∆t/∆x = const.なる差分スキームを考えると,max|g| = √
1 +c2λ2 > 1となっ て,λによらず不安定なスキームであることがわかる.
ここでρ= ∆t/(∆x)2 = const.なる条件でこの差分スキームを考えると,
|g|=
√
1 +c2 ∆t
(∆x)2 sin2(ξ∆x)∆t=
√
1 +c2ρ∆tsin2(ξ∆x)≤1 + 1 2c2ρ∆t
となるので,定数Kとしてc2rho/2が取れて,von Neumannの条件が満たされ,安定スキームである.
しかし,このスキームは,∆t/∆x= const.なる安定スキームが,もし存在すれば,それに比べると非能 率的である.∆xを小さくすると,∆tをその2乗の割合で小さくしなければならず,計算量が増大する からである.
のスキームを考えよう.tについては前進差分,xについては後退差分近似を行うのであるから,
u(t+ ∆t, x)−u(t, x)
∆t +cu(t, x)−u(t, x−∆x)
∆t = 0
であり,差分方程式は,
uk+1j =ukj −c∆t
∆x
(ukj −ukj−1)
となる.これは,t, xを共に前進差分で近似した場合と似たメカニズムであるが,少し違っている.前の 時刻の2点と言っても,考えている位置とその前の1点での値を利用するわけである.(両方とも前進差 分する場合は,前の1点の値を利用していた.)
ukj−1 ukj uk+1j
時刻(k+ 1)∆t
時刻k∆t
前の時刻の3点の値の重み付き平均
メカニズムがわかったら例によって,増幅率を計算しよう.
g = 1−c∆t
∆x(1−exp(−iξ∆x)) = (
1−c∆t
∆x )
+c∆t
∆xexp(−iξ∆x)
となる. と同様に幾何的に考えると,gは,1−cλを中心とする半径cλの円周上に存在する.この円 周がすべて原点中心の半径1の円周内に入るためには,
cλ=c∆t
∆x ≤1
が必要かつ十分である.従って,λ= ∆t/∆x= const.という差分スキームでは,これが安定性のための 条件となる.
1−cλ 0
1
半径cλ
ここまでc >0としてきた.(本章冒頭に掲げた方程式の形でもc > 0としていた.)もちろんc <0と してもよいが,その場合は右向き進行波ではなく左向き進行波を一般解に持ち,t, x共に前進差分で近似 した方が安定になる.