波や熱の広がりを計算機で追うには、時間と空間を細かい格子に区切り、微分を引き算と割り算に置き換えます。ところが、格子をどれだけ細かくしても、置き換え方によっては計算結果が厳密解に近づかず、かえって発散してしまいます。この記事は、「どんな置き換えなら格子を細かくするほど正しい答えに近づくのか」を、整合性と安定性という 2 つの性質で見分ける方法を示します。読み終えると、与えられた差分スキームが使ってよいものかどうかを、計算で判定できるようになります。
差分スキーム u n + 1 = C ( Δ t ) u n u^{n+1} = C(\Delta t)u^n u n + 1 = C ( Δ t ) u n の誤差は e n + 1 = C ( Δ t ) e n + Δ t τ n e^{n+1} = C(\Delta t)e^n + \Delta t\,\tau^n e n + 1 = C ( Δ t ) e n + Δ t τ n という漸化式を満たします。τ n \tau^n τ n は厳密解をスキームに代入したときの残差(局所打ち切り誤差 )です。冪 C ( Δ t ) n C(\Delta t)^n C ( Δ t ) n が一様に有界(安定 )なら、誤差は打ち切り誤差の K T KT K T 倍以下に収まります。
Lax の同等定理 : 適切な線形初期値問題に対する整合的なスキームについて、収束することと安定であることは同値です。「安定 ⇒ \Rightarrow ⇒ 収束」は誤差の漸化式から、「収束 ⇒ \Rightarrow ⇒ 安定」は一様有界性原理 (作用素の列が各点で有界なら、ノルムも有界になるという定理)から出ます。
定数係数のスカラーのスキームは、半離散 Fourier 変換で増幅因子 g ( θ ) g(\theta) g ( θ ) の掛け算になります。ℓ 2 \ell^2 ℓ 2 で安定であることと max θ ∣ g ∣ ≤ 1 + C Δ t \max_\theta|g| \le 1 + C\Delta t max θ ∣ g ∣ ≤ 1 + C Δ t は同値です(von Neumann)。連立のスキームでは、増幅行列のスペクトル半径 (固有値の絶対値の最大)についての同じ条件は必要条件にとどまります。
陽的スキームが収束するには、数値的な依存領域が方程式の依存領域を含まなければなりません(CFL 条件 )。移流方程式 u t + a u x = 0 u_t + au_x = 0 u t + a u x = 0 の 3 点スキームでは ∣ a ∣ Δ t / h ≤ 1 |a|\Delta t/h \le 1 ∣ a ∣Δ t / h ≤ 1 です。これは十分条件ではなく、前進時間・中心空間のスキームは CFL 条件を満たしても不安定です。
風上差分と Lax–Friedrichs は 1 次精度で、誤差の先頭項は拡散(数値粘性。計算のせいで生じる見かけの拡散)です。Lax–Wendroff は 2 次精度で、誤差の先頭項は 3 階微分(分散)なので不連続の近くで振動します。単調性を保つ線形スキームは高々 1 次精度です(Godunov)。
この記事で使う事前知識
Banach 空間 : ノルムが定まり、コーシー列がすべて収束する線形空間。→ Banach 空間
スペクトル半径 : 行列の固有値の絶対値の最大。→ スペクトル半径
ユニタリ写像 : 内積(したがってノルム)を保つ、全射の線形写像。→ ユニタリ写像
正規行列 : 自分の随伴行列と交換できる行列。ユニタリ行列に対角化でき、冪のノルムがスペクトル半径の冪になります。→ 正規行列
Fourier 係数 : 周期関数を三角関数の和に展開したときの各項の係数。→ Fourier 係数
偏微分方程式 u t = L u u_t = Lu u t = Lu を計算機で解くには、微分を差分商に置き換えます。置き換えたときの誤差は Taylor の定理で分かります。たとえば前進差分 ( u ( x + h ) − u ( x ) ) / h (u(x+h) - u(x))/h ( u ( x + h ) − u ( x )) / h は u x u_x u x を O ( h ) O(h) O ( h ) の誤差で近似します。それなら、どの差分商を使っても、h h h と Δ t \Delta t Δ t を小さくすれば解は厳密解に近づくはずだ、と考えたくなります。
実際にはそうなりません。移流方程式 u t + u x = 0 u_t + u_x = 0 u t + u x = 0 を、時間は前進差分、空間は中心差分で離散化したスキームは、Δ t \Delta t Δ t と h h h をどれほど小さくしても、格子比 Δ t / h \Delta t/h Δ t / h を固定するかぎり発散します(§9 の数値実験で、誤差が 10 69 10^{69} 1 0 69 に達します)。差分商の 1 回ごとの誤差は小さくても、時間ステップを T / Δ t T/\Delta t T /Δ t 回くり返すあいだに誤差が増幅されるからです。
したがって、スキームには 2 つの性質が要ります。1 回のステップで方程式を正しく近似していること(整合性 )と、ステップをくり返しても誤差が増幅されないこと(安定性 )です。この 2 つがあれば収束し、しかも整合的なスキームでは安定性は収束のために必要でもある、というのが Lax の同等定理です。線形方程式 A x = b A\boldsymbol{x} = \boldsymbol{b} A x = b の数値解法での「前進誤差は条件数と後退誤差の積で抑えられる」という関係(行列のノルムと線形方程式の条件数 )の、発展方程式版にあたります。打ち切り誤差が後退誤差、安定性の定数 K K K が条件数の役です。
この章では、まず抽象的な枠組みで同等定理を証明し、次に安定性を調べる道具(von Neumann 解析)を作り、移流方程式の代表的な 4 つのスキームに適用します。この枠組みは、次章以降の拡散方程式・有限要素法・スペクトル法でも同じ形で使います。
定義 2.1 (格子と格子関数 ) ↗
格子幅 h > 0 h > 0 h > 0 に対し、x j = j h x_j = jh x j = j h (j ∈ Z j \in \mathbb{Z} j ∈ Z )を格子点 、集合 h Z = { x j } h\mathbb{Z} = \{x_j\} h Z = { x j } を格子 という。格子上の複素数値の関数 v = ( v j ) j ∈ Z v = (v_j)_{j\in\mathbb{Z}} v = ( v j ) j ∈ Z を格子関数 という。
∥ v ∥ h = ( h ∑ j ∈ Z ∣ v j ∣ 2 ) 1 / 2 , ∥ v ∥ ∞ = sup j ∣ v j ∣ \|v\|_h = \Bigl(h\sum_{j\in\mathbb{Z}}|v_j|^2\Bigr)^{1/2},\qquad \|v\|_\infty = \sup_{j}|v_j| ∥ v ∥ h = ( h j ∈ Z ∑ ∣ v j ∣ 2 ) 1/2 , ∥ v ∥ ∞ = j sup ∣ v j ∣ を離散 ℓ 2 \ell^2 ℓ 2 ノルム、最大値ノルムといい、∥ v ∥ h < ∞ \|v\|_h < \infty ∥ v ∥ h < ∞ である格子関数の全体を ℓ 2 ( h Z ) \ell^2(h\mathbb{Z}) ℓ 2 ( h Z ) と書く。周期 1 1 1 の問題では h = 1 / N h = 1/N h = 1/ N (N N N は正の整数)とし、v j + N = v j v_{j+N} = v_j v j + N = v j を満たす格子関数を C N \mathbb{C}^N C N の元と同一視して、和を j = 0 , … , N − 1 j = 0, \ldots, N-1 j = 0 , … , N − 1 でとる。時間の刻み Δ t > 0 \Delta t > 0 Δ t > 0 に対し t n = n Δ t t_n = n\Delta t t n = n Δ t とし、時刻 t n t_n t n の格子関数を u n = ( u j n ) j u^n = (u^n_j)_j u n = ( u j n ) j と書く。
重み h h h を付けるのは、v j = f ( x j ) v_j = f(x_j) v j = f ( x j ) のとき ∥ v ∥ h 2 \|v\|_h^2 ∥ v ∥ h 2 が ∫ ∣ f ∣ 2 d x \int|f|^2dx ∫ ∣ f ∣ 2 d x の Riemann 和になり、h h h を変えてもノルムの大きさが比べられるようにするためです。
定義 2.2 (前進・後退・中心差分 ) ↗
関数 f f f と h > 0 h > 0 h > 0 に対し
D + f ( x ) = f ( x + h ) − f ( x ) h , D − f ( x ) = f ( x ) − f ( x − h ) h , D 0 f ( x ) = f ( x + h ) − f ( x − h ) 2 h D_+f(x) = \frac{f(x+h) - f(x)}{h},\quad D_-f(x) = \frac{f(x) - f(x-h)}{h},\quad D_0f(x) = \frac{f(x+h) - f(x-h)}{2h} D + f ( x ) = h f ( x + h ) − f ( x ) , D − f ( x ) = h f ( x ) − f ( x − h ) , D 0 f ( x ) = 2 h f ( x + h ) − f ( x − h ) を前進差分 ・後退差分 ・中心差分 といい、D + D − f ( x ) = f ( x + h ) − 2 f ( x ) + f ( x − h ) h 2 D_+D_-f(x) = \dfrac{f(x+h) - 2f(x) + f(x-h)}{h^2} D + D − f ( x ) = h 2 f ( x + h ) − 2 f ( x ) + f ( x − h ) を 2 階中心差分 という。差分商と、それが近似する導関数との差を、その差分商の打ち切り誤差 という。
補題 2.3 (差分商の打ち切り誤差 ) ✓
f f f は [ x − h , x + h ] [x-h, x+h] [ x − h , x + h ] を含む開区間で定義された実数値関数とし、M k = sup [ x − h , x + h ] ∣ f ( k ) ∣ M_k = \sup_{[x-h,x+h]}|f^{(k)}| M k = sup [ x − h , x + h ] ∣ f ( k ) ∣ とおく。
f f f が C 2 C^2 C 2 級なら ∣ D ± f ( x ) − f ′ ( x ) ∣ ≤ h 2 M 2 |D_\pm f(x) - f'(x)| \le \dfrac{h}{2}M_2 ∣ D ± f ( x ) − f ′ ( x ) ∣ ≤ 2 h M 2 。
f f f が C 3 C^3 C 3 級なら ∣ D 0 f ( x ) − f ′ ( x ) ∣ ≤ h 2 6 M 3 |D_0f(x) - f'(x)| \le \dfrac{h^2}{6}M_3 ∣ D 0 f ( x ) − f ′ ( x ) ∣ ≤ 6 h 2 M 3 。
f f f が C 4 C^4 C 4 級なら ∣ D + D − f ( x ) − f ′ ′ ( x ) ∣ ≤ h 2 12 M 4 |D_+D_-f(x) - f''(x)| \le \dfrac{h^2}{12}M_4 ∣ D + D − f ( x ) − f ′′ ( x ) ∣ ≤ 12 h 2 M 4 。
証明(補題 2.3) 定理 5.3[平均値の定理とテイラーの定理] を点 x x x のまわりで使います。
1. n = 1 n = 1 n = 1 として、x x x と x ± h x \pm h x ± h の間の c ± c_\pm c ± があって f ( x ± h ) = f ( x ) ± h f ′ ( x ) + h 2 2 f ′ ′ ( c ± ) f(x \pm h) = f(x) \pm hf'(x) + \frac{h^2}{2}f''(c_\pm) f ( x ± h ) = f ( x ) ± h f ′ ( x ) + 2 h 2 f ′′ ( c ± ) です。したがって D ± f ( x ) − f ′ ( x ) = ± h 2 f ′ ′ ( c ± ) D_\pm f(x) - f'(x) = \pm\frac{h}{2}f''(c_\pm) D ± f ( x ) − f ′ ( x ) = ± 2 h f ′′ ( c ± ) で、絶対値は h 2 M 2 \frac{h}{2}M_2 2 h M 2 以下です。
2. n = 2 n = 2 n = 2 として f ( x ± h ) = f ( x ) ± h f ′ ( x ) + h 2 2 f ′ ′ ( x ) ± h 3 6 f ′ ′ ′ ( c ± ) f(x\pm h) = f(x) \pm hf'(x) + \frac{h^2}{2}f''(x) \pm \frac{h^3}{6}f'''(c_\pm) f ( x ± h ) = f ( x ) ± h f ′ ( x ) + 2 h 2 f ′′ ( x ) ± 6 h 3 f ′′′ ( c ± ) です。差をとると偶数次の項が消えて
f ( x + h ) − f ( x − h ) = 2 h f ′ ( x ) + h 3 6 ( f ′ ′ ′ ( c + ) + f ′ ′ ′ ( c − ) ) f(x+h) - f(x-h) = 2hf'(x) + \frac{h^3}{6}\bigl(f'''(c_+) + f'''(c_-)\bigr) f ( x + h ) − f ( x − h ) = 2 h f ′ ( x ) + 6 h 3 ( f ′′′ ( c + ) + f ′′′ ( c − ) ) となり、2 h 2h 2 h で割って ∣ D 0 f ( x ) − f ′ ( x ) ∣ ≤ h 2 12 ⋅ 2 M 3 = h 2 6 M 3 |D_0f(x) - f'(x)| \le \frac{h^2}{12}\cdot 2M_3 = \frac{h^2}{6}M_3 ∣ D 0 f ( x ) − f ′ ( x ) ∣ ≤ 12 h 2 ⋅ 2 M 3 = 6 h 2 M 3 です。
3. n = 3 n = 3 n = 3 として f ( x ± h ) = f ( x ) ± h f ′ ( x ) + h 2 2 f ′ ′ ( x ) ± h 3 6 f ′ ′ ′ ( x ) + h 4 24 f ( 4 ) ( c ± ) f(x\pm h) = f(x) \pm hf'(x) + \frac{h^2}{2}f''(x) \pm \frac{h^3}{6}f'''(x) + \frac{h^4}{24}f^{(4)}(c_\pm) f ( x ± h ) = f ( x ) ± h f ′ ( x ) + 2 h 2 f ′′ ( x ) ± 6 h 3 f ′′′ ( x ) + 24 h 4 f ( 4 ) ( c ± ) です。和をとると奇数次の項が消えて
f ( x + h ) − 2 f ( x ) + f ( x − h ) = h 2 f ′ ′ ( x ) + h 4 24 ( f ( 4 ) ( c + ) + f ( 4 ) ( c − ) ) f(x+h) - 2f(x) + f(x-h) = h^2f''(x) + \frac{h^4}{24}\bigl(f^{(4)}(c_+) + f^{(4)}(c_-)\bigr) f ( x + h ) − 2 f ( x ) + f ( x − h ) = h 2 f ′′ ( x ) + 24 h 4 ( f ( 4 ) ( c + ) + f ( 4 ) ( c − ) ) となり、h 2 h^2 h 2 で割って ∣ D + D − f ( x ) − f ′ ′ ( x ) ∣ ≤ h 2 24 ⋅ 2 M 4 = h 2 12 M 4 |D_+D_-f(x) - f''(x)| \le \frac{h^2}{24}\cdot 2M_4 = \frac{h^2}{12}M_4 ∣ D + D − f ( x ) − f ′′ ( x ) ∣ ≤ 24 h 2 ⋅ 2 M 4 = 12 h 2 M 4 です。
∎
中心差分が 2 次なのは、対称性で偶数次(あるいは奇数次)の項が打ち消し合うからです。浮動小数点演算では h h h を小さくしすぎると桁落ちで誤差が増えますが、その釣り合いは Richardson 補外の章 で扱っています。この章では丸め誤差は扱わず、打ち切り誤差とその積み上がり方だけを調べます。
この節は、次の節の同等定理を述べるための準備で、「解が一意に存在し、初期値に連続に依存する」という当たり前の条件を、抽象的な言葉で言い直します。熱方程式や移流方程式のような具体的な方程式は、どれも次の定義の E ( t ) E(t) E ( t ) (初期値を時間 t t t だけ先へ進める作用素。E ( t ) u 0 E(t)u_0 E ( t ) u 0 が時刻 t t t の解)を与える例になっています。X X X は解の置かれる関数の空間(Banach 空間 )で、B ( X ) \mathcal{B}(X) B ( X ) は X X X から X X X への有界な線形写像の全体です。
定義 3.1 (適切な線形初期値問題 ) ↗
X X X を Banach 空間とする。X X X 上の強連続半群 E ( t ) E(t) E ( t ) (t ≥ 0 t \ge 0 t ≥ 0 。定義 4.1[1 径数ユニタリ群と強連続半群] )が与えられたとき、その生成子を L L L として、初期値問題
d u d t = L u ( 0 ≤ t ≤ T ) , u ( 0 ) = u 0 \frac{du}{dt} = Lu\quad(0 \le t \le T),\qquad u(0) = u_0 d t d u = Lu ( 0 ≤ t ≤ T ) , u ( 0 ) = u 0 は適切 であるといい、E ( t ) E(t) E ( t ) を解作用素 、u ( t ) = E ( t ) u 0 u(t) = E(t)u_0 u ( t ) = E ( t ) u 0 (u 0 ∈ X u_0 \in X u 0 ∈ X )を初期値 u 0 u_0 u 0 の解 という。
命題 4.2[1 径数ユニタリ群と強連続半群] の 1 から、定数 M ≥ 1 M \ge 1 M ≥ 1 、ω ∈ R \omega \in \mathbb{R} ω ∈ R があって ∥ E ( t ) ∥ ≤ M e ω t \|E(t)\| \le Me^{\omega t} ∥ E ( t ) ∥ ≤ M e ω t なので、0 ≤ t ≤ T 0 \le t \le T 0 ≤ t ≤ T で ∥ E ( t ) ∥ ≤ K E : = M e ∣ ω ∣ T \|E(t)\| \le K_E := Me^{|\omega|T} ∥ E ( t ) ∥ ≤ K E := M e ∣ ω ∣ T です。同じ命題の 2 から、u 0 ∈ D ( L ) u_0 \in D(L) u 0 ∈ D ( L ) なら u ( t ) = E ( t ) u 0 u(t) = E(t)u_0 u ( t ) = E ( t ) u 0 は実際に微分可能で u ′ = L u u' = Lu u ′ = Lu を満たし、u 0 ∉ D ( L ) u_0 \notin D(L) u 0 ∈ / D ( L ) のときの E ( t ) u 0 E(t)u_0 E ( t ) u 0 は、そのような解の極限(一般化された解)です。「適切」とは、解が一意に存在して初期値に連続に依存する、という Hadamard の条件を半群の言葉で述べたものです。
定義 3.2 (1 段の線形差分スキーム ) ↗
Δ t 0 > 0 \Delta t_0 > 0 Δ t 0 > 0 とする。各 0 < Δ t ≤ Δ t 0 0 < \Delta t \le \Delta t_0 0 < Δ t ≤ Δ t 0 に有界線形作用素 C ( Δ t ) ∈ B ( X ) C(\Delta t) \in \mathcal{B}(X) C ( Δ t ) ∈ B ( X ) を対応させる族で、任意の 0 < δ ≤ Δ t 0 0 < \delta \le \Delta t_0 0 < δ ≤ Δ t 0 について sup δ ≤ Δ t ≤ Δ t 0 ∥ C ( Δ t ) ∥ < ∞ \sup_{\delta \le \Delta t \le \Delta t_0}\|C(\Delta t)\| < \infty sup δ ≤ Δ t ≤ Δ t 0 ∥ C ( Δ t ) ∥ < ∞ を満たすものを 1 段の線形差分スキーム という。u 0 = u 0 u^0 = u_0 u 0 = u 0 、u n + 1 = C ( Δ t ) u n u^{n+1} = C(\Delta t)u^n u n + 1 = C ( Δ t ) u n 、すなわち u n = C ( Δ t ) n u 0 u^n = C(\Delta t)^nu_0 u n = C ( Δ t ) n u 0 を、時刻 t n = n Δ t t_n = n\Delta t t n = n Δ t での近似解とする。空間の格子幅 h h h は Δ t \Delta t Δ t の関数 h = h ( Δ t ) h = h(\Delta t) h = h ( Δ t ) (Δ t → 0 \Delta t \to 0 Δ t → 0 で h → 0 h \to 0 h → 0 )として与えられているものとする。
h h h を Δ t \Delta t Δ t の関数とするのは、極限を 1 つのパラメータでとるためです。双曲型の方程式では Δ t / h = λ \Delta t/h = \lambda Δ t / h = λ を、放物型では Δ t / h 2 = μ \Delta t/h^2 = \mu Δ t / h 2 = μ を一定にするのが典型です。陰的なスキーム B 1 u n + 1 = B 0 u n B_1u^{n+1} = B_0u^n B 1 u n + 1 = B 0 u n は C = B 1 − 1 B 0 C = B_1^{-1}B_0 C = B 1 − 1 B 0 としてこの形に入ります。
定義 3.3 (局所打ち切り誤差・整合性・精度の次数 ) ↗
初期値 u 0 ∈ X u_0 \in X u 0 ∈ X の解 u ( t ) = E ( t ) u 0 u(t) = E(t)u_0 u ( t ) = E ( t ) u 0 に対し
τ ( t , Δ t ) = u ( t + Δ t ) − C ( Δ t ) u ( t ) Δ t ( 0 ≤ t ≤ T − Δ t ) \tau(t, \Delta t) = \frac{u(t + \Delta t) - C(\Delta t)u(t)}{\Delta t}\qquad(0 \le t \le T - \Delta t) τ ( t , Δ t ) = Δ t u ( t + Δ t ) − C ( Δ t ) u ( t ) ( 0 ≤ t ≤ T − Δ t ) をスキームの局所打ち切り誤差 という。X X X の稠密な部分空間 D D D があって、すべての u 0 ∈ D u_0 \in D u 0 ∈ D について
sup 0 ≤ t ≤ T − Δ t ∥ τ ( t , Δ t ) ∥ → 0 ( Δ t → 0 ) \sup_{0 \le t \le T - \Delta t}\|\tau(t, \Delta t)\| \to 0\qquad(\Delta t \to 0) 0 ≤ t ≤ T − Δ t sup ∥ τ ( t , Δ t ) ∥ → 0 ( Δ t → 0 ) となるとき、スキームは整合的 であるという。初期値のあるクラスについて、定数 c c c (u 0 u_0 u 0 による)があって sup t ∥ τ ( t , Δ t ) ∥ ≤ c ( Δ t p + h q ) \sup_t\|\tau(t,\Delta t)\| \le c(\Delta t^p + h^q) sup t ∥ τ ( t , Δ t ) ∥ ≤ c ( Δ t p + h q ) となるとき、スキームはそのクラスについて時間 p p p 次・空間 q q q 次の精度 をもつという。
整合性の定義で稠密な部分空間 D D D の上だけを要求するのは、滑らかな初期値では打ち切り誤差を Taylor の定理で評価できるからです。滑らかでない初期値は、D D D の元で近似して扱います(これは §4 の定理の証明の後半で使います)。
τ \tau τ は「厳密解を 1 ステップ進めたもの」と「厳密解にスキームを 1 回適用したもの」の差を Δ t \Delta t Δ t で割った量です。Δ t \Delta t Δ t で割るのは、u t = L u u_t = Lu u t = Lu の残差と同じ単位にするためで、差分商の打ち切り誤差(補題 2.3 )がそのまま現れます。
定義 3.4 (安定性と収束 ) ↗
スキーム C ( Δ t ) C(\Delta t) C ( Δ t ) が安定 であるとは、定数 K K K があって
∥ C ( Δ t ) n ∥ ≤ K ( 0 < Δ t ≤ Δ t 0 , n ≥ 0 , n Δ t ≤ T ) \|C(\Delta t)^n\| \le K\qquad(0 < \Delta t \le \Delta t_0,\ n \ge 0,\ n\Delta t \le T) ∥ C ( Δ t ) n ∥ ≤ K ( 0 < Δ t ≤ Δ t 0 , n ≥ 0 , n Δ t ≤ T ) が成り立つことをいう。スキームが収束する とは、任意の u 0 ∈ X u_0 \in X u 0 ∈ X 、任意の t ∈ [ 0 , T ] t \in [0, T] t ∈ [ 0 , T ] 、および Δ t j → 0 \Delta t_j \to 0 Δ t j → 0 、n j Δ t j ≤ T n_j\Delta t_j \le T n j Δ t j ≤ T 、n j Δ t j → t n_j\Delta t_j \to t n j Δ t j → t を満たす任意の列 ( Δ t j , n j ) (\Delta t_j, n_j) ( Δ t j , n j ) について
∥ C ( Δ t j ) n j u 0 − E ( t ) u 0 ∥ → 0 ( j → ∞ ) \|C(\Delta t_j)^{n_j}u_0 - E(t)u_0\| \to 0\qquad(j \to \infty) ∥ C ( Δ t j ) n j u 0 − E ( t ) u 0 ∥ → 0 ( j → ∞ ) となることをいう。
安定性は、スキームだけの性質で、方程式にも解にもよりません。また、∥ C ( Δ t ) ∥ ≤ 1 \|C(\Delta t)\| \le 1 ∥ C ( Δ t ) ∥ ≤ 1 を要求しているのではなく、n ≤ T / Δ t n \le T/\Delta t n ≤ T /Δ t 回の積が Δ t \Delta t Δ t によらない定数で抑えられることを要求しています。たとえば ∥ C ( Δ t ) ∥ ≤ 1 + c Δ t \|C(\Delta t)\| \le 1 + c\Delta t ∥ C ( Δ t ) ∥ ≤ 1 + c Δ t なら ∥ C n ∥ ≤ ( 1 + c Δ t ) n ≤ e c n Δ t ≤ e c T \|C^n\| \le (1 + c\Delta t)^n \le e^{cn\Delta t} \le e^{cT} ∥ C n ∥ ≤ ( 1 + c Δ t ) n ≤ e c n Δ t ≤ e c T で安定です。
誤差の積み上がり方を、空間によらない形の補題にしておきます。X X X 上のスキームにも、格子関数の空間 ℓ 2 ( h Z ) \ell^2(h\mathbb{Z}) ℓ 2 ( h Z ) や C N \mathbb{C}^N C N の上のスキームにもそのまま使えます。
補題 4.1 (誤差の漸化式 ) ✓
Y Y Y をノルム空間、C ∈ B ( Y ) C \in \mathcal{B}(Y) C ∈ B ( Y ) 、Δ t > 0 \Delta t > 0 Δ t > 0 、N ≥ 1 N \ge 1 N ≥ 1 とし、∥ C n ∥ ≤ K \|C^n\| \le K ∥ C n ∥ ≤ K (0 ≤ n ≤ N 0 \le n \le N 0 ≤ n ≤ N )とする。Y Y Y の元の列 w 0 , w 1 , … , w N w^0, w^1, \ldots, w^N w 0 , w 1 , … , w N に対し τ n = ( w n + 1 − C w n ) / Δ t \tau^n = (w^{n+1} - Cw^n)/\Delta t τ n = ( w n + 1 − C w n ) /Δ t (0 ≤ n < N 0 \le n < N 0 ≤ n < N )とおく。このとき、任意の u 0 ∈ Y u^0 \in Y u 0 ∈ Y と u n = C n u 0 u^n = C^nu^0 u n = C n u 0 について、e n = w n − u n e^n = w^n - u^n e n = w n − u n は
e n + 1 = C e n + Δ t τ n , ∥ e n ∥ ≤ K ∥ e 0 ∥ + K n Δ t max 0 ≤ k < n ∥ τ k ∥ ( 0 ≤ n ≤ N ) e^{n+1} = Ce^n + \Delta t\,\tau^n,\qquad \|e^n\| \le K\|e^0\| + K\,n\Delta t\max_{0 \le k < n}\|\tau^k\|\qquad(0 \le n \le N) e n + 1 = C e n + Δ t τ n , ∥ e n ∥ ≤ K ∥ e 0 ∥ + K n Δ t 0 ≤ k < n max ∥ τ k ∥ ( 0 ≤ n ≤ N ) を満たす。
証明(補題 4.1) τ n \tau^n τ n の定義から w n + 1 = C w n + Δ t τ n w^{n+1} = Cw^n + \Delta t\,\tau^n w n + 1 = C w n + Δ t τ n で、u n + 1 = C u n u^{n+1} = Cu^n u n + 1 = C u n を引くと e n + 1 = C e n + Δ t τ n e^{n+1} = Ce^n + \Delta t\,\tau^n e n + 1 = C e n + Δ t τ n です。これを n n n についてくり返すと
e n = C n e 0 + Δ t ∑ k = 0 n − 1 C n − 1 − k τ k e^n = C^ne^0 + \Delta t\sum_{k=0}^{n-1}C^{n-1-k}\tau^k e n = C n e 0 + Δ t k = 0 ∑ n − 1 C n − 1 − k τ k です(n = 0 n = 0 n = 0 では和が空で成り立ち、n n n で成り立てば e n + 1 = C n + 1 e 0 + Δ t ∑ k = 0 n − 1 C n − k τ k + Δ t τ n e^{n+1} = C^{n+1}e^0 + \Delta t\sum_{k=0}^{n-1}C^{n-k}\tau^k + \Delta t\,\tau^n e n + 1 = C n + 1 e 0 + Δ t ∑ k = 0 n − 1 C n − k τ k + Δ t τ n で n + 1 n+1 n + 1 でも成り立ちます)。0 ≤ n − 1 − k ≤ N 0 \le n - 1 - k \le N 0 ≤ n − 1 − k ≤ N なので ∥ C n − 1 − k ∥ ≤ K \|C^{n-1-k}\| \le K ∥ C n − 1 − k ∥ ≤ K で、三角不等式から ∥ e n ∥ ≤ K ∥ e 0 ∥ + Δ t ⋅ n ⋅ K max k ∥ τ k ∥ \|e^n\| \le K\|e^0\| + \Delta t\cdot n\cdot K\max_k\|\tau^k\| ∥ e n ∥ ≤ K ∥ e 0 ∥ + Δ t ⋅ n ⋅ K max k ∥ τ k ∥ です。
∎
w n w^n w n として厳密解の時刻 t n t_n t n での値(格子上のスキームなら格子点での値)をとると、τ n \tau^n τ n は局所打ち切り誤差です。この補題は「大域誤差は、初期誤差と、T / Δ t T/\Delta t T /Δ t 回ぶんの局所誤差 Δ t τ \Delta t\,\tau Δ t τ の和の K K K 倍以下」と読めます。1 ステップの誤差 Δ t τ \Delta t\,\tau Δ t τ が O ( Δ t p + 1 ) O(\Delta t^{p+1}) O ( Δ t p + 1 ) でも、積み上げると O ( Δ t p ) O(\Delta t^p) O ( Δ t p ) になります。
次の定理の証明は 2 段に分かれます。まず滑らかな初期値では、上の補題の右辺がそのまま誤差の上界になります。次に一般の初期値は、滑らかな v v v で近似して、誤差を 4 つの項に分けます。u 0 u_0 u 0 と v v v の差に由来する 2 項は、安定性と解作用素の有界性のおかげで ε \varepsilon ε に比例して小さくなります。v v v についてのスキームの誤差は滑らかな場合の結果で小さくなり、残る 1 項は解の時間連続性で小さくなります。
定理 4.2 (整合性と安定性から収束が従う ) ✓
適切な線形初期値問題(定義 3.1 )に対するスキーム C ( Δ t ) C(\Delta t) C ( Δ t ) が整合的で安定ならば、収束する。さらに、初期値 u 0 u_0 u 0 について sup t ∥ τ ( t , Δ t ) ∥ ≤ c ( Δ t p + h q ) \sup_t\|\tau(t,\Delta t)\| \le c(\Delta t^p + h^q) sup t ∥ τ ( t , Δ t ) ∥ ≤ c ( Δ t p + h q ) ならば、安定性の定数 K K K について
∥ u ( t n ) − C ( Δ t ) n u 0 ∥ ≤ K T c ( Δ t p + h q ) ( n Δ t ≤ T ) \|u(t_n) - C(\Delta t)^nu_0\| \le KTc\,(\Delta t^p + h^q)\qquad(n\Delta t \le T) ∥ u ( t n ) − C ( Δ t ) n u 0 ∥ ≤ K T c ( Δ t p + h q ) ( n Δ t ≤ T ) が成り立つ。
証明(定理 4.2) 滑らかな初期値. u 0 ∈ X u_0 \in X u 0 ∈ X を任意にとり、u ( t ) = E ( t ) u 0 u(t) = E(t)u_0 u ( t ) = E ( t ) u 0 、w n = u ( t n ) w^n = u(t_n) w n = u ( t n ) 、N = ⌊ T / Δ t ⌋ N = \lfloor T/\Delta t\rfloor N = ⌊ T /Δ t ⌋ とします。τ n = ( w n + 1 − C ( Δ t ) w n ) / Δ t = τ ( t n , Δ t ) \tau^n = (w^{n+1} - C(\Delta t)w^n)/\Delta t = \tau(t_n, \Delta t) τ n = ( w n + 1 − C ( Δ t ) w n ) /Δ t = τ ( t n , Δ t ) で、安定性から ∥ C ( Δ t ) n ∥ ≤ K \|C(\Delta t)^n\| \le K ∥ C ( Δ t ) n ∥ ≤ K (n ≤ N n \le N n ≤ N )です。補題 4.1 を u 0 = u 0 u^0 = u_0 u 0 = u 0 (e 0 = 0 e^0 = 0 e 0 = 0 )で使うと
∥ u ( t n ) − C ( Δ t ) n u 0 ∥ ≤ K n Δ t sup 0 ≤ t ≤ T − Δ t ∥ τ ( t , Δ t ) ∥ ≤ K T sup t ∥ τ ( t , Δ t ) ∥ \|u(t_n) - C(\Delta t)^nu_0\| \le K\,n\Delta t\sup_{0\le t\le T-\Delta t}\|\tau(t,\Delta t)\| \le KT\sup_t\|\tau(t,\Delta t)\| ∥ u ( t n ) − C ( Δ t ) n u 0 ∥ ≤ K n Δ t 0 ≤ t ≤ T − Δ t sup ∥ τ ( t , Δ t ) ∥ ≤ K T t sup ∥ τ ( t , Δ t ) ∥ です。sup t ∥ τ ∥ ≤ c ( Δ t p + h q ) \sup_t\|\tau\| \le c(\Delta t^p + h^q) sup t ∥ τ ∥ ≤ c ( Δ t p + h q ) なら後半の評価が得られます。また u 0 ∈ D u_0 \in D u 0 ∈ D (整合性の定義の稠密な部分空間)なら、右辺は Δ t → 0 \Delta t \to 0 Δ t → 0 で 0 0 0 に収束します。
一般の初期値. u 0 ∈ X u_0 \in X u 0 ∈ X 、t ∈ [ 0 , T ] t \in [0,T] t ∈ [ 0 , T ] 、列 ( Δ t j , n j ) (\Delta t_j, n_j) ( Δ t j , n j ) を収束の定義のとおりにとり、s j = n j Δ t j s_j = n_j\Delta t_j s j = n j Δ t j とします。ε > 0 \varepsilon > 0 ε > 0 に対し、D D D の稠密性から ∥ u 0 − v ∥ < ε \|u_0 - v\| < \varepsilon ∥ u 0 − v ∥ < ε となる v ∈ D v \in D v ∈ D をとります。
C ( Δ t j ) n j u 0 − E ( t ) u 0 = C ( Δ t j ) n j ( u 0 − v ) + ( C ( Δ t j ) n j v − E ( s j ) v ) + ( E ( s j ) v − E ( t ) v ) + E ( t ) ( v − u 0 ) C(\Delta t_j)^{n_j}u_0 - E(t)u_0 = C(\Delta t_j)^{n_j}(u_0 - v) + \bigl(C(\Delta t_j)^{n_j}v - E(s_j)v\bigr) + \bigl(E(s_j)v - E(t)v\bigr) + E(t)(v - u_0) C ( Δ t j ) n j u 0 − E ( t ) u 0 = C ( Δ t j ) n j ( u 0 − v ) + ( C ( Δ t j ) n j v − E ( s j ) v ) + ( E ( s j ) v − E ( t ) v ) + E ( t ) ( v − u 0 ) と分けます。第 1 項のノルムは安定性から K ε K\varepsilon K ε 以下、第 4 項は K E ε K_E\varepsilon K E ε 以下です。第 2 項は前半から K T sup t ∥ τ v ( t , Δ t j ) ∥ KT\sup_t\|\tau_v(t,\Delta t_j)\| K T sup t ∥ τ v ( t , Δ t j ) ∥ 以下(τ v \tau_v τ v は v v v の解についての局所打ち切り誤差)で、v ∈ D v \in D v ∈ D なので j → ∞ j \to \infty j → ∞ で 0 0 0 に収束します。第 3 項は、t ↦ E ( t ) v t \mapsto E(t)v t ↦ E ( t ) v の連続性(強連続半群の定義)と s j → t s_j \to t s j → t から 0 0 0 に収束します。したがって
lim sup j → ∞ ∥ C ( Δ t j ) n j u 0 − E ( t ) u 0 ∥ ≤ ( K + K E ) ε \limsup_{j\to\infty}\|C(\Delta t_j)^{n_j}u_0 - E(t)u_0\| \le (K + K_E)\varepsilon j → ∞ lim sup ∥ C ( Δ t j ) n j u 0 − E ( t ) u 0 ∥ ≤ ( K + K E ) ε で、ε \varepsilon ε は任意なので左辺は 0 0 0 です。
∎
一般の初期値では収束はしますが、速さは保証されません。次数つきの評価には解の滑らかさが要ります(§9 で、角のある初期値では観測される次数が落ちることを見ます)。
逆向きの定理は、対偶で示します。つまり、安定でないスキームには、作用素のノルムの増え方が速すぎて、ある初期値で解が暴れてしまう例が必ず作れる、という流れです。「ノルムは大きいが各初期値では大丈夫」という状況を許さないのが、一様有界性原理です。
定理 4.3 (収束するスキームは安定である ) ✓
適切な線形初期値問題に対するスキーム C ( Δ t ) C(\Delta t) C ( Δ t ) が収束するならば、安定である。
証明(定理 4.3) 安定でないと仮定します。すると各 j ≥ 1 j \ge 1 j ≥ 1 について、0 < Δ t j ≤ Δ t 0 0 < \Delta t_j \le \Delta t_0 0 < Δ t j ≤ Δ t 0 、n j Δ t j ≤ T n_j\Delta t_j \le T n j Δ t j ≤ T で ∥ C ( Δ t j ) n j ∥ > j \|C(\Delta t_j)^{n_j}\| > j ∥ C ( Δ t j ) n j ∥ > j となる組 ( Δ t j , n j ) (\Delta t_j, n_j) ( Δ t j , n j ) があります。T j = C ( Δ t j ) n j ∈ B ( X ) T_j = C(\Delta t_j)^{n_j} \in \mathcal{B}(X) T j = C ( Δ t j ) n j ∈ B ( X ) とおくと sup j ∥ T j ∥ = ∞ \sup_j\|T_j\| = \infty sup j ∥ T j ∥ = ∞ です。X X X は Banach 空間なので、定理 5.1[Banach 空間の基本定理] の対偶から、sup j ∥ T j u 0 ∥ = ∞ \sup_j\|T_ju_0\| = \infty sup j ∥ T j u 0 ∥ = ∞ となる u 0 ∈ X u_0 \in X u 0 ∈ X があります。部分列をとって ∥ T j u 0 ∥ → ∞ \|T_ju_0\| \to \infty ∥ T j u 0 ∥ → ∞ としてよく、さらに有界な数列 Δ t j ∈ ( 0 , Δ t 0 ] \Delta t_j \in (0, \Delta t_0] Δ t j ∈ ( 0 , Δ t 0 ] 、n j Δ t j ∈ [ 0 , T ] n_j\Delta t_j \in [0, T] n j Δ t j ∈ [ 0 , T ] から収束する部分列をとって、Δ t j → δ ∈ [ 0 , Δ t 0 ] \Delta t_j \to \delta \in [0, \Delta t_0] Δ t j → δ ∈ [ 0 , Δ t 0 ] 、n j Δ t j → t ∈ [ 0 , T ] n_j\Delta t_j \to t \in [0, T] n j Δ t j → t ∈ [ 0 , T ] としてよいです。
δ = 0 \delta = 0 δ = 0 の場合. 収束の定義から T j u 0 = C ( Δ t j ) n j u 0 → E ( t ) u 0 T_ju_0 = C(\Delta t_j)^{n_j}u_0 \to E(t)u_0 T j u 0 = C ( Δ t j ) n j u 0 → E ( t ) u 0 なので、∥ T j u 0 ∥ \|T_ju_0\| ∥ T j u 0 ∥ は有界です。これは ∥ T j u 0 ∥ → ∞ \|T_ju_0\| \to \infty ∥ T j u 0 ∥ → ∞ に反します。
δ > 0 \delta > 0 δ > 0 の場合. 十分大きい j j j で Δ t j ≥ δ / 2 \Delta t_j \ge \delta/2 Δ t j ≥ δ /2 なので、n j ≤ T / Δ t j ≤ 2 T / δ n_j \le T/\Delta t_j \le 2T/\delta n j ≤ T /Δ t j ≤ 2 T / δ です。スキームの定義(定義 3.2 )から m : = sup δ / 2 ≤ Δ t ≤ Δ t 0 ∥ C ( Δ t ) ∥ < ∞ m := \sup_{\delta/2 \le \Delta t \le \Delta t_0}\|C(\Delta t)\| < \infty m := sup δ /2 ≤ Δ t ≤ Δ t 0 ∥ C ( Δ t ) ∥ < ∞ で、∥ T j u 0 ∥ ≤ ∥ C ( Δ t j ) ∥ n j ∥ u 0 ∥ ≤ max ( 1 , m ) 2 T / δ ∥ u 0 ∥ \|T_ju_0\| \le \|C(\Delta t_j)\|^{n_j}\|u_0\| \le \max(1, m)^{2T/\delta}\|u_0\| ∥ T j u 0 ∥ ≤ ∥ C ( Δ t j ) ∥ n j ∥ u 0 ∥ ≤ max ( 1 , m ) 2 T / δ ∥ u 0 ∥ です。これも ∥ T j u 0 ∥ → ∞ \|T_ju_0\| \to \infty ∥ T j u 0 ∥ → ∞ に反します。
どちらの場合も矛盾するので、スキームは安定です。
∎
この証明は整合性を使っていません。収束の定義が「すべての初期値について」であることが効いています。滑らかな初期値についてだけ収束する不安定なスキームは存在しますが、丸め誤差は滑らかではないので、実際の計算では役に立ちません。
定理 4.4 (Lax の同等定理 ) ✓
適切な線形初期値問題に対する整合的な 1 段の線形差分スキームについて、安定であることと収束することは同値である。
証明(定理 4.4) 安定なら収束することは 定理 4.2 、収束するなら安定であることは 定理 4.3 です。
∎
安定性の定義は冪 C n C^n C n のノルムについての条件で、そのままでは確かめにくいものです。係数が格子点によらないスキームでは、Fourier 変換が C C C を掛け算に変えるので、ノルムが計算できます。
補題 5.1 (半離散 Fourier 変換 ) ✓
v ∈ ℓ 2 ( h Z ) v \in \ell^2(h\mathbb{Z}) v ∈ ℓ 2 ( h Z ) に対し
v ^ ( ξ ) = h ∑ j ∈ Z v j e − i x j ξ ( − π h ≤ ξ ≤ π h ) \hat v(\xi) = h\sum_{j\in\mathbb{Z}}v_je^{-ix_j\xi}\qquad\Bigl(-\frac{\pi}{h} \le \xi \le \frac{\pi}{h}\Bigr) v ^ ( ξ ) = h j ∈ Z ∑ v j e − i x j ξ ( − h π ≤ ξ ≤ h π ) とおく(和は L 2 ( − π / h , π / h ) L^2(-\pi/h, \pi/h) L 2 ( − π / h , π / h ) で収束する)。このとき次が成り立つ。
∫ − π / h π / h ∣ v ^ ( ξ ) ∣ 2 d ξ = 2 π ∥ v ∥ h 2 \displaystyle\int_{-\pi/h}^{\pi/h}|\hat v(\xi)|^2d\xi = 2\pi\|v\|_h^2 ∫ − π / h π / h ∣ v ^ ( ξ ) ∣ 2 d ξ = 2 π ∥ v ∥ h 2 で、v ↦ ( 2 π ) − 1 / 2 v ^ v \mapsto (2\pi)^{-1/2}\hat v v ↦ ( 2 π ) − 1/2 v ^ は ℓ 2 ( h Z ) \ell^2(h\mathbb{Z}) ℓ 2 ( h Z ) から L 2 ( − π / h , π / h ) L^2(-\pi/h, \pi/h) L 2 ( − π / h , π / h ) の上へのユニタリ写像である。
平行移動 ( S v ) j = v j + 1 (Sv)_j = v_{j+1} ( S v ) j = v j + 1 について S v ^ ( ξ ) = e i h ξ v ^ ( ξ ) \widehat{Sv}(\xi) = e^{ih\xi}\hat v(\xi) S v ( ξ ) = e ih ξ v ^ ( ξ ) 。
証明(補題 5.1) 定理 5.1[フーリエ級数] から、F ↦ ( F ^ ( n ) ) n ∈ Z F \mapsto (\hat F(n))_{n\in\mathbb{Z}} F ↦ ( F ^ ( n ) ) n ∈ Z は L 2 ( T ) L^2(\mathbb{T}) L 2 ( T ) (内積は 1 2 π ∫ − π π F ˉ G d θ \frac{1}{2\pi}\int_{-\pi}^{\pi}\bar FG\,d\theta 2 π 1 ∫ − π π F ˉ G d θ )から ℓ 2 ( Z ) \ell^2(\mathbb{Z}) ℓ 2 ( Z ) の上へのユニタリ写像で、S N F → F S_NF \to F S N F → F が L 2 L^2 L 2 で成り立ちます。Fourier 係数は 定義 2.1[フーリエ級数] のものです。
1. v ∈ ℓ 2 ( h Z ) v \in \ell^2(h\mathbb{Z}) v ∈ ℓ 2 ( h Z ) に対し、上への写像であることから F ^ ( n ) = v − n \hat F(n) = v_{-n} F ^ ( n ) = v − n (n ∈ Z n \in \mathbb{Z} n ∈ Z )となる F ∈ L 2 ( T ) F \in L^2(\mathbb{T}) F ∈ L 2 ( T ) がただ 1 つあり、F = lim N ∑ ∣ n ∣ ≤ N v − n e i n θ = ∑ j v j e − i j θ F = \lim_N\sum_{|n|\le N}v_{-n}e^{in\theta} = \sum_jv_je^{-ij\theta} F = lim N ∑ ∣ n ∣ ≤ N v − n e in θ = ∑ j v j e − ij θ (L 2 L^2 L 2 収束)、1 2 π ∫ − π π ∣ F ∣ 2 d θ = ∑ j ∣ v j ∣ 2 \frac{1}{2\pi}\int_{-\pi}^{\pi}|F|^2d\theta = \sum_j|v_j|^2 2 π 1 ∫ − π π ∣ F ∣ 2 d θ = ∑ j ∣ v j ∣ 2 です。x j ξ = j ⋅ h ξ x_j\xi = j\cdot h\xi x j ξ = j ⋅ h ξ なので v ^ ( ξ ) = h F ( h ξ ) \hat v(\xi) = hF(h\xi) v ^ ( ξ ) = h F ( h ξ ) で、変数変換 θ = h ξ \theta = h\xi θ = h ξ により
∫ − π / h π / h ∣ v ^ ( ξ ) ∣ 2 d ξ = h 2 ∫ − π π ∣ F ( θ ) ∣ 2 d θ h = 2 π h ∑ j ∣ v j ∣ 2 = 2 π ∥ v ∥ h 2 \int_{-\pi/h}^{\pi/h}|\hat v(\xi)|^2d\xi = h^2\int_{-\pi}^{\pi}|F(\theta)|^2\frac{d\theta}{h} = 2\pi h\sum_j|v_j|^2 = 2\pi\|v\|_h^2 ∫ − π / h π / h ∣ v ^ ( ξ ) ∣ 2 d ξ = h 2 ∫ − π π ∣ F ( θ ) ∣ 2 h d θ = 2 π h j ∑ ∣ v j ∣ 2 = 2 π ∥ v ∥ h 2 です。上への写像であることを示します。G ∈ L 2 ( − π / h , π / h ) G \in L^2(-\pi/h, \pi/h) G ∈ L 2 ( − π / h , π / h ) に対し F ( θ ) = G ( θ / h ) / h F(\theta) = G(\theta/h)/h F ( θ ) = G ( θ / h ) / h は L 2 ( T ) L^2(\mathbb{T}) L 2 ( T ) に属し、v j = F ^ ( − j ) v_j = \hat F(-j) v j = F ^ ( − j ) とおけば v ∈ ℓ 2 ( h Z ) v \in \ell^2(h\mathbb{Z}) v ∈ ℓ 2 ( h Z ) で v ^ = h F ( h ⋅ ) = G \hat v = hF(h\,\cdot) = G v ^ = h F ( h ⋅ ) = G です。ノルムを保つ上への線形写像なのでユニタリです。
2. S v Sv S v に対応する関数を F S F_S F S とすると F ^ S ( n ) = ( S v ) − n = v − n + 1 = F ^ ( n − 1 ) \hat F_S(n) = (Sv)_{-n} = v_{-n+1} = \hat F(n-1) F ^ S ( n ) = ( S v ) − n = v − n + 1 = F ^ ( n − 1 ) です。一方 e i θ F e^{i\theta}F e i θ F の Fourier 係数は 1 2 π ∫ F ( θ ) e i θ e − i n θ d θ = F ^ ( n − 1 ) \frac{1}{2\pi}\int F(\theta)e^{i\theta}e^{-in\theta}d\theta = \hat F(n-1) 2 π 1 ∫ F ( θ ) e i θ e − in θ d θ = F ^ ( n − 1 ) です。Fourier 係数が一致するので F S = e i θ F F_S = e^{i\theta}F F S = e i θ F で、S v ^ ( ξ ) = h F S ( h ξ ) = e i h ξ v ^ ( ξ ) \widehat{Sv}(\xi) = hF_S(h\xi) = e^{ih\xi}\hat v(\xi) S v ( ξ ) = h F S ( h ξ ) = e ih ξ v ^ ( ξ ) です。
∎
この補題の中身は、格子上の数列を周期 2 π 2\pi 2 π の関数の Fourier 係数とみなせば、Fourier 級数 の Parseval の等式と同じだ、ということです。変数変換が現れるのは、格子幅 h h h に合わせて θ = h ξ \theta = h\xi θ = h ξ と目盛りを取り直すためです。したがって、v ↦ v ^ v \mapsto \hat v v ↦ v ^ は長さを変えない対応(ユニタリ写像 )で、スキームの冪のノルムを波数ごとの掛け算で計算できます。
波数 ξ \xi ξ が [ − π / h , π / h ] [-\pi/h, \pi/h] [ − π / h , π / h ] に限られるのは、格子の上では e i x j ξ e^{ix_j\xi} e i x j ξ と e i x j ( ξ + 2 π / h ) e^{ix_j(\xi + 2\pi/h)} e i x j ( ξ + 2 π / h ) が区別できないからです。θ = h ξ ∈ [ − π , π ] \theta = h\xi \in [-\pi, \pi] θ = h ξ ∈ [ − π , π ] は 1 格子あたりの位相の進みで、θ = ± π \theta = \pm\pi θ = ± π が格子で表せる最も細かい振動 v j = ( − 1 ) j v_j = (-1)^j v j = ( − 1 ) j にあたります。
定義 5.2 (定数係数のスキームと増幅因子 ) ↗
整数 l , r ≥ 0 l, r \ge 0 l , r ≥ 0 と、格子点 j j j によらない複素数 a k = a k ( Δ t , h ) a_k = a_k(\Delta t, h) a k = a k ( Δ t , h ) (− l ≤ k ≤ r -l \le k \le r − l ≤ k ≤ r )で
( C v ) j = ∑ k = − l r a k v j + k (Cv)_j = \sum_{k=-l}^{r}a_kv_{j+k} ( C v ) j = k = − l ∑ r a k v j + k と書けるスキームを定数係数の陽的スキーム といい、g ( θ ) = ∑ k = − l r a k e i k θ g(\theta) = \sum_{k=-l}^{r}a_ke^{ik\theta} g ( θ ) = ∑ k = − l r a k e ik θ (θ ∈ [ − π , π ] \theta \in [-\pi, \pi] θ ∈ [ − π , π ] )をその増幅因子 (シンボル)という。g g g も Δ t \Delta t Δ t と h h h によるので、必要なときは g ( θ , Δ t ) g(\theta, \Delta t) g ( θ , Δ t ) と書く。
v j = e i j θ v_j = e^{ij\theta} v j = e ij θ を代入すると ( C v ) j = ∑ k a k e i ( j + k ) θ = g ( θ ) v j (Cv)_j = \sum_ka_ke^{i(j+k)\theta} = g(\theta)v_j ( C v ) j = ∑ k a k e i ( j + k ) θ = g ( θ ) v j なので、g ( θ ) g(\theta) g ( θ ) は波数 θ / h \theta/h θ / h の波が 1 ステップで何倍になるかを表します。補題 5.1 の 2 から C = ∑ k a k S k C = \sum_ka_kS^k C = ∑ k a k S k について C v ^ ( ξ ) = g ( h ξ ) v ^ ( ξ ) \widehat{Cv}(\xi) = g(h\xi)\hat v(\xi) C v ( ξ ) = g ( h ξ ) v ^ ( ξ ) です。
補題 5.3 (掛け算作用素のノルム ) ✓
定数係数の陽的スキーム C C C は ℓ 2 ( h Z ) \ell^2(h\mathbb{Z}) ℓ 2 ( h Z ) 上の有界作用素で、すべての n ≥ 0 n \ge 0 n ≥ 0 について ∥ C n ∥ = ( max θ ∈ [ − π , π ] ∣ g ( θ ) ∣ ) n \|C^n\| = \bigl(\max_{\theta\in[-\pi,\pi]}|g(\theta)|\bigr)^n ∥ C n ∥ = ( max θ ∈ [ − π , π ] ∣ g ( θ ) ∣ ) n である。周期 1 1 1 の格子(h = 1 / N h = 1/N h = 1/ N 、空間 C N \mathbb{C}^N C N 、添字は N N N を法とする)では、θ m = 2 π m / N \theta_m = 2\pi m/N θ m = 2 π m / N として ∥ C n ∥ = ( max 0 ≤ m < N ∣ g ( θ m ) ∣ ) n ≤ ( max θ ∣ g ( θ ) ∣ ) n \|C^n\| = \bigl(\max_{0\le m<N}|g(\theta_m)|\bigr)^n \le \bigl(\max_\theta|g(\theta)|\bigr)^n ∥ C n ∥ = ( max 0 ≤ m < N ∣ g ( θ m ) ∣ ) n ≤ ( max θ ∣ g ( θ ) ∣ ) n である。
証明(補題 5.3) G = max θ ∣ g ( θ ) ∣ G = \max_\theta|g(\theta)| G = max θ ∣ g ( θ ) ∣ とおきます(g g g は連続で [ − π , π ] [-\pi,\pi] [ − π , π ] はコンパクトなので最大値があります)。
ℓ 2 ( h Z ) \ell^2(h\mathbb{Z}) ℓ 2 ( h Z ) の場合. C n v ^ = g ( h ξ ) n v ^ \widehat{C^nv} = g(h\xi)^n\hat v C n v = g ( h ξ ) n v ^ なので、補題 5.1 の 1 から
2 π ∥ C n v ∥ h 2 = ∫ − π / h π / h ∣ g ( h ξ ) ∣ 2 n ∣ v ^ ( ξ ) ∣ 2 d ξ ≤ G 2 n ⋅ 2 π ∥ v ∥ h 2 2\pi\|C^nv\|_h^2 = \int_{-\pi/h}^{\pi/h}|g(h\xi)|^{2n}|\hat v(\xi)|^2d\xi \le G^{2n}\cdot 2\pi\|v\|_h^2 2 π ∥ C n v ∥ h 2 = ∫ − π / h π / h ∣ g ( h ξ ) ∣ 2 n ∣ v ^ ( ξ ) ∣ 2 d ξ ≤ G 2 n ⋅ 2 π ∥ v ∥ h 2 で、∥ C n ∥ ≤ G n \|C^n\| \le G^n ∥ C n ∥ ≤ G n です。逆向きを示します。∣ g ( θ 0 ) ∣ = G |g(\theta_0)| = G ∣ g ( θ 0 ) ∣ = G となる θ 0 \theta_0 θ 0 をとり、ε > 0 \varepsilon > 0 ε > 0 に対し、g g g の連続性から ∣ θ − θ 0 ∣ < δ |\theta - \theta_0| < \delta ∣ θ − θ 0 ∣ < δ なら ∣ g ( θ ) ∣ > G − ε |g(\theta)| > G - \varepsilon ∣ g ( θ ) ∣ > G − ε となる δ > 0 \delta > 0 δ > 0 をとります。I = { ξ ∈ [ − π / h , π / h ] : ∣ h ξ − θ 0 ∣ < δ } I = \{\xi \in [-\pi/h, \pi/h] : |h\xi - \theta_0| < \delta\} I = { ξ ∈ [ − π / h , π / h ] : ∣ h ξ − θ 0 ∣ < δ } は長さが正の区間で、その定義関数 1 I 1_I 1 I は L 2 ( − π / h , π / h ) L^2(-\pi/h,\pi/h) L 2 ( − π / h , π / h ) に属するので、補題 5.1 の 1 から v ^ = 1 I \hat v = 1_I v ^ = 1 I となる v ∈ ℓ 2 ( h Z ) v \in \ell^2(h\mathbb{Z}) v ∈ ℓ 2 ( h Z ) があります。このとき
2 π ∥ C n v ∥ h 2 = ∫ I ∣ g ( h ξ ) ∣ 2 n d ξ ≥ ( G − ε ) 2 n ∫ I d ξ = ( G − ε ) 2 n ⋅ 2 π ∥ v ∥ h 2 2\pi\|C^nv\|_h^2 = \int_I|g(h\xi)|^{2n}d\xi \ge (G - \varepsilon)^{2n}\int_I d\xi = (G-\varepsilon)^{2n}\cdot2\pi\|v\|_h^2 2 π ∥ C n v ∥ h 2 = ∫ I ∣ g ( h ξ ) ∣ 2 n d ξ ≥ ( G − ε ) 2 n ∫ I d ξ = ( G − ε ) 2 n ⋅ 2 π ∥ v ∥ h 2 (G − ε < 0 G - \varepsilon < 0 G − ε < 0 のときは自明)なので ∥ C n ∥ ≥ ( G − ε ) n \|C^n\| \ge (G - \varepsilon)^n ∥ C n ∥ ≥ ( G − ε ) n で、ε → 0 \varepsilon \to 0 ε → 0 として ∥ C n ∥ ≥ G n \|C^n\| \ge G^n ∥ C n ∥ ≥ G n です。
周期格子の場合. φ j ( m ) = e i j θ m \varphi^{(m)}_j = e^{ij\theta_m} φ j ( m ) = e ij θ m (0 ≤ m < N 0 \le m < N 0 ≤ m < N )とおくと、m ≠ m ′ m \ne m' m = m ′ のとき ω = e i ( θ m − θ m ′ ) ≠ 1 \omega = e^{i(\theta_m - \theta_{m'})} \ne 1 ω = e i ( θ m − θ m ′ ) = 1 、ω N = 1 \omega^N = 1 ω N = 1 なので
h ∑ j = 0 N − 1 φ j ( m ′ ) ‾ φ j ( m ) = h ∑ j = 0 N − 1 ω j = h ω N − 1 ω − 1 = 0 h\sum_{j=0}^{N-1}\overline{\varphi^{(m')}_j}\varphi^{(m)}_j = h\sum_{j=0}^{N-1}\omega^j = h\,\frac{\omega^N - 1}{\omega - 1} = 0 h j = 0 ∑ N − 1 φ j ( m ′ ) φ j ( m ) = h j = 0 ∑ N − 1 ω j = h ω − 1 ω N − 1 = 0 で、m = m ′ m = m' m = m ′ のときは h N = 1 hN = 1 h N = 1 です。したがって { φ ( m ) } \{\varphi^{(m)}\} { φ ( m ) } は内積 h ∑ j v ˉ j w j h\sum_j\bar v_jw_j h ∑ j v ˉ j w j についての C N \mathbb{C}^N C N の正規直交基底です。e i ( j + k ) θ m e^{i(j+k)\theta_m} e i ( j + k ) θ m は j + k j + k j + k について周期 N N N なので C φ ( m ) = g ( θ m ) φ ( m ) C\varphi^{(m)} = g(\theta_m)\varphi^{(m)} C φ ( m ) = g ( θ m ) φ ( m ) です。v = ∑ m c m φ ( m ) v = \sum_mc_m\varphi^{(m)} v = ∑ m c m φ ( m ) と展開すると ∥ C n v ∥ h 2 = ∑ m ∣ g ( θ m ) ∣ 2 n ∣ c m ∣ 2 ≤ max m ∣ g ( θ m ) ∣ 2 n ∥ v ∥ h 2 \|C^nv\|_h^2 = \sum_m|g(\theta_m)|^{2n}|c_m|^2 \le \max_m|g(\theta_m)|^{2n}\|v\|_h^2 ∥ C n v ∥ h 2 = ∑ m ∣ g ( θ m ) ∣ 2 n ∣ c m ∣ 2 ≤ max m ∣ g ( θ m ) ∣ 2 n ∥ v ∥ h 2 で、最大を与える m m m の φ ( m ) \varphi^{(m)} φ ( m ) で等号になります。
∎
補題 5.4 (冪の有界性から 1 ステップの評価へ ) ✓
K ≥ 1 K \ge 1 K ≥ 1 、0 < Δ t 0 ≤ T 0 < \Delta t_0 \le T 0 < Δ t 0 ≤ T とする。0 < Δ t ≤ Δ t 0 0 < \Delta t \le \Delta t_0 0 < Δ t ≤ Δ t 0 と ρ ≥ 0 \rho \ge 0 ρ ≥ 0 が、n Δ t ≤ T n\Delta t \le T n Δ t ≤ T を満たすすべての整数 n ≥ 0 n \ge 0 n ≥ 0 について ρ n ≤ K \rho^n \le K ρ n ≤ K を満たすならば、ρ ≤ 1 + C 0 Δ t \rho \le 1 + C_0\Delta t ρ ≤ 1 + C 0 Δ t である。ここで C 0 = ( K 2 Δ t 0 / T − 1 ) / Δ t 0 C_0 = (K^{2\Delta t_0/T} - 1)/\Delta t_0 C 0 = ( K 2Δ t 0 / T − 1 ) /Δ t 0 は Δ t \Delta t Δ t と ρ \rho ρ によらない。
証明(補題 5.4) n = ⌊ T / Δ t ⌋ n = \lfloor T/\Delta t\rfloor n = ⌊ T /Δ t ⌋ とすると、T / Δ t ≥ 1 T/\Delta t \ge 1 T /Δ t ≥ 1 なので n ≥ 1 n \ge 1 n ≥ 1 で、y ≥ 1 y \ge 1 y ≥ 1 のとき ⌊ y ⌋ ≥ y / 2 \lfloor y\rfloor \ge y/2 ⌊ y ⌋ ≥ y /2 であること(1 ≤ y < 2 1 \le y < 2 1 ≤ y < 2 では ⌊ y ⌋ = 1 ≥ y / 2 \lfloor y\rfloor = 1 \ge y/2 ⌊ y ⌋ = 1 ≥ y /2 、y ≥ 2 y \ge 2 y ≥ 2 では ⌊ y ⌋ ≥ y − 1 ≥ y / 2 \lfloor y\rfloor \ge y - 1 \ge y/2 ⌊ y ⌋ ≥ y − 1 ≥ y /2 )から n ≥ T / ( 2 Δ t ) n \ge T/(2\Delta t) n ≥ T / ( 2Δ t ) です。ρ n ≤ K \rho^n \le K ρ n ≤ K と K ≥ 1 K \ge 1 K ≥ 1 から ρ ≤ K 1 / n ≤ K 2 Δ t / T = e c Δ t \rho \le K^{1/n} \le K^{2\Delta t/T} = e^{c\Delta t} ρ ≤ K 1/ n ≤ K 2Δ t / T = e c Δ t (c = 2 ln K / T ≥ 0 c = 2\ln K/T \ge 0 c = 2 ln K / T ≥ 0 )です。関数 s ↦ e c s s \mapsto e^{cs} s ↦ e cs は凸なので、区間 [ 0 , Δ t 0 ] [0, \Delta t_0] [ 0 , Δ t 0 ] では両端を結ぶ弦の下にあり、e c Δ t ≤ 1 + e c Δ t 0 − 1 Δ t 0 Δ t = 1 + C 0 Δ t e^{c\Delta t} \le 1 + \frac{e^{c\Delta t_0} - 1}{\Delta t_0}\Delta t = 1 + C_0\Delta t e c Δ t ≤ 1 + Δ t 0 e c Δ t 0 − 1 Δ t = 1 + C 0 Δ t です。
∎
定理 5.5 (von Neumann の安定性条件 ) ✓
定数係数の陽的スキーム C ( Δ t ) C(\Delta t) C ( Δ t ) (0 < Δ t ≤ Δ t 0 ≤ T 0 < \Delta t \le \Delta t_0 \le T 0 < Δ t ≤ Δ t 0 ≤ T 、h = h ( Δ t ) h = h(\Delta t) h = h ( Δ t ) )について、次は同値である。
スキームは ℓ 2 ( h Z ) \ell^2(h\mathbb{Z}) ℓ 2 ( h Z ) で安定である。
定数 C 0 ≥ 0 C_0 \ge 0 C 0 ≥ 0 があって、すべての 0 < Δ t ≤ Δ t 0 0 < \Delta t \le \Delta t_0 0 < Δ t ≤ Δ t 0 で max θ ∈ [ − π , π ] ∣ g ( θ , Δ t ) ∣ ≤ 1 + C 0 Δ t \max_{\theta\in[-\pi,\pi]}|g(\theta, \Delta t)| \le 1 + C_0\Delta t max θ ∈ [ − π , π ] ∣ g ( θ , Δ t ) ∣ ≤ 1 + C 0 Δ t 。
特に、g g g が Δ t \Delta t Δ t によらないとき(係数 a k a_k a k が格子比だけで決まるとき)、安定であることと max θ ∣ g ( θ ) ∣ ≤ 1 \max_\theta|g(\theta)| \le 1 max θ ∣ g ( θ ) ∣ ≤ 1 は同値である。周期格子の上では、2 が成り立てば安定である。
証明(定理 5.5) G ( Δ t ) = max θ ∣ g ( θ , Δ t ) ∣ G(\Delta t) = \max_\theta|g(\theta, \Delta t)| G ( Δ t ) = max θ ∣ g ( θ , Δ t ) ∣ とおくと、補題 5.3 から ∥ C ( Δ t ) n ∥ = G ( Δ t ) n \|C(\Delta t)^n\| = G(\Delta t)^n ∥ C ( Δ t ) n ∥ = G ( Δ t ) n です。
2 ⇒ \Rightarrow ⇒ 1. n Δ t ≤ T n\Delta t \le T n Δ t ≤ T のとき ∥ C ( Δ t ) n ∥ ≤ ( 1 + C 0 Δ t ) n ≤ e C 0 n Δ t ≤ e C 0 T \|C(\Delta t)^n\| \le (1 + C_0\Delta t)^n \le e^{C_0n\Delta t} \le e^{C_0T} ∥ C ( Δ t ) n ∥ ≤ ( 1 + C 0 Δ t ) n ≤ e C 0 n Δ t ≤ e C 0 T です(1 + s ≤ e s 1 + s \le e^s 1 + s ≤ e s を使いました)。周期格子でも 補題 5.3 の不等式から同じ評価が成り立ちます。
1 ⇒ \Rightarrow ⇒ 2. 安定性の定数を K K K とします(n = 0 n = 0 n = 0 の場合から K ≥ 1 K \ge 1 K ≥ 1 )。n Δ t ≤ T n\Delta t \le T n Δ t ≤ T のとき G ( Δ t ) n = ∥ C ( Δ t ) n ∥ ≤ K G(\Delta t)^n = \|C(\Delta t)^n\| \le K G ( Δ t ) n = ∥ C ( Δ t ) n ∥ ≤ K なので、補題 5.4 から G ( Δ t ) ≤ 1 + C 0 Δ t G(\Delta t) \le 1 + C_0\Delta t G ( Δ t ) ≤ 1 + C 0 Δ t です。
g g g が Δ t \Delta t Δ t によらないとき. max ∣ g ∣ ≤ 1 \max|g| \le 1 max ∣ g ∣ ≤ 1 なら 2 が C 0 = 0 C_0 = 0 C 0 = 0 で成り立ちます。逆に 2 が成り立てば、Δ t → 0 \Delta t \to 0 Δ t → 0 として max ∣ g ∣ ≤ 1 \max|g| \le 1 max ∣ g ∣ ≤ 1 です。
∎
1 + C 0 Δ t 1 + C_0\Delta t 1 + C 0 Δ t の余裕は、u t = u u_t = u u t = u のように解そのものが指数的に増える方程式を扱うために必要です。解が増えない方程式(移流・拡散)では、∣ g ∣ ≤ 1 |g| \le 1 ∣ g ∣ ≤ 1 を条件にするのが普通です。
連立の方程式では、a k a_k a k が m m m 次の行列 A k A_k A k になり、増幅因子は増幅行列 G ( θ ) = ∑ k A k e i k θ G(\theta) = \sum_kA_ke^{ik\theta} G ( θ ) = ∑ k A k e ik θ になります。格子関数は C m \mathbb{C}^m C m に値をとり、ノルムは ∥ v ∥ h 2 = h ∑ j ∣ v j ∣ 2 \|v\|_h^2 = h\sum_j|v_j|^2 ∥ v ∥ h 2 = h ∑ j ∣ v j ∣ 2 (∣ ⋅ ∣ |\cdot| ∣ ⋅ ∣ は Euclid ノルム)、Fourier 変換は成分ごとにとります。補題 5.1 を成分ごとに使えば、C v ^ ( ξ ) = G ( h ξ ) v ^ ( ξ ) \widehat{Cv}(\xi) = G(h\xi)\hat v(\xi) C v ( ξ ) = G ( h ξ ) v ^ ( ξ ) と ∫ ∣ v ^ ∣ 2 d ξ = 2 π ∥ v ∥ h 2 \int|\hat v|^2d\xi = 2\pi\|v\|_h^2 ∫ ∣ v ^ ∣ 2 d ξ = 2 π ∥ v ∥ h 2 が成り立ちます。
補題 5.6 (増幅行列による下からの評価 ) ✓
( C v ) j = ∑ k = − l r A k v j + k (Cv)_j = \sum_{k=-l}^{r}A_kv_{j+k} ( C v ) j = ∑ k = − l r A k v j + k (A k ∈ M m ( C ) A_k \in M_m(\mathbb{C}) A k ∈ M m ( C ) )とし、G ( θ ) = ∑ k A k e i k θ G(\theta) = \sum_kA_ke^{ik\theta} G ( θ ) = ∑ k A k e ik θ とおく。任意の θ 0 ∈ [ − π , π ] \theta_0 \in [-\pi,\pi] θ 0 ∈ [ − π , π ] 、∣ w ∣ = 1 |w| = 1 ∣ w ∣ = 1 である w ∈ C m w \in \mathbb{C}^m w ∈ C m 、n ≥ 0 n \ge 0 n ≥ 0 について、ℓ 2 ( h Z ; C m ) \ell^2(h\mathbb{Z};\mathbb{C}^m) ℓ 2 ( h Z ; C m ) 上の作用素ノルムは ∥ C n ∥ ≥ ∣ G ( θ 0 ) n w ∣ \|C^n\| \ge |G(\theta_0)^nw| ∥ C n ∥ ≥ ∣ G ( θ 0 ) n w ∣ を満たす。
証明(補題 5.6) θ ↦ G ( θ ) n w \theta \mapsto G(\theta)^nw θ ↦ G ( θ ) n w は連続なので、ε > 0 \varepsilon > 0 ε > 0 に対し δ > 0 \delta > 0 δ > 0 があって、∣ θ − θ 0 ∣ < δ |\theta - \theta_0| < \delta ∣ θ − θ 0 ∣ < δ なら ∣ G ( θ ) n w ∣ > ∣ G ( θ 0 ) n w ∣ − ε |G(\theta)^nw| > |G(\theta_0)^nw| - \varepsilon ∣ G ( θ ) n w ∣ > ∣ G ( θ 0 ) n w ∣ − ε です。補題 5.3 の証明と同じ区間 I I I をとり、v ^ = 1 I w \hat v = 1_Iw v ^ = 1 I w となる v v v をとります(成分ごとに 補題 5.1 を使う)。C n v ^ ( ξ ) = G ( h ξ ) n w 1 I ( ξ ) \widehat{C^nv}(\xi) = G(h\xi)^nw\,1_I(\xi) C n v ( ξ ) = G ( h ξ ) n w 1 I ( ξ ) なので
2 π ∥ C n v ∥ h 2 = ∫ I ∣ G ( h ξ ) n w ∣ 2 d ξ ≥ ( ∣ G ( θ 0 ) n w ∣ − ε ) 2 ∫ I d ξ = ( ∣ G ( θ 0 ) n w ∣ − ε ) 2 ⋅ 2 π ∥ v ∥ h 2 2\pi\|C^nv\|_h^2 = \int_I|G(h\xi)^nw|^2d\xi \ge \bigl(|G(\theta_0)^nw| - \varepsilon\bigr)^2\int_Id\xi = \bigl(|G(\theta_0)^nw| - \varepsilon\bigr)^2\cdot2\pi\|v\|_h^2 2 π ∥ C n v ∥ h 2 = ∫ I ∣ G ( h ξ ) n w ∣ 2 d ξ ≥ ( ∣ G ( θ 0 ) n w ∣ − ε ) 2 ∫ I d ξ = ( ∣ G ( θ 0 ) n w ∣ − ε ) 2 ⋅ 2 π ∥ v ∥ h 2 (括弧の中が負のときは自明)です。ε → 0 \varepsilon \to 0 ε → 0 として結論を得ます。
∎
系 5.7 (連立のスキームの必要条件 ) ✓
補題 5.6 の連立のスキームが ℓ 2 \ell^2 ℓ 2 で安定(0 < Δ t ≤ Δ t 0 ≤ T 0 < \Delta t \le \Delta t_0 \le T 0 < Δ t ≤ Δ t 0 ≤ T )ならば、定数 C 0 C_0 C 0 があって、増幅行列のスペクトル半径(定義 5.1[行列のノルムと線形方程式の条件数] )は ρ ( G ( θ , Δ t ) ) ≤ 1 + C 0 Δ t \rho(G(\theta, \Delta t)) \le 1 + C_0\Delta t ρ ( G ( θ , Δ t )) ≤ 1 + C 0 Δ t (すべての θ \theta θ と Δ t \Delta t Δ t )を満たす。
証明(系 5.7) θ 0 \theta_0 θ 0 を固定し、G ( θ 0 ) G(\theta_0) G ( θ 0 ) の固有値 μ \mu μ で ∣ μ ∣ = ρ ( G ( θ 0 ) ) |\mu| = \rho(G(\theta_0)) ∣ μ ∣ = ρ ( G ( θ 0 )) となるものと、その固有ベクトル w w w (∣ w ∣ = 1 |w| = 1 ∣ w ∣ = 1 )をとります。G ( θ 0 ) n w = μ n w G(\theta_0)^nw = \mu^nw G ( θ 0 ) n w = μ n w なので、補題 5.6 と安定性から ρ ( G ( θ 0 ) ) n = ∣ μ ∣ n ≤ ∥ C n ∥ ≤ K \rho(G(\theta_0))^n = |\mu|^n \le \|C^n\| \le K ρ ( G ( θ 0 ) ) n = ∣ μ ∣ n ≤ ∥ C n ∥ ≤ K (n Δ t ≤ T n\Delta t \le T n Δ t ≤ T )です。補題 5.4 から ρ ( G ( θ 0 ) ) ≤ 1 + C 0 Δ t \rho(G(\theta_0)) \le 1 + C_0\Delta t ρ ( G ( θ 0 )) ≤ 1 + C 0 Δ t で、C 0 C_0 C 0 は θ 0 \theta_0 θ 0 によりません。
∎
スカラーの場合と違い、この条件は十分ではありません。定理 5.2[行列のノルムと線形方程式の条件数] のとおり ρ ( G ) ≤ ∥ G ∥ \rho(G) \le \|G\| ρ ( G ) ≤ ∥ G ∥ ですが、等号は一般には成り立たず、ρ ( G ) = 1 \rho(G) = 1 ρ ( G ) = 1 でも ∥ G n ∥ \|G^n\| ∥ G n ∥ が n n n とともに増えることがあるからです。
例 5.8 (スペクトル半径が 1 でも不安定な連立スキーム )
方程式 u t = 0 u_t = 0 u t = 0 、v t = 0 v_t = 0 v t = 0 (解は初期値のまま動かない)に対するスキーム
u j n + 1 = u j n + ( v j + 1 n − 2 v j n + v j − 1 n ) , v j n + 1 = v j n u^{n+1}_j = u^n_j + (v^n_{j+1} - 2v^n_j + v^n_{j-1}),\qquad v^{n+1}_j = v^n_j u j n + 1 = u j n + ( v j + 1 n − 2 v j n + v j − 1 n ) , v j n + 1 = v j n を、Δ t / h = λ \Delta t/h = \lambda Δ t / h = λ を固定して考えます。滑らかな解 ( u ( x ) , v ( x ) ) (u(x), v(x)) ( u ( x ) , v ( x )) を代入した残差は、第 1 式で − ( v ( x + h ) − 2 v ( x ) + v ( x − h ) ) / Δ t -(v(x+h) - 2v(x) + v(x-h))/\Delta t − ( v ( x + h ) − 2 v ( x ) + v ( x − h )) /Δ t です。Taylor の定理を 2 階の剰余まで使うと v ( x ± h ) = v ( x ) ± h v ′ ( x ) + h 2 2 v ′ ′ ( c ± ) v(x\pm h) = v(x) \pm hv'(x) + \frac{h^2}{2}v''(c_\pm) v ( x ± h ) = v ( x ) ± h v ′ ( x ) + 2 h 2 v ′′ ( c ± ) なので、残差の絶対値は h 2 sup ∣ v ′ ′ ∣ / Δ t = ( h / λ ) sup ∣ v ′ ′ ∣ h^2\sup|v''|/\Delta t = (h/\lambda)\sup|v''| h 2 sup ∣ v ′′ ∣/Δ t = ( h / λ ) sup ∣ v ′′ ∣ 以下です。したがって整合的です。増幅行列は
G ( θ ) = ( 1 2 cos θ − 2 0 1 ) , G ( θ ) n = ( 1 − 4 n sin 2 ( θ / 2 ) 0 1 ) G(\theta) = \begin{pmatrix}1 & 2\cos\theta - 2\\ 0 & 1\end{pmatrix},\qquad G(\theta)^n = \begin{pmatrix}1 & -4n\sin^2(\theta/2)\\ 0 & 1\end{pmatrix} G ( θ ) = ( 1 0 2 cos θ − 2 1 ) , G ( θ ) n = ( 1 0 − 4 n sin 2 ( θ /2 ) 1 ) で、固有値は 1 1 1 だけなので ρ ( G ( θ ) ) = 1 \rho(G(\theta)) = 1 ρ ( G ( θ )) = 1 です。ところが θ 0 = π \theta_0 = \pi θ 0 = π 、w = ( 0 , 1 ) T w = (0, 1)^{\mathsf{T}} w = ( 0 , 1 ) T とすると ∣ G ( π ) n w ∣ = 16 n 2 + 1 ≥ 4 n |G(\pi)^nw| = \sqrt{16n^2 + 1} \ge 4n ∣ G ( π ) n w ∣ = 16 n 2 + 1 ≥ 4 n で、補題 5.6 から ∥ C n ∥ ≥ 4 n \|C^n\| \ge 4n ∥ C n ∥ ≥ 4 n です。n = ⌊ T / Δ t ⌋ n = \lfloor T/\Delta t\rfloor n = ⌊ T /Δ t ⌋ は Δ t → 0 \Delta t \to 0 Δ t → 0 で限りなく大きくなるので、このスキームは不安定です。G ( θ ) G(\theta) G ( θ ) が正規行列でない(対角化できない)ことが原因です。
ここからは移流方程式 u t + a u x = 0 u_t + au_x = 0 u t + a u x = 0 (a ∈ R a \in \mathbb{R} a ∈ R は定数)を扱います。
補題 6.1 (移流方程式の解 ) ✓
u 0 ∈ C 1 ( R ) u_0 \in C^1(\mathbb{R}) u 0 ∈ C 1 ( R ) とする。u ( x , t ) = u 0 ( x − a t ) u(x,t) = u_0(x - at) u ( x , t ) = u 0 ( x − a t ) は、u t + a u x = 0 u_t + au_x = 0 u t + a u x = 0 (x ∈ R x \in \mathbb{R} x ∈ R 、t ≥ 0 t \ge 0 t ≥ 0 )、u ( x , 0 ) = u 0 ( x ) u(x, 0) = u_0(x) u ( x , 0 ) = u 0 ( x ) を満たすただ 1 つの C 1 C^1 C 1 級の関数である。u 0 ∈ C m u_0 \in C^m u 0 ∈ C m なら ∂ t i ∂ x j u = ( − a ) i u 0 ( i + j ) ( x − a t ) \partial_t^i\partial_x^ju = (-a)^iu_0^{(i+j)}(x - at) ∂ t i ∂ x j u = ( − a ) i u 0 ( i + j ) ( x − a t ) (i + j ≤ m i + j \le m i + j ≤ m )である。
証明(補題 6.1) 連鎖律から ∂ t i ∂ x j [ u 0 ( x − a t ) ] = ( − a ) i u 0 ( i + j ) ( x − a t ) \partial_t^i\partial_x^j[u_0(x - at)] = (-a)^iu_0^{(i+j)}(x-at) ∂ t i ∂ x j [ u 0 ( x − a t )] = ( − a ) i u 0 ( i + j ) ( x − a t ) で、特に u t + a u x = − a u 0 ′ + a u 0 ′ = 0 u_t + au_x = -au_0' + au_0' = 0 u t + a u x = − a u 0 ′ + a u 0 ′ = 0 、u ( x , 0 ) = u 0 ( x ) u(x,0) = u_0(x) u ( x , 0 ) = u 0 ( x ) です。一意性を示します。u u u を C 1 C^1 C 1 級の解とし、x 0 ∈ R x_0 \in \mathbb{R} x 0 ∈ R を固定して ϕ ( t ) = u ( x 0 + a t , t ) \phi(t) = u(x_0 + at, t) ϕ ( t ) = u ( x 0 + a t , t ) とおくと、ϕ ′ ( t ) = a u x + u t = 0 \phi'(t) = au_x + u_t = 0 ϕ ′ ( t ) = a u x + u t = 0 なので ϕ ( t ) = ϕ ( 0 ) = u 0 ( x 0 ) \phi(t) = \phi(0) = u_0(x_0) ϕ ( t ) = ϕ ( 0 ) = u 0 ( x 0 ) です。x = x 0 + a t x = x_0 + at x = x 0 + a t と書き直せば u ( x , t ) = u 0 ( x − a t ) u(x,t) = u_0(x - at) u ( x , t ) = u 0 ( x − a t ) です。
∎
直線 x = x 0 + a t x = x_0 + at x = x 0 + a t が特性曲線 で、解はその上で一定です。一般の準線形 1 階方程式での同じ構成が 定理 6.1[安定性・力学系・特性曲線法] です。
定義 6.2 (依存領域と CFL 数 ) ↗
移流方程式の解の点 ( x , t ) (x,t) ( x , t ) での値は、初期値の 1 点 x − a t x - at x − a t での値だけで決まる。この点(の集合 { x − a t } \{x - at\} { x − a t } )を ( x , t ) (x,t) ( x , t ) の依存領域 という。定数係数の陽的スキーム u j n + 1 = ∑ k = − l r a k u j + k n u^{n+1}_j = \sum_{k=-l}^{r}a_ku^n_{j+k} u j n + 1 = ∑ k = − l r a k u j + k n では、u j n u^n_j u j n は u j − n l 0 , … , u j + n r 0 u^0_{j-nl}, \ldots, u^0_{j+nr} u j − n l 0 , … , u j + n r 0 だけで決まる。区間 [ x j − n l h , x j + n r h ] [x_j - nlh,\ x_j + nrh] [ x j − n l h , x j + n r h ] を ( x j , t n ) (x_j, t_n) ( x j , t n ) の数値的な依存領域 という。λ = Δ t / h \lambda = \Delta t/h λ = Δ t / h を格子比、ν = a Δ t / h = a λ \nu = a\Delta t/h = a\lambda ν = a Δ t / h = aλ を CFL 数 (Courant 数)という。
λ \lambda λ を固定すると n h = t n / λ nh = t_n/\lambda nh = t n / λ なので、数値的な依存領域は [ x − l t / λ , x + r t / λ ] [x - lt/\lambda,\ x + rt/\lambda] [ x − l t / λ , x + r t / λ ] で、格子を細かくしても変わりません。
(x, t) (x, t) x − at x − at x − t/λ x + t/λ x − t/λ x + t/λ |ν| ≤ 1(ν = 0.6) |ν| > 1(ν = 1.4) 3 点スキーム(l = r = 1)の数値的な依存領域(三角形の底辺)と特性曲線。左は |ν| ≤ 1 で、特性曲線の足が底辺の中にある。右は |ν| > 1 で、足が底辺の外に出る。右の場合、足の近くの初期値を変えても数値解は変わらないので、収束しえない。
定理 6.3 (Courant–Friedrichs–Lewy の条件 ) ✓
a ∈ R a \in \mathbb{R} a ∈ R 、λ > 0 \lambda > 0 λ > 0 とし、移流方程式 u t + a u x = 0 u_t + au_x = 0 u t + a u x = 0 に対する定数係数の陽的スキーム u j n + 1 = ∑ k = − l r a k u j + k n u^{n+1}_j = \sum_{k=-l}^{r}a_ku^n_{j+k} u j n + 1 = ∑ k = − l r a k u j + k n を、Δ t = 1 / n \Delta t = 1/n Δ t = 1/ n 、h = Δ t / λ h = \Delta t/\lambda h = Δ t / λ 、u j 0 = u 0 ( x j ) u^0_j = u_0(x_j) u j 0 = u 0 ( x j ) で考える(係数 a k a_k a k は任意で、n n n によってもよい)。− a λ ∉ [ − l , r ] -a\lambda \notin [-l, r] − aλ ∈ / [ − l , r ] 、すなわち点 ( 0 , 1 ) (0, 1) ( 0 , 1 ) の依存領域が数値的な依存領域に含まれないならば、C 4 C^4 C 4 級で台がコンパクトな u 0 u_0 u 0 と定数 c > 0 c > 0 c > 0 があって、すべての n ≥ 1 n \ge 1 n ≥ 1 について
u 0 n = 0 , u ( 0 , 1 ) ≥ c , ( h ∑ j ∣ u ( x j , 1 ) − u j n ∣ 2 ) 1 / 2 ≥ c u^n_0 = 0,\qquad u(0, 1) \ge c,\qquad \Bigl(h\sum_j|u(x_j, 1) - u^n_j|^2\Bigr)^{1/2} \ge c u 0 n = 0 , u ( 0 , 1 ) ≥ c , ( h j ∑ ∣ u ( x j , 1 ) − u j n ∣ 2 ) 1/2 ≥ c が成り立つ。したがって、スキームが収束するには − l ≤ − a λ ≤ r -l \le -a\lambda \le r − l ≤ − aλ ≤ r が必要である。3 点スキーム(l = r = 1 l = r = 1 l = r = 1 )では、これは ∣ ν ∣ = ∣ a ∣ Δ t / h ≤ 1 |\nu| = |a|\Delta t/h \le 1 ∣ ν ∣ = ∣ a ∣Δ t / h ≤ 1 である。
証明(定理 6.3) J = [ − l / λ , r / λ ] J = [-l/\lambda,\ r/\lambda] J = [ − l / λ , r / λ ] とおきます。仮定から − a ∉ J -a \notin J − a ∈ / J で、J J J は閉区間なので d = d i s t ( − a , J ) > 0 d = \mathrm{dist}(-a, J) > 0 d = dist ( − a , J ) > 0 です。φ ( s ) = ( 1 − s 2 ) 5 \varphi(s) = (1 - s^2)^5 φ ( s ) = ( 1 − s 2 ) 5 (∣ s ∣ < 1 |s| < 1 ∣ s ∣ < 1 )、φ ( s ) = 0 \varphi(s) = 0 φ ( s ) = 0 (∣ s ∣ ≥ 1 |s| \ge 1 ∣ s ∣ ≥ 1 )とおくと、φ \varphi φ は C 4 C^4 C 4 級(s = ± 1 s = \pm1 s = ± 1 で 4 階までの導関数が 0 0 0 につながる)で、∣ s ∣ ≤ 1 / 2 |s| \le 1/2 ∣ s ∣ ≤ 1/2 で φ ( s ) ≥ ( 3 / 4 ) 5 \varphi(s) \ge (3/4)^5 φ ( s ) ≥ ( 3/4 ) 5 です。u 0 ( x ) = φ ( 3 ( x + a ) / d ) u_0(x) = \varphi\bigl(3(x + a)/d\bigr) u 0 ( x ) = φ ( 3 ( x + a ) / d ) とおくと、u 0 u_0 u 0 の台は [ − a − d / 3 , − a + d / 3 ] [-a - d/3,\ -a + d/3] [ − a − d /3 , − a + d /3 ] で、∣ x + a ∣ ≤ d / 6 |x + a| \le d/6 ∣ x + a ∣ ≤ d /6 で u 0 ( x ) ≥ ( 3 / 4 ) 5 u_0(x) \ge (3/4)^5 u 0 ( x ) ≥ ( 3/4 ) 5 です。
数値解. ∣ x j ∣ ≤ d / 6 |x_j| \le d/6 ∣ x j ∣ ≤ d /6 である j j j を考えます。帰納法で、u j n u^n_j u j n は u j + k 0 u^0_{j+k} u j + k 0 (− n l ≤ k ≤ n r -nl \le k \le nr − n l ≤ k ≤ n r )の一次結合です(n = 0 n = 0 n = 0 は自明で、u j n + 1 = ∑ k a k u j + k n u^{n+1}_j = \sum_ka_ku^n_{j+k} u j n + 1 = ∑ k a k u j + k n から添字の範囲が左に l l l 、右に r r r 広がります)。n h = 1 / λ nh = 1/\lambda nh = 1/ λ なので、これらの格子点 x j + k x_{j+k} x j + k は [ x j − l / λ , x j + r / λ ] [x_j - l/\lambda,\ x_j + r/\lambda] [ x j − l / λ , x j + r / λ ] に入り、この区間の点は J J J からの距離が d / 6 d/6 d /6 以下です。− a -a − a と J J J の距離は d d d なので、これらの点と − a -a − a の距離は 5 d / 6 > d / 3 5d/6 > d/3 5 d /6 > d /3 以上で、u 0 u_0 u 0 の台の外です。したがって u j + k 0 = 0 u^0_{j+k} = 0 u j + k 0 = 0 で、u j n = 0 u^n_j = 0 u j n = 0 です。特に u 0 n = 0 u^n_0 = 0 u 0 n = 0 です。
厳密解. 補題 6.1 から u ( x , 1 ) = u 0 ( x − a ) u(x, 1) = u_0(x - a) u ( x , 1 ) = u 0 ( x − a ) で、∣ x ∣ ≤ d / 6 |x| \le d/6 ∣ x ∣ ≤ d /6 なら u ( x , 1 ) ≥ ( 3 / 4 ) 5 u(x,1) \ge (3/4)^5 u ( x , 1 ) ≥ ( 3/4 ) 5 です。
ℓ 2 \ell^2 ℓ 2 での誤差. ∣ x j ∣ ≤ d / 6 |x_j| \le d/6 ∣ x j ∣ ≤ d /6 である j j j は 2 ⌊ d / ( 6 h ) ⌋ + 1 ≥ d / ( 6 h ) 2\lfloor d/(6h)\rfloor + 1 \ge d/(6h) 2 ⌊ d / ( 6 h )⌋ + 1 ≥ d / ( 6 h ) 個あるので(y ≥ 0 y \ge 0 y ≥ 0 のとき 2 ⌊ y ⌋ + 1 ≥ y 2\lfloor y\rfloor + 1 \ge y 2 ⌊ y ⌋ + 1 ≥ y )、
h ∑ j ∣ u ( x j , 1 ) − u j n ∣ 2 ≥ h ⋅ d 6 h ⋅ ( 3 4 ) 10 = d 6 ( 3 4 ) 10 h\sum_j|u(x_j,1) - u^n_j|^2 \ge h\cdot\frac{d}{6h}\cdot\Bigl(\frac34\Bigr)^{10} = \frac{d}{6}\Bigl(\frac34\Bigr)^{10} h j ∑ ∣ u ( x j , 1 ) − u j n ∣ 2 ≥ h ⋅ 6 h d ⋅ ( 4 3 ) 10 = 6 d ( 4 3 ) 10 です。c = min ( ( 3 / 4 ) 5 , ( 3 / 4 ) 5 d / 6 ) c = \min\bigl((3/4)^5,\ (3/4)^5\sqrt{d/6}\bigr) c = min ( ( 3/4 ) 5 , ( 3/4 ) 5 d /6 ) とすれば主張が成り立ちます。Δ t = 1 / n → 0 \Delta t = 1/n \to 0 Δ t = 1/ n → 0 でも誤差が 0 0 0 に近づかないので、収束しません。
∎
CFL 条件は、スキームの係数を一切使わずに、情報の伝わる範囲だけから出る必要条件です。波動方程式 u t t = c 2 u x x u_{tt} = c^2u_{xx} u tt = c 2 u xx では依存領域が区間 [ x − c t , x + c t ] [x - ct, x + ct] [ x − c t , x + c t ] になり(定理 5.3[波動方程式] の有限伝播速度)、同じ議論で c Δ t / h ≤ 1 c\Delta t/h \le 1 c Δ t / h ≤ 1 が必要になります。一方、熱方程式は依存領域が全空間なので、陽的スキームでは Δ t / h → 0 \Delta t/h \to 0 Δ t / h → 0 が必要です(次章の Δ t ≤ h 2 / 2 \Delta t \le h^2/2 Δ t ≤ h 2 /2 はこれを満たします)。陰的スキームは、1 ステップで全格子点の値が結びつくので、数値的な依存領域が全空間になり、CFL 条件による制限を受けません。
CFL 条件は十分条件ではありません。次節で見るとおり、前進時間・中心空間のスキームは ∣ ν ∣ ≤ 1 |\nu| \le 1 ∣ ν ∣ ≤ 1 でも不安定です。
u t + a u x = 0 u_t + au_x = 0 u t + a u x = 0 の代表的な 3 点スキームを、CFL 数 ν = a Δ t / h \nu = a\Delta t/h ν = a Δ t / h を使って書きます。
名前 u j n + 1 = u^{n+1}_j = u j n + 1 = 風上差分(a > 0 a > 0 a > 0 ) u j n − ν ( u j n − u j − 1 n ) u^n_j - \nu(u^n_j - u^n_{j-1}) u j n − ν ( u j n − u j − 1 n ) Lax–Friedrichs 1 2 ( u j + 1 n + u j − 1 n ) − ν 2 ( u j + 1 n − u j − 1 n ) \frac12(u^n_{j+1} + u^n_{j-1}) - \frac{\nu}{2}(u^n_{j+1} - u^n_{j-1}) 2 1 ( u j + 1 n + u j − 1 n ) − 2 ν ( u j + 1 n − u j − 1 n ) Lax–Wendroff u j n − ν 2 ( u j + 1 n − u j − 1 n ) + ν 2 2 ( u j + 1 n − 2 u j n + u j − 1 n ) u^n_j - \frac{\nu}{2}(u^n_{j+1} - u^n_{j-1}) + \frac{\nu^2}{2}(u^n_{j+1} - 2u^n_j + u^n_{j-1}) u j n − 2 ν ( u j + 1 n − u j − 1 n ) + 2 ν 2 ( u j + 1 n − 2 u j n + u j − 1 n ) 前進時間・中心空間(FTCS) u j n − ν 2 ( u j + 1 n − u j − 1 n ) u^n_j - \frac{\nu}{2}(u^n_{j+1} - u^n_{j-1}) u j n − 2 ν ( u j + 1 n − u j − 1 n )
風上差分は、情報が来る側(a > 0 a > 0 a > 0 なら左)の差分を使います。a < 0 a < 0 a < 0 のときは前進差分 u j n − ν ( u j + 1 n − u j n ) u^n_j - \nu(u^n_{j+1} - u^n_j) u j n − ν ( u j + 1 n − u j n ) を使い、以下の結果は ν \nu ν を ∣ ν ∣ |\nu| ∣ ν ∣ に置き換えて成り立ちます。Lax–Friedrichs は FTCS の u j n u^n_j u j n を両隣の平均に置き換えたもの、Lax–Wendroff は u ( x , t + Δ t ) = u + Δ t u t + Δ t 2 2 u t t + ⋯ u(x, t + \Delta t) = u + \Delta t\,u_t + \frac{\Delta t^2}{2}u_{tt} + \cdots u ( x , t + Δ t ) = u + Δ t u t + 2 Δ t 2 u tt + ⋯ に u t = − a u x u_t = -au_x u t = − a u x 、u t t = a 2 u x x u_{tt} = a^2u_{xx} u tt = a 2 u xx を代入して中心差分で置き換えたものです。
定理 7.1 (4 つのスキームの安定性と精度 ) ✓
a ≠ 0 a \ne 0 a = 0 、格子比 λ = Δ t / h \lambda = \Delta t/h λ = Δ t / h を固定し、ν = a λ \nu = a\lambda ν = aλ とする。u 0 ∈ C 4 ( R ) u_0 \in C^4(\mathbb{R}) u 0 ∈ C 4 ( R ) は 4 階までの導関数が有界とし、U m = sup ∣ u 0 ( m ) ∣ U_m = \sup|u_0^{(m)}| U m = sup ∣ u 0 ( m ) ∣ 、u ( x , t ) = u 0 ( x − a t ) u(x,t) = u_0(x - at) u ( x , t ) = u 0 ( x − a t ) とする。s = sin ( θ / 2 ) s = \sin(\theta/2) s = sin ( θ /2 ) と書く。
風上差分 (a > 0 a > 0 a > 0 )。∣ g ( θ ) ∣ 2 = 1 − 4 ν ( 1 − ν ) s 2 |g(\theta)|^2 = 1 - 4\nu(1-\nu)s^2 ∣ g ( θ ) ∣ 2 = 1 − 4 ν ( 1 − ν ) s 2 で、ℓ 2 \ell^2 ℓ 2 で安定であることと 0 < ν ≤ 1 0 < \nu \le 1 0 < ν ≤ 1 は同値。このとき ∥ u n + 1 ∥ ∞ ≤ ∥ u n ∥ ∞ \|u^{n+1}\|_\infty \le \|u^n\|_\infty ∥ u n + 1 ∥ ∞ ≤ ∥ u n ∥ ∞ でもある。∣ τ ∣ ≤ a h 2 ( 1 + ν ) U 2 |\tau| \le \frac{ah}{2}(1 + \nu)U_2 ∣ τ ∣ ≤ 2 ah ( 1 + ν ) U 2 (1 次精度)。
Lax–Friedrichs 。∣ g ( θ ) ∣ 2 = 1 − ( 1 − ν 2 ) sin 2 θ |g(\theta)|^2 = 1 - (1 - \nu^2)\sin^2\theta ∣ g ( θ ) ∣ 2 = 1 − ( 1 − ν 2 ) sin 2 θ で、ℓ 2 \ell^2 ℓ 2 で安定であることと ∣ ν ∣ ≤ 1 |\nu| \le 1 ∣ ν ∣ ≤ 1 は同値。このとき ∥ u n + 1 ∥ ∞ ≤ ∥ u n ∥ ∞ \|u^{n+1}\|_\infty \le \|u^n\|_\infty ∥ u n + 1 ∥ ∞ ≤ ∥ u n ∥ ∞ でもある。∣ τ ∣ ≤ h 2 ( a 2 λ + 1 λ ) U 2 + ∣ a ∣ h 2 6 U 3 |\tau| \le \frac{h}{2}\bigl(a^2\lambda + \frac{1}{\lambda}\bigr)U_2 + \frac{|a|h^2}{6}U_3 ∣ τ ∣ ≤ 2 h ( a 2 λ + λ 1 ) U 2 + 6 ∣ a ∣ h 2 U 3 (1 次精度)。
Lax–Wendroff 。∣ g ( θ ) ∣ 2 = 1 − 4 ν 2 ( 1 − ν 2 ) s 4 |g(\theta)|^2 = 1 - 4\nu^2(1 - \nu^2)s^4 ∣ g ( θ ) ∣ 2 = 1 − 4 ν 2 ( 1 − ν 2 ) s 4 で、ℓ 2 \ell^2 ℓ 2 で安定であることと ∣ ν ∣ ≤ 1 |\nu| \le 1 ∣ ν ∣ ≤ 1 は同値。∣ τ ∣ ≤ ∣ a ∣ h 2 6 ( 1 + ν 2 ) U 3 + a 2 Δ t h 2 24 U 4 |\tau| \le \frac{|a|h^2}{6}(1 + \nu^2)U_3 + \frac{a^2\Delta t\,h^2}{24}U_4 ∣ τ ∣ ≤ 6 ∣ a ∣ h 2 ( 1 + ν 2 ) U 3 + 24 a 2 Δ t h 2 U 4 (2 次精度)。
FTCS 。∣ g ( θ ) ∣ 2 = 1 + ν 2 sin 2 θ |g(\theta)|^2 = 1 + \nu^2\sin^2\theta ∣ g ( θ ) ∣ 2 = 1 + ν 2 sin 2 θ で、すべての λ > 0 \lambda > 0 λ > 0 について ℓ 2 \ell^2 ℓ 2 で不安定。∣ τ ∣ ≤ a 2 Δ t 2 U 2 + ∣ a ∣ h 2 6 U 3 |\tau| \le \frac{a^2\Delta t}{2}U_2 + \frac{|a|h^2}{6}U_3 ∣ τ ∣ ≤ 2 a 2 Δ t U 2 + 6 ∣ a ∣ h 2 U 3 なので整合的ではある。
証明(定理 7.1) 増幅因子は u j n = e i j θ u^n_j = e^{ij\theta} u j n = e ij θ を代入して求めます。係数は ν \nu ν だけで決まり Δ t \Delta t Δ t によらないので、定理 5.5 から、安定性は max θ ∣ g ( θ ) ∣ ≤ 1 \max_\theta|g(\theta)| \le 1 max θ ∣ g ( θ ) ∣ ≤ 1 と同値です。打ち切り誤差は、x x x を固定して t t t について、また t t t を固定して x x x について 定理 5.3[平均値の定理とテイラーの定理] を使い、補題 6.1 の ∣ ∂ t i ∂ x j u ∣ ≤ ∣ a ∣ i U i + j |\partial_t^i\partial_x^ju| \le |a|^iU_{i+j} ∣ ∂ t i ∂ x j u ∣ ≤ ∣ a ∣ i U i + j 、u t = − a u x u_t = -au_x u t = − a u x 、u t t = a 2 u x x u_{tt} = a^2u_{xx} u tt = a 2 u xx を使って評価します。ν / Δ t = a / h \nu/\Delta t = a/h ν /Δ t = a / h に注意します。
1. 風上差分. g = 1 − ν + ν e − i θ g = 1 - \nu + \nu e^{-i\theta} g = 1 − ν + ν e − i θ なので
∣ g ∣ 2 = ( 1 − ν + ν cos θ ) 2 + ν 2 sin 2 θ = ( 1 − ν ) 2 + 2 ν ( 1 − ν ) cos θ + ν 2 = 1 − 2 ν ( 1 − ν ) ( 1 − cos θ ) = 1 − 4 ν ( 1 − ν ) s 2 |g|^2 = (1 - \nu + \nu\cos\theta)^2 + \nu^2\sin^2\theta = (1-\nu)^2 + 2\nu(1-\nu)\cos\theta + \nu^2 = 1 - 2\nu(1-\nu)(1 - \cos\theta) = 1 - 4\nu(1-\nu)s^2 ∣ g ∣ 2 = ( 1 − ν + ν cos θ ) 2 + ν 2 sin 2 θ = ( 1 − ν ) 2 + 2 ν ( 1 − ν ) cos θ + ν 2 = 1 − 2 ν ( 1 − ν ) ( 1 − cos θ ) = 1 − 4 ν ( 1 − ν ) s 2 です。0 < ν ≤ 1 0 < \nu \le 1 0 < ν ≤ 1 なら ν ( 1 − ν ) ≥ 0 \nu(1 - \nu) \ge 0 ν ( 1 − ν ) ≥ 0 で ∣ g ∣ ≤ 1 |g| \le 1 ∣ g ∣ ≤ 1 、ν > 1 \nu > 1 ν > 1 なら θ = π \theta = \pi θ = π で ∣ g ∣ 2 = 1 + 4 ν ( ν − 1 ) > 1 |g|^2 = 1 + 4\nu(\nu - 1) > 1 ∣ g ∣ 2 = 1 + 4 ν ( ν − 1 ) > 1 です(a > 0 a > 0 a > 0 なので ν > 0 \nu > 0 ν > 0 )。0 < ν ≤ 1 0 < \nu \le 1 0 < ν ≤ 1 のとき、u j n + 1 = ( 1 − ν ) u j n + ν u j − 1 n u^{n+1}_j = (1-\nu)u^n_j + \nu u^n_{j-1} u j n + 1 = ( 1 − ν ) u j n + ν u j − 1 n は非負の係数(和が 1 1 1 )の結合なので ∣ u j n + 1 ∣ ≤ ( 1 − ν ) ∥ u n ∥ ∞ + ν ∥ u n ∥ ∞ = ∥ u n ∥ ∞ |u^{n+1}_j| \le (1-\nu)\|u^n\|_\infty + \nu\|u^n\|_\infty = \|u^n\|_\infty ∣ u j n + 1 ∣ ≤ ( 1 − ν ) ∥ u n ∥ ∞ + ν ∥ u n ∥ ∞ = ∥ u n ∥ ∞ です。打ち切り誤差は
τ = u ( x , t + Δ t ) − u ( x , t ) Δ t + a u ( x , t ) − u ( x − h , t ) h = ( u t + Δ t 2 u t t ( x , t ′ ) ) + a ( u x − h 2 u x x ( x ′ , t ) ) \tau = \frac{u(x, t+\Delta t) - u(x,t)}{\Delta t} + a\,\frac{u(x,t) - u(x-h,t)}{h} = \Bigl(u_t + \frac{\Delta t}{2}u_{tt}(x, t')\Bigr) + a\Bigl(u_x - \frac{h}{2}u_{xx}(x', t)\Bigr) τ = Δ t u ( x , t + Δ t ) − u ( x , t ) + a h u ( x , t ) − u ( x − h , t ) = ( u t + 2 Δ t u tt ( x , t ′ ) ) + a ( u x − 2 h u xx ( x ′ , t ) ) (t ′ t' t ′ 、x ′ x' x ′ は Taylor の定理の中間の点)で、u t + a u x = 0 u_t + au_x = 0 u t + a u x = 0 から ∣ τ ∣ ≤ Δ t 2 a 2 U 2 + a h 2 U 2 = a h 2 ( ν + 1 ) U 2 |\tau| \le \frac{\Delta t}{2}a^2U_2 + \frac{ah}{2}U_2 = \frac{ah}{2}(\nu + 1)U_2 ∣ τ ∣ ≤ 2 Δ t a 2 U 2 + 2 ah U 2 = 2 ah ( ν + 1 ) U 2 です。
2. Lax–Friedrichs. g = cos θ − i ν sin θ g = \cos\theta - i\nu\sin\theta g = cos θ − i ν sin θ なので ∣ g ∣ 2 = cos 2 θ + ν 2 sin 2 θ = 1 − ( 1 − ν 2 ) sin 2 θ |g|^2 = \cos^2\theta + \nu^2\sin^2\theta = 1 - (1-\nu^2)\sin^2\theta ∣ g ∣ 2 = cos 2 θ + ν 2 sin 2 θ = 1 − ( 1 − ν 2 ) sin 2 θ です。∣ ν ∣ ≤ 1 |\nu| \le 1 ∣ ν ∣ ≤ 1 なら ∣ g ∣ ≤ 1 |g| \le 1 ∣ g ∣ ≤ 1 、∣ ν ∣ > 1 |\nu| > 1 ∣ ν ∣ > 1 なら θ = π / 2 \theta = \pi/2 θ = π /2 で ∣ g ∣ = ∣ ν ∣ > 1 |g| = |\nu| > 1 ∣ g ∣ = ∣ ν ∣ > 1 です。∣ ν ∣ ≤ 1 |\nu| \le 1 ∣ ν ∣ ≤ 1 のとき u j n + 1 = 1 − ν 2 u j + 1 n + 1 + ν 2 u j − 1 n u^{n+1}_j = \frac{1-\nu}{2}u^n_{j+1} + \frac{1+\nu}{2}u^n_{j-1} u j n + 1 = 2 1 − ν u j + 1 n + 2 1 + ν u j − 1 n は非負の係数(和が 1 1 1 )の結合なので ∥ u n + 1 ∥ ∞ ≤ ∥ u n ∥ ∞ \|u^{n+1}\|_\infty \le \|u^n\|_\infty ∥ u n + 1 ∥ ∞ ≤ ∥ u n ∥ ∞ です。打ち切り誤差は
τ = u ( x , t + Δ t ) − u Δ t − h 2 2 Δ t D + D − u + a D 0 u \tau = \frac{u(x,t+\Delta t) - u}{\Delta t} - \frac{h^2}{2\Delta t}D_+D_-u + aD_0u τ = Δ t u ( x , t + Δ t ) − u − 2Δ t h 2 D + D − u + a D 0 u です。2 階の剰余までの Taylor 展開 u ( x ± h ) = u ± h u x + h 2 2 u x x ( x ± ′ ) u(x\pm h) = u \pm hu_x + \frac{h^2}{2}u_{xx}(x'_\pm) u ( x ± h ) = u ± h u x + 2 h 2 u xx ( x ± ′ ) から ∣ D + D − u ∣ ≤ U 2 |D_+D_-u| \le U_2 ∣ D + D − u ∣ ≤ U 2 、補題 2.3 の 2 から ∣ D 0 u − u x ∣ ≤ h 2 6 U 3 |D_0u - u_x| \le \frac{h^2}{6}U_3 ∣ D 0 u − u x ∣ ≤ 6 h 2 U 3 なので、∣ τ ∣ ≤ Δ t 2 a 2 U 2 + h 2 2 Δ t U 2 + ∣ a ∣ h 2 6 U 3 |\tau| \le \frac{\Delta t}{2}a^2U_2 + \frac{h^2}{2\Delta t}U_2 + \frac{|a|h^2}{6}U_3 ∣ τ ∣ ≤ 2 Δ t a 2 U 2 + 2Δ t h 2 U 2 + 6 ∣ a ∣ h 2 U 3 で、Δ t = λ h \Delta t = \lambda h Δ t = λh を代入すると主張の形です。
3. Lax–Wendroff. 1 − cos θ = 2 s 2 1 - \cos\theta = 2s^2 1 − cos θ = 2 s 2 なので g = 1 − 2 ν 2 s 2 − i ν sin θ g = 1 - 2\nu^2s^2 - i\nu\sin\theta g = 1 − 2 ν 2 s 2 − i ν sin θ で、sin 2 θ = 4 s 2 ( 1 − s 2 ) \sin^2\theta = 4s^2(1 - s^2) sin 2 θ = 4 s 2 ( 1 − s 2 ) から
∣ g ∣ 2 = ( 1 − 2 ν 2 s 2 ) 2 + 4 ν 2 s 2 ( 1 − s 2 ) = 1 − 4 ν 2 s 2 + 4 ν 4 s 4 + 4 ν 2 s 2 − 4 ν 2 s 4 = 1 − 4 ν 2 ( 1 − ν 2 ) s 4 |g|^2 = (1 - 2\nu^2s^2)^2 + 4\nu^2s^2(1 - s^2) = 1 - 4\nu^2s^2 + 4\nu^4s^4 + 4\nu^2s^2 - 4\nu^2s^4 = 1 - 4\nu^2(1-\nu^2)s^4 ∣ g ∣ 2 = ( 1 − 2 ν 2 s 2 ) 2 + 4 ν 2 s 2 ( 1 − s 2 ) = 1 − 4 ν 2 s 2 + 4 ν 4 s 4 + 4 ν 2 s 2 − 4 ν 2 s 4 = 1 − 4 ν 2 ( 1 − ν 2 ) s 4 です。∣ ν ∣ ≤ 1 |\nu| \le 1 ∣ ν ∣ ≤ 1 なら ∣ g ∣ ≤ 1 |g| \le 1 ∣ g ∣ ≤ 1 、∣ ν ∣ > 1 |\nu| > 1 ∣ ν ∣ > 1 なら θ = π \theta = \pi θ = π で ∣ g ∣ 2 = 1 + 4 ν 2 ( ν 2 − 1 ) > 1 |g|^2 = 1 + 4\nu^2(\nu^2 - 1) > 1 ∣ g ∣ 2 = 1 + 4 ν 2 ( ν 2 − 1 ) > 1 です。打ち切り誤差は
τ = u ( x , t + Δ t ) − u Δ t + a D 0 u − a 2 Δ t 2 D + D − u \tau = \frac{u(x,t+\Delta t) - u}{\Delta t} + aD_0u - \frac{a^2\Delta t}{2}D_+D_-u τ = Δ t u ( x , t + Δ t ) − u + a D 0 u − 2 a 2 Δ t D + D − u で、u ( x , t + Δ t ) − u Δ t = u t + Δ t 2 u t t + Δ t 2 6 u t t t ( x , t ′ ) \frac{u(x,t+\Delta t) - u}{\Delta t} = u_t + \frac{\Delta t}{2}u_{tt} + \frac{\Delta t^2}{6}u_{ttt}(x,t') Δ t u ( x , t + Δ t ) − u = u t + 2 Δ t u tt + 6 Δ t 2 u ttt ( x , t ′ ) 、D 0 u = u x + R 1 D_0u = u_x + R_1 D 0 u = u x + R 1 、D + D − u = u x x + R 2 D_+D_-u = u_{xx} + R_2 D + D − u = u xx + R 2 (∣ R 1 ∣ ≤ h 2 6 U 3 |R_1| \le \frac{h^2}{6}U_3 ∣ R 1 ∣ ≤ 6 h 2 U 3 、∣ R 2 ∣ ≤ h 2 12 U 4 |R_2| \le \frac{h^2}{12}U_4 ∣ R 2 ∣ ≤ 12 h 2 U 4 。補題 2.3 )を代入すると
τ = ( u t + a u x ) ⏟ = 0 + Δ t 2 ( u t t − a 2 u x x ) ⏟ = 0 + Δ t 2 6 u t t t ( x , t ′ ) + a R 1 − a 2 Δ t 2 R 2 \tau = \underbrace{(u_t + au_x)}_{=0} + \frac{\Delta t}{2}\underbrace{(u_{tt} - a^2u_{xx})}_{=0} + \frac{\Delta t^2}{6}u_{ttt}(x,t') + aR_1 - \frac{a^2\Delta t}{2}R_2 τ = = 0 ( u t + a u x ) + 2 Δ t = 0 ( u tt − a 2 u xx ) + 6 Δ t 2 u ttt ( x , t ′ ) + a R 1 − 2 a 2 Δ t R 2 です。∣ u t t t ∣ ≤ ∣ a ∣ 3 U 3 |u_{ttt}| \le |a|^3U_3 ∣ u ttt ∣ ≤ ∣ a ∣ 3 U 3 と ∣ a ∣ 3 Δ t 2 = ∣ a ∣ ν 2 h 2 |a|^3\Delta t^2 = |a|\nu^2h^2 ∣ a ∣ 3 Δ t 2 = ∣ a ∣ ν 2 h 2 から ∣ τ ∣ ≤ ∣ a ∣ h 2 6 ν 2 U 3 + ∣ a ∣ h 2 6 U 3 + a 2 Δ t h 2 24 U 4 |\tau| \le \frac{|a|h^2}{6}\nu^2U_3 + \frac{|a|h^2}{6}U_3 + \frac{a^2\Delta t\,h^2}{24}U_4 ∣ τ ∣ ≤ 6 ∣ a ∣ h 2 ν 2 U 3 + 6 ∣ a ∣ h 2 U 3 + 24 a 2 Δ t h 2 U 4 です。
4. FTCS. g = 1 − i ν sin θ g = 1 - i\nu\sin\theta g = 1 − i ν sin θ なので ∣ g ∣ 2 = 1 + ν 2 sin 2 θ |g|^2 = 1 + \nu^2\sin^2\theta ∣ g ∣ 2 = 1 + ν 2 sin 2 θ で、θ = π / 2 \theta = \pi/2 θ = π /2 で ∣ g ∣ = 1 + ν 2 > 1 |g| = \sqrt{1 + \nu^2} > 1 ∣ g ∣ = 1 + ν 2 > 1 です(a ≠ 0 a \ne 0 a = 0 、λ > 0 \lambda > 0 λ > 0 なので ν ≠ 0 \nu \ne 0 ν = 0 )。したがって不安定です。打ち切り誤差は τ = u ( x , t + Δ t ) − u Δ t + a D 0 u = Δ t 2 u t t ( x , t ′ ) + a R 1 \tau = \frac{u(x,t+\Delta t) - u}{\Delta t} + aD_0u = \frac{\Delta t}{2}u_{tt}(x,t') + aR_1 τ = Δ t u ( x , t + Δ t ) − u + a D 0 u = 2 Δ t u tt ( x , t ′ ) + a R 1 で、主張の評価が成り立ちます。
∎
FTCS は整合的で CFL 条件も満たしますが不安定なので、定理 4.4 により収束しません。不安定性は格子比を固定したときのものです。Δ t = μ h 2 \Delta t = \mu h^2 Δ t = μ h 2 のように Δ t \Delta t Δ t を h 2 h^2 h 2 に比例させれば ν 2 = a 2 μ Δ t \nu^2 = a^2\mu\Delta t ν 2 = a 2 μ Δ t となって安定になります(演習 10.3 )が、時間ステップの数が h − 2 h^{-2} h − 2 に比例するので実用的ではありません。
0 1 1.28 0 π/2 π θ FTCS(1 超:不安定) Lax–Friedrichs(点線) 風上差分(実線) Lax–Wendroff(一点鎖線) CFL 数 ν = 0.8 のときの増幅因子の大きさ |g(θ)|(0 ≤ θ ≤ π)。破線の水平線が 1。FTCS だけが 1 を超え、θ = π/2 の細かい波が 1 ステップごとに約 1.28 倍に育つ。風上差分・Lax–Friedrichs・Lax–Wendroff は 1 以下で、その分だけ波が減衰する。Lax–Wendroff は θ が小さいところでほとんど減衰せず、θ = π 付近で強く減衰する。
矩形波を実際に運んでみると、風上差分と Lax–Wendroff の違いが目に見えます。次の動画は ν = 0.8 \nu = 0.8 ν = 0.8 、h = 0.01 h = 0.01 h = 0.01 で 1 周期ぶん進めたもので、風上差分は角がなまり(数値粘性)、Lax–Wendroff は角は鋭いものの後ろに振動が出ます。
周期境界で矩形波を 1 周期運ぶ。破線が厳密解。風上差分(左)は 1 次精度で波形がなまり、Lax–Wendroff(右)は 2 次精度で立ち上がりは鋭いが、後ろに振動が出て 1 を超える。
系 7.2 (周期境界での収束の次数 ) ✓
u 0 u_0 u 0 は周期 1 1 1 の C 4 C^4 C 4 級関数、h = 1 / N h = 1/N h = 1/ N 、λ \lambda λ は固定で、定理 7.1 の安定条件(風上差分は 0 < ν ≤ 1 0 < \nu \le 1 0 < ν ≤ 1 、Lax–Friedrichs と Lax–Wendroff は ∣ ν ∣ ≤ 1 |\nu| \le 1 ∣ ν ∣ ≤ 1 )が成り立つとする。周期格子の上で u j 0 = u 0 ( x j ) u^0_j = u_0(x_j) u j 0 = u 0 ( x j ) から計算した u n u^n u n は
( h ∑ j = 0 N − 1 ∣ u ( x j , t n ) − u j n ∣ 2 ) 1 / 2 ≤ t n max x , t ∣ τ ( x , t ) ∣ \Bigl(h\sum_{j=0}^{N-1}|u(x_j, t_n) - u^n_j|^2\Bigr)^{1/2} \le t_n\max_{x,t}|\tau(x,t)| ( h j = 0 ∑ N − 1 ∣ u ( x j , t n ) − u j n ∣ 2 ) 1/2 ≤ t n x , t max ∣ τ ( x , t ) ∣ を満たす。右辺は風上差分と Lax–Friedrichs で O ( h ) O(h) O ( h ) 、Lax–Wendroff で O ( h 2 ) O(h^2) O ( h 2 ) である。
証明(系 7.2) 補題 5.3 と max θ ∣ g ∣ ≤ 1 \max_\theta|g| \le 1 max θ ∣ g ∣ ≤ 1 から、C N \mathbb{C}^N C N 上で ∥ C n ∥ ≤ 1 \|C^n\| \le 1 ∥ C n ∥ ≤ 1 です。w j n = u ( x j , t n ) w^n_j = u(x_j, t_n) w j n = u ( x j , t n ) とおくと τ j n = ( w j n + 1 − ( C w n ) j ) / Δ t = τ ( x j , t n ) \tau^n_j = (w^{n+1}_j - (Cw^n)_j)/\Delta t = \tau(x_j, t_n) τ j n = ( w j n + 1 − ( C w n ) j ) /Δ t = τ ( x j , t n ) で、h N = 1 hN = 1 h N = 1 から ∥ τ n ∥ h ≤ max ∣ τ ∣ \|\tau^n\|_h \le \max|\tau| ∥ τ n ∥ h ≤ max ∣ τ ∣ です。補題 4.1 を K = 1 K = 1 K = 1 、e 0 = 0 e^0 = 0 e 0 = 0 で使えば結論を得ます。次数は 定理 7.1 の τ \tau τ の評価から従います(周期関数の導関数は有界です)。
∎
例 7.3 (CFL 数 1 では風上差分が厳密になる )
ν = 1 \nu = 1 ν = 1 のとき風上差分は u j n + 1 = u j − 1 n u^{n+1}_j = u^n_{j-1} u j n + 1 = u j − 1 n です。a Δ t = h a\Delta t = h a Δ t = h なので、厳密解も u ( x j , t n + 1 ) = u 0 ( x j − a t n + 1 ) = u 0 ( x j − 1 − a t n ) = u ( x j − 1 , t n ) u(x_j, t_{n+1}) = u_0(x_j - at_{n+1}) = u_0(x_{j-1} - at_n) = u(x_{j-1}, t_n) u ( x j , t n + 1 ) = u 0 ( x j − a t n + 1 ) = u 0 ( x j − 1 − a t n ) = u ( x j − 1 , t n ) を満たし、数値解は格子点で厳密解に一致します。特性曲線がちょうど格子点を通るからです。Lax–Friedrichs と Lax–Wendroff も ν = 1 \nu = 1 ν = 1 では同じ u j n + 1 = u j − 1 n u^{n+1}_j = u^n_{j-1} u j n + 1 = u j − 1 n になります。ただし、係数 a a a が場所によって変わる問題ではすべての点で ν = 1 \nu = 1 ν = 1 にはできないので、この性質は当てにできません。
定義 8.1 (数値的な散逸と分散 ) ↗
移流方程式の厳密解では、波 e i ξ x e^{i\xi x} e i ξ x は 1 ステップで e − i a ξ Δ t = e − i ν θ e^{-ia\xi\Delta t} = e^{-i\nu\theta} e − ia ξ Δ t = e − i ν θ 倍(θ = h ξ \theta = h\xi θ = h ξ )になり、振幅は変わらない。スキームの増幅因子 g ( θ ) g(\theta) g ( θ ) について、∣ g ( θ ) ∣ < 1 |g(\theta)| < 1 ∣ g ( θ ) ∣ < 1 であること(振幅が減ること)を数値的な散逸 、arg g ( θ ) ≠ − ν θ \arg g(\theta) \ne -\nu\theta arg g ( θ ) = − ν θ であること(位相の進みがずれ、波数によって伝わる速さが変わること)を数値的な分散 という。
定理 7.1 の ∣ g ∣ 2 |g|^2 ∣ g ∣ 2 を見ると、風上差分は 1 − ∣ g ∣ 2 1 - |g|^2 1 − ∣ g ∣ 2 が s 2 ≈ θ 2 / 4 s^2 \approx \theta^2/4 s 2 ≈ θ 2 /4 に比例し、Lax–Wendroff は s 4 s^4 s 4 に比例します。つまり風上差分は滑らかな成分まで減衰させ、Lax–Wendroff は細かい成分だけを弱く減衰させます。この違いは、スキームが「実際に」近似している方程式を調べるとはっきりします。
次の命題の考え方は、「移流方程式の近似として作ったスキームは、実は少しずれた別の方程式をより高い精度で解いている」というものです。風上差分の場合、そのずれは拡散項 κ w x x \kappa w_{xx} κ w xx になります。拡散は山を低く広げるので、矩形波の角がなまるのは、このためです。Lax–Wendroff の場合、ずれは 3 階微分の項(波数によって速さを変える分散)になります。
命題 8.2 (修正方程式:数値粘性と分散 ) ✓
a > 0 a > 0 a > 0 、ν = a Δ t / h \nu = a\Delta t/h ν = a Δ t / h とする。
κ = a h 2 ( 1 − ν ) \kappa = \frac{ah}{2}(1 - \nu) κ = 2 ah ( 1 − ν ) とし、w w w は w t + a w x = κ w x x w_t + aw_x = \kappa w_{xx} w t + a w x = κ w xx を満たす滑らかな関数で、以下に現れる導関数が有界であるとする。風上差分に w w w を代入した残差 τ w = w ( x , t + Δ t ) − w Δ t + a D − w \tau_w = \frac{w(x,t+\Delta t) - w}{\Delta t} + aD_-w τ w = Δ t w ( x , t + Δ t ) − w + a D − w は
∣ τ w ∣ ≤ ( a κ Δ t + a h 2 6 ) sup ∣ w x x x ∣ + κ 2 Δ t 2 sup ∣ w x x x x ∣ + Δ t 2 6 sup ∣ w t t t ∣ |\tau_w| \le \Bigl(a\kappa\Delta t + \frac{ah^2}{6}\Bigr)\sup|w_{xxx}| + \frac{\kappa^2\Delta t}{2}\sup|w_{xxxx}| + \frac{\Delta t^2}{6}\sup|w_{ttt}| ∣ τ w ∣ ≤ ( aκ Δ t + 6 a h 2 ) sup ∣ w xxx ∣ + 2 κ 2 Δ t sup ∣ w xxxx ∣ + 6 Δ t 2 sup ∣ w ttt ∣ を満たす。Δ t / h \Delta t/h Δ t / h を固定すれば右辺は O ( h 2 ) O(h^2) O ( h 2 ) である。
2. u 0 ∈ C 5 u_0 \in C^5 u 0 ∈ C 5 は 5 階までの導関数が有界とし、u = u 0 ( x − a t ) u = u_0(x - at) u = u 0 ( x − a t ) とする。Lax–Wendroff の局所打ち切り誤差は
τ = a h 2 6 ( 1 − ν 2 ) u x x x + ρ , ∣ ρ ∣ ≤ a 4 Δ t 3 24 U 4 + a 2 Δ t h 2 24 U 4 + a h 4 120 U 5 \tau = \frac{ah^2}{6}(1 - \nu^2)u_{xxx} + \rho,\qquad|\rho| \le \frac{a^4\Delta t^3}{24}U_4 + \frac{a^2\Delta t\,h^2}{24}U_4 + \frac{ah^4}{120}U_5 τ = 6 a h 2 ( 1 − ν 2 ) u xxx + ρ , ∣ ρ ∣ ≤ 24 a 4 Δ t 3 U 4 + 24 a 2 Δ t h 2 U 4 + 120 a h 4 U 5 を満たす。
証明(命題 8.2) 1. 3 階の剰余までの Taylor 展開から
w ( x , t + Δ t ) − w Δ t = w t + Δ t 2 w t t + Δ t 2 6 w t t t ( x , t ′ ) , D − w = w x − h 2 w x x + h 2 6 w x x x ( x ′ , t ) \frac{w(x,t+\Delta t) - w}{\Delta t} = w_t + \frac{\Delta t}{2}w_{tt} + \frac{\Delta t^2}{6}w_{ttt}(x,t'),\qquad D_-w = w_x - \frac{h}{2}w_{xx} + \frac{h^2}{6}w_{xxx}(x',t) Δ t w ( x , t + Δ t ) − w = w t + 2 Δ t w tt + 6 Δ t 2 w ttt ( x , t ′ ) , D − w = w x − 2 h w xx + 6 h 2 w xxx ( x ′ , t ) です。w t = − a w x + κ w x x w_t = -aw_x + \kappa w_{xx} w t = − a w x + κ w xx を t t t と x x x で微分して
w t t = − a w x t + κ w x x t = − a ( − a w x x + κ w x x x ) + κ ( − a w x x x + κ w x x x x ) = a 2 w x x − 2 a κ w x x x + κ 2 w x x x x w_{tt} = -aw_{xt} + \kappa w_{xxt} = -a(-aw_{xx} + \kappa w_{xxx}) + \kappa(-aw_{xxx} + \kappa w_{xxxx}) = a^2w_{xx} - 2a\kappa w_{xxx} + \kappa^2w_{xxxx} w tt = − a w x t + κ w xx t = − a ( − a w xx + κ w xxx ) + κ ( − a w xxx + κ w xxxx ) = a 2 w xx − 2 aκ w xxx + κ 2 w xxxx です。代入すると
τ w = ( w t + a w x ) + ( a 2 Δ t 2 − a h 2 ) w x x − a κ Δ t w x x x + κ 2 Δ t 2 w x x x x + Δ t 2 6 w t t t ( x , t ′ ) + a h 2 6 w x x x ( x ′ , t ) \tau_w = \bigl(w_t + aw_x\bigr) + \Bigl(\frac{a^2\Delta t}{2} - \frac{ah}{2}\Bigr)w_{xx} - a\kappa\Delta t\,w_{xxx} + \frac{\kappa^2\Delta t}{2}w_{xxxx} + \frac{\Delta t^2}{6}w_{ttt}(x,t') + \frac{ah^2}{6}w_{xxx}(x',t) τ w = ( w t + a w x ) + ( 2 a 2 Δ t − 2 ah ) w xx − aκ Δ t w xxx + 2 κ 2 Δ t w xxxx + 6 Δ t 2 w ttt ( x , t ′ ) + 6 a h 2 w xxx ( x ′ , t ) で、a 2 Δ t 2 − a h 2 = − a h 2 ( 1 − ν ) = − κ \frac{a^2\Delta t}{2} - \frac{ah}{2} = -\frac{ah}{2}(1 - \nu) = -\kappa 2 a 2 Δ t − 2 ah = − 2 ah ( 1 − ν ) = − κ なので、最初の 2 項の和は w t + a w x − κ w x x = 0 w_t + aw_x - \kappa w_{xx} = 0 w t + a w x − κ w xx = 0 です。残りの項の絶対値を評価すれば主張を得ます。κ = O ( h ) \kappa = O(h) κ = O ( h ) 、Δ t = O ( h ) \Delta t = O(h) Δ t = O ( h ) なので各項は O ( h 2 ) O(h^2) O ( h 2 ) です。
2. 定理 7.1 の 3 の証明より 1 つ高い次数まで展開します。u ( x , t + Δ t ) − u Δ t = u t + Δ t 2 u t t + Δ t 2 6 u t t t + Δ t 3 24 u t t t t ( x , t ′ ) \frac{u(x,t+\Delta t) - u}{\Delta t} = u_t + \frac{\Delta t}{2}u_{tt} + \frac{\Delta t^2}{6}u_{ttt} + \frac{\Delta t^3}{24}u_{tttt}(x,t') Δ t u ( x , t + Δ t ) − u = u t + 2 Δ t u tt + 6 Δ t 2 u ttt + 24 Δ t 3 u tttt ( x , t ′ ) です。D 0 u D_0u D 0 u は、5 階の剰余までの展開 u ( x ± h ) = ∑ k = 0 4 ( ± h ) k k ! ∂ x k u ± h 5 120 ∂ x 5 u ( x ± ′ ) u(x \pm h) = \sum_{k=0}^{4}\frac{(\pm h)^k}{k!}\partial_x^ku \pm \frac{h^5}{120}\partial_x^5u(x'_\pm) u ( x ± h ) = ∑ k = 0 4 k ! ( ± h ) k ∂ x k u ± 120 h 5 ∂ x 5 u ( x ± ′ ) の差をとって D 0 u = u x + h 2 6 u x x x + R 1 ′ D_0u = u_x + \frac{h^2}{6}u_{xxx} + R_1' D 0 u = u x + 6 h 2 u xxx + R 1 ′ 、∣ R 1 ′ ∣ ≤ h 4 120 U 5 |R_1'| \le \frac{h^4}{120}U_5 ∣ R 1 ′ ∣ ≤ 120 h 4 U 5 です。D + D − u = u x x + R 2 D_+D_-u = u_{xx} + R_2 D + D − u = u xx + R 2 、∣ R 2 ∣ ≤ h 2 12 U 4 |R_2| \le \frac{h^2}{12}U_4 ∣ R 2 ∣ ≤ 12 h 2 U 4 は 補題 2.3 の 3 です。u t + a u x = 0 u_t + au_x = 0 u t + a u x = 0 、u t t = a 2 u x x u_{tt} = a^2u_{xx} u tt = a 2 u xx 、u t t t = − a 3 u x x x u_{ttt} = -a^3u_{xxx} u ttt = − a 3 u xxx を使うと
τ = − a 3 Δ t 2 6 u x x x + a h 2 6 u x x x + Δ t 3 24 u t t t t ( x , t ′ ) + a R 1 ′ − a 2 Δ t 2 R 2 \tau = -\frac{a^3\Delta t^2}{6}u_{xxx} + \frac{ah^2}{6}u_{xxx} + \frac{\Delta t^3}{24}u_{tttt}(x,t') + aR_1' - \frac{a^2\Delta t}{2}R_2 τ = − 6 a 3 Δ t 2 u xxx + 6 a h 2 u xxx + 24 Δ t 3 u tttt ( x , t ′ ) + a R 1 ′ − 2 a 2 Δ t R 2 で、a 3 Δ t 2 = a ν 2 h 2 a^3\Delta t^2 = a\nu^2h^2 a 3 Δ t 2 = a ν 2 h 2 から最初の 2 項は a h 2 6 ( 1 − ν 2 ) u x x x \frac{ah^2}{6}(1-\nu^2)u_{xxx} 6 a h 2 ( 1 − ν 2 ) u xxx です。残りが ρ \rho ρ で、∣ u t t t t ∣ ≤ a 4 U 4 |u_{tttt}| \le a^4U_4 ∣ u tttt ∣ ≤ a 4 U 4 から主張の評価を得ます。
∎
1 は「風上差分は、移流方程式を 1 次の精度で近似するが、移流拡散方程式 w t + a w x = κ w x x w_t + aw_x = \kappa w_{xx} w t + a w x = κ w xx を 2 次の精度で近似する」と読めます。κ = a h 2 ( 1 − ν ) ≥ 0 \kappa = \frac{ah}{2}(1 - \nu) \ge 0 κ = 2 ah ( 1 − ν ) ≥ 0 が数値粘性 で、不連続をなまらせる原因です。ν > 1 \nu > 1 ν > 1 では κ < 0 \kappa < 0 κ < 0 となり、逆向きの拡散方程式(非適切な問題)を近似することになります。これは不安定性の別の見方です。2 は、Lax–Wendroff の誤差の先頭が 3 階微分であることを示しています。u t + a u x = − a h 2 6 ( 1 − ν 2 ) u x x x u_t + au_x = -\frac{ah^2}{6}(1-\nu^2)u_{xxx} u t + a u x = − 6 a h 2 ( 1 − ν 2 ) u xxx は波数 ξ \xi ξ の波を速さ a ( 1 − h 2 ξ 2 6 ( 1 − ν 2 ) ) a\bigl(1 - \frac{h^2\xi^2}{6}(1 - \nu^2)\bigr) a ( 1 − 6 h 2 ξ 2 ( 1 − ν 2 ) ) で運ぶ方程式で、細かい波ほど遅れます。不連続な初期値は全波数の成分を含むので、遅れた成分が不連続の後ろに振動として残ります。
定義 8.3 (単調性を保つスキーム ) ↗
スキームが単調性を保つ とは、u j n ≤ u j + 1 n u^n_j \le u^n_{j+1} u j n ≤ u j + 1 n (すべての j j j )ならば u j n + 1 ≤ u j + 1 n + 1 u^{n+1}_j \le u^{n+1}_{j+1} u j n + 1 ≤ u j + 1 n + 1 (すべての j j j )となることをいう。
単調性を保つスキームは、単調な初期値に新しい極値(振動)を作りません。
定理 8.4 (Godunov の次数の壁 ) ✓
a ≠ 0 a \ne 0 a = 0 、λ = Δ t / h \lambda = \Delta t/h λ = Δ t / h を固定し、実数の係数 a k a_k a k (− l ≤ k ≤ r -l \le k \le r − l ≤ k ≤ r )が h h h によらない定数係数の陽的スキーム u j n + 1 = ∑ k a k u j + k n u^{n+1}_j = \sum_ka_ku^n_{j+k} u j n + 1 = ∑ k a k u j + k n を考える。
スキームが単調性を保つことと、すべての k k k で a k ≥ 0 a_k \ge 0 a k ≥ 0 であることは同値である。
3 階までの導関数が有界なすべての u 0 ∈ C 3 ( R ) u_0 \in C^3(\mathbb{R}) u 0 ∈ C 3 ( R ) について、移流方程式 u t + a u x = 0 u_t + au_x = 0 u t + a u x = 0 に対する局所打ち切り誤差が sup ∣ τ ∣ ≤ c h 2 \sup|\tau| \le ch^2 sup ∣ τ ∣ ≤ c h 2 (c c c は u 0 u_0 u 0 による定数)を満たす(2 次精度)ならば、∑ k a k = 1 \sum_ka_k = 1 ∑ k a k = 1 、∑ k k a k = − ν \sum_kka_k = -\nu ∑ k k a k = − ν 、∑ k k 2 a k = ν 2 \sum_kk^2a_k = \nu^2 ∑ k k 2 a k = ν 2 である。
1 と 2 の両方が成り立つのは、ν = a λ \nu = a\lambda ν = aλ が整数で、スキームが u j n + 1 = u j − ν n u^{n+1}_j = u^n_{j-\nu} u j n + 1 = u j − ν n (厳密解そのもの)である場合に限る。したがって、それ以外の単調性を保つ線形スキームは 2 次精度になりえない。
証明(定理 8.4) 1. u j + 1 n + 1 − u j n + 1 = ∑ k a k ( u j + k + 1 n − u j + k n ) u^{n+1}_{j+1} - u^{n+1}_j = \sum_ka_k(u^n_{j+k+1} - u^n_{j+k}) u j + 1 n + 1 − u j n + 1 = ∑ k a k ( u j + k + 1 n − u j + k n ) です。a k ≥ 0 a_k \ge 0 a k ≥ 0 で u n u^n u n が単調増加なら、右辺の各項は非負です。逆に、単調性を保つとし、u i n = 0 u^n_i = 0 u i n = 0 (i ≤ 0 i \le 0 i ≤ 0 )、u i n = 1 u^n_i = 1 u i n = 1 (i ≥ 1 i \ge 1 i ≥ 1 )という単調増加な格子関数をとります。u j + k + 1 n − u j + k n u^n_{j+k+1} - u^n_{j+k} u j + k + 1 n − u j + k n は j + k = 0 j + k = 0 j + k = 0 のときだけ 1 1 1 で他は 0 0 0 なので、u j + 1 n + 1 − u j n + 1 = a − j u^{n+1}_{j+1} - u^{n+1}_j = a_{-j} u j + 1 n + 1 − u j n + 1 = a − j (− l ≤ − j ≤ r -l \le -j \le r − l ≤ − j ≤ r のとき。それ以外は 0 0 0 )です。これが非負なので、すべての k k k で a k ≥ 0 a_k \ge 0 a k ≥ 0 です。
2. y = x − a t y = x - at y = x − a t とおくと、u ( x + k h , t ) = u 0 ( y + k h ) u(x + kh, t) = u_0(y + kh) u ( x + k h , t ) = u 0 ( y + k h ) 、u ( x , t + Δ t ) = u 0 ( y − a Δ t ) = u 0 ( y − ν h ) u(x, t + \Delta t) = u_0(y - a\Delta t) = u_0(y - \nu h) u ( x , t + Δ t ) = u 0 ( y − a Δ t ) = u 0 ( y − ν h ) です。3 階の剰余までの Taylor 展開 u 0 ( y + σ h ) = u 0 ( y ) + σ h u 0 ′ ( y ) + σ 2 h 2 2 u 0 ′ ′ ( y ) + σ 3 h 3 6 u 0 ′ ′ ′ ( c σ ) u_0(y + \sigma h) = u_0(y) + \sigma hu_0'(y) + \frac{\sigma^2h^2}{2}u_0''(y) + \frac{\sigma^3h^3}{6}u_0'''(c_\sigma) u 0 ( y + σ h ) = u 0 ( y ) + σ h u 0 ′ ( y ) + 2 σ 2 h 2 u 0 ′′ ( y ) + 6 σ 3 h 3 u 0 ′′′ ( c σ ) を σ = − ν \sigma = -\nu σ = − ν と σ = k \sigma = k σ = k で使うと
Δ t τ = u 0 ( y − ν h ) − ∑ k a k u 0 ( y + k h ) = m 0 u 0 ( y ) + m 1 h u 0 ′ ( y ) + m 2 h 2 2 u 0 ′ ′ ( y ) + R , \Delta t\,\tau = u_0(y - \nu h) - \sum_ka_ku_0(y + kh) = m_0u_0(y) + m_1hu_0'(y) + \frac{m_2h^2}{2}u_0''(y) + R, Δ t τ = u 0 ( y − ν h ) − k ∑ a k u 0 ( y + k h ) = m 0 u 0 ( y ) + m 1 h u 0 ′ ( y ) + 2 m 2 h 2 u 0 ′′ ( y ) + R , m 0 = 1 − ∑ k a k , m 1 = − ν − ∑ k k a k , m 2 = ν 2 − ∑ k k 2 a k , ∣ R ∣ ≤ h 3 6 ( ∣ ν ∣ 3 + ∑ k ∣ a k ∣ ∣ k ∣ 3 ) U 3 m_0 = 1 - \sum_ka_k,\quad m_1 = -\nu - \sum_kka_k,\quad m_2 = \nu^2 - \sum_kk^2a_k,\quad|R| \le \frac{h^3}{6}\Bigl(|\nu|^3 + \sum_k|a_k||k|^3\Bigr)U_3 m 0 = 1 − k ∑ a k , m 1 = − ν − k ∑ k a k , m 2 = ν 2 − k ∑ k 2 a k , ∣ R ∣ ≤ 6 h 3 ( ∣ ν ∣ 3 + k ∑ ∣ a k ∣∣ k ∣ 3 ) U 3 です。仮定から ∣ Δ t τ ∣ ≤ c λ h 3 |\Delta t\,\tau| \le c\lambda h^3 ∣Δ t τ ∣ ≤ c λ h 3 なので、∣ m 0 u 0 ( y ) + m 1 h u 0 ′ ( y ) + m 2 h 2 2 u 0 ′ ′ ( y ) ∣ ≤ c ′ h 3 |m_0u_0(y) + m_1hu_0'(y) + \frac{m_2h^2}{2}u_0''(y)| \le c'h^3 ∣ m 0 u 0 ( y ) + m 1 h u 0 ′ ( y ) + 2 m 2 h 2 u 0 ′′ ( y ) ∣ ≤ c ′ h 3 (c ′ c' c ′ は h h h によらない)です。u 0 = 1 u_0 = 1 u 0 = 1 とすると ∣ m 0 ∣ ≤ c ′ h 3 |m_0| \le c'h^3 ∣ m 0 ∣ ≤ c ′ h 3 で、m 0 m_0 m 0 は h h h によらないので h → 0 h \to 0 h → 0 として m 0 = 0 m_0 = 0 m 0 = 0 です。次に u 0 = sin x u_0 = \sin x u 0 = sin x 、y = 0 y = 0 y = 0 とすると u 0 ( 0 ) = 0 u_0(0) = 0 u 0 ( 0 ) = 0 、u 0 ′ ( 0 ) = 1 u_0'(0) = 1 u 0 ′ ( 0 ) = 1 、u 0 ′ ′ ( 0 ) = 0 u_0''(0) = 0 u 0 ′′ ( 0 ) = 0 で ∣ m 1 ∣ h ≤ c ′ h 3 |m_1|h \le c'h^3 ∣ m 1 ∣ h ≤ c ′ h 3 、したがって m 1 = 0 m_1 = 0 m 1 = 0 です。最後に u 0 = cos x u_0 = \cos x u 0 = cos x 、y = 0 y = 0 y = 0 とすると u 0 ′ ( 0 ) = 0 u_0'(0) = 0 u 0 ′ ( 0 ) = 0 、u 0 ′ ′ ( 0 ) = − 1 u_0''(0) = -1 u 0 ′′ ( 0 ) = − 1 で、m 0 = 0 m_0 = 0 m 0 = 0 と合わせて ∣ m 2 ∣ h 2 2 ≤ c ′ h 3 \frac{|m_2|h^2}{2} \le c'h^3 2 ∣ m 2 ∣ h 2 ≤ c ′ h 3 、したがって m 2 = 0 m_2 = 0 m 2 = 0 です。
3. a k ≥ 0 a_k \ge 0 a k ≥ 0 と 2 の 3 つの等式が成り立つとします。Cauchy–Schwarz の不等式から
ν 2 = ( ∑ k k a k ⋅ a k ) 2 ≤ ( ∑ k k 2 a k ) ( ∑ k a k ) = ν 2 ⋅ 1 \nu^2 = \Bigl(\sum_kk\sqrt{a_k}\cdot\sqrt{a_k}\Bigr)^2 \le \Bigl(\sum_kk^2a_k\Bigr)\Bigl(\sum_ka_k\Bigr) = \nu^2\cdot1 ν 2 = ( k ∑ k a k ⋅ a k ) 2 ≤ ( k ∑ k 2 a k ) ( k ∑ a k ) = ν 2 ⋅ 1 で、等号が成り立っています。Cauchy–Schwarz の不等式の等号は、ベクトル ( k a k ) k (k\sqrt{a_k})_k ( k a k ) k と ( a k ) k (\sqrt{a_k})_k ( a k ) k が比例するときに限ります。∑ k a k = 1 \sum_ka_k = 1 ∑ k a k = 1 から ( a k ) k ≠ 0 (\sqrt{a_k})_k \ne 0 ( a k ) k = 0 なので、定数 β \beta β があって k a k = β a k k\sqrt{a_k} = \beta\sqrt{a_k} k a k = β a k (すべての k k k )、すなわち a k ≠ 0 a_k \ne 0 a k = 0 となる k k k はすべて k = β k = \beta k = β です。したがって a k ≠ 0 a_k \ne 0 a k = 0 となる k k k はただ 1 つ k 0 k_0 k 0 で、a k 0 = 1 a_{k_0} = 1 a k 0 = 1 、k 0 = ∑ k k a k = − ν k_0 = \sum_kka_k = -\nu k 0 = ∑ k k a k = − ν です。ν = − k 0 \nu = -k_0 ν = − k 0 は整数で、スキームは u j n + 1 = u j − ν n u^{n+1}_j = u^n_{j-\nu} u j n + 1 = u j − ν n です。a Δ t = ν h a\Delta t = \nu h a Δ t = ν h なので、これは厳密解の関係 u ( x j , t n + 1 ) = u ( x j − ν h , t n ) u(x_j, t_{n+1}) = u(x_j - \nu h, t_n) u ( x j , t n + 1 ) = u ( x j − ν h , t n ) そのものです。
∎
2 次精度と「振動を作らない」は、線形スキームでは両立しません。風上差分(a − 1 = ν a_{-1} = \nu a − 1 = ν 、a 0 = 1 − ν a_0 = 1 - \nu a 0 = 1 − ν )は単調性を保ち 1 次精度、Lax–Wendroff(a 1 = ν ( ν − 1 ) 2 < 0 a_1 = \frac{\nu(\nu - 1)}{2} < 0 a 1 = 2 ν ( ν − 1 ) < 0 、0 < ν < 1 0 < \nu < 1 0 < ν < 1 )は 2 次精度で単調性を保ちません。
周期 1 1 1 の移流方程式 u t + u x = 0 u_t + u_x = 0 u t + u x = 0 を、ν = 0.8 \nu = 0.8 ν = 0.8 で時刻 T = 1 T = 1 T = 1 まで解きます。厳密解は u 0 ( x − t ) u_0(x - t) u 0 ( x − t ) で、T = 1 T = 1 T = 1 でちょうど 1 周して初期値に戻ります。滑らかな初期値 e sin 2 π x e^{\sin 2\pi x} e s i n 2 π x と、角のある初期値(幅 1 / 2 1/2 1/2 の三角形)で、ℓ 2 \ell^2 ℓ 2 誤差と、N N N を 2 倍にしたときの観測次数 log 2 ( e N / e 2 N ) \log_2(e_N/e_{2N}) log 2 ( e N / e 2 N ) を表にします。
# Python 3.9.6 / NumPy 2.0.2(arm64)
um, up = np. roll ( u , 1 ), np. roll ( u , - 1 ) # u_{j-1}, u_{j+1}(周期境界)
return 0.5 * (up + um) - 0.5 * nu * (up - um)
return u - 0.5 * nu * (up - um) + 0.5 * nu ** 2 * (up - 2 * u + um)
return u - 0.5 * nu * (up - um) # FTCS
def solve ( N , nu , scheme , u0 , T= 1.0 ) :
n = round ( T / (nu * h) ) # a = 1, dt = nu * h
err = u - u0 ( (x - n * nu * h) % 1.0 ) # 厳密解は平行移動
return np. sqrt ( h * np. sum ( err ** 2 ))
smooth = lambda x : np. exp ( np. sin ( 2 * np.pi * x ))
hat = lambda x : np. maximum ( 0.0 , 1 - 4 * np. abs ( x - 0.5 ))
for name, u0 in [ ( " smooth " , smooth), ( " hat " , hat) ] :
for s in [ " upwind " , " LF " , " LW " , " FTCS " ] :
e = [ solve ( N , 0.8 , s , u0 ) for N in ( 40 , 80 , 160 , 320 , 640 ) ]
o = [ np. log2 ( e [ i ] / e [ i + 1 ]) for i in range ( 4 ) ]
print ( f " {s :7s } " + " " . join ( f " {v :9.2e } " for v in e )
+ " | " + " " . join ( f " {v :6.2f } " for v in o ))
upwind 9.97e-02 5.29e-02 2.73e-02 1.39e-02 7.00e-03 | 0.91 0.95 0.98 0.99
LF 1.97e-01 1.10e-01 5.90e-02 3.06e-02 1.56e-02 | 0.84 0.90 0.95 0.97
LW 1.77e-02 4.50e-03 1.13e-03 2.82e-04 7.06e-05 | 1.98 2.00 2.00 2.00
FTCS 1.27e+00 3.32e-01 4.85e+04 2.47e+26 1.61e+69 | 1.94 -17.16 -72.11 -142.23
upwind 6.24e-02 3.68e-02 2.17e-02 1.29e-02 7.66e-03 | 0.76 0.76 0.75 0.75
LF 1.09e-01 6.69e-02 3.98e-02 2.37e-02 1.41e-02 | 0.71 0.75 0.75 0.75
LW 2.85e-02 1.43e-02 7.24e-03 3.68e-03 1.87e-03 | 1.00 0.98 0.98 0.98
FTCS 1.93e+03 1.11e+08 1.88e+18 1.70e+39 4.69e+81 |-15.81 -33.98 -69.62 -140.99
検算. (a) 参照解は閉じた形(平行移動)です。(b) 滑らかな初期値での観測次数は、風上差分と Lax–Friedrichs で 1 1 1 、Lax–Wendroff で 2 2 2 に近づき、系 7.2 と合います。FTCS は 定理 7.1 の 4 のとおり発散します。N = 640 N = 640 N = 640 ではステップ数が n = 800 n = 800 n = 800 で、max ∣ g ∣ n = ( 1 + 0.8 2 ) 400 ≈ 10 86 \max|g|^n = (1 + 0.8^2)^{400} \approx 10^{86} max ∣ g ∣ n = ( 1 + 0. 8 2 ) 400 ≈ 1 0 86 です。丸め誤差(10 − 16 10^{-16} 1 0 − 16 程度)に含まれる θ ≈ π / 2 \theta \approx \pi/2 θ ≈ π /2 の成分がこの倍率で増えるとすると 10 70 10^{70} 1 0 70 程度になり、表の 1.6 × 10 69 1.6\times10^{69} 1.6 × 1 0 69 と桁が合います。(c) 別の方法として、同じコードで ν = 1 \nu = 1 ν = 1 、N = 160 N = 160 N = 160 とすると、風上差分・Lax–Friedrichs・Lax–Wendroff の誤差は 2.1 × 10 − 16 2.1\times10^{-16} 2.1 × 1 0 − 16 、2.8 × 10 − 16 2.8\times10^{-16} 2.8 × 1 0 − 16 、2.9 × 10 − 16 2.9\times10^{-16} 2.9 × 1 0 − 16 で、例 7.3 のとおり丸めの大きさです。(d) 修正方程式の確認として、初期値を sin 2 π x \sin 2\pi x sin 2 π x 、N = 320 N = 320 N = 320 、ν = 0.8 \nu = 0.8 ν = 0.8 とすると、風上差分の解と厳密解 sin 2 π ( x − 1 ) \sin 2\pi(x - 1) sin 2 π ( x − 1 ) の ℓ 2 \ell^2 ℓ 2 距離は 8.67 × 10 − 3 8.67\times10^{-3} 8.67 × 1 0 − 3 、移流拡散方程式の解 e − 4 π 2 κ sin 2 π ( x − 1 ) e^{-4\pi^2\kappa}\sin2\pi(x - 1) e − 4 π 2 κ sin 2 π ( x − 1 ) (κ = h 2 ( 1 − ν ) \kappa = \frac{h}{2}(1 - \nu) κ = 2 h ( 1 − ν ) )との距離は 3.38 × 10 − 5 3.38\times10^{-5} 3.38 × 1 0 − 5 で、命題 8.2 の 1 のとおり後者のほうが 2 桁以上近くなります。
例 9.1 (滑らかでない初期値では次数が落ちる )
三角形の初期値は連続ですが C 1 C^1 C 1 級ではないので、系 7.2 の仮定を満たしません。表では、風上差分と Lax–Friedrichs の観測次数は約 0.75 0.75 0.75 、Lax–Wendroff は約 1 1 1 で、どれも収束はしています(定理 4.2 の前半は一般の初期値での収束を保証します)が、次数は公称の値より下がっています。精度 p p p 次のスキームを滑らかさの足りない初期値に使ったときの次数は、Brenner–Thomée–Wahlbin(参考文献)が Besov 空間を使って調べています。ここでは、次数つきの評価には解の滑らかさが本当に必要であることを確認するにとどめます。
次に、矩形波を初期値にして、CFL 数を変えたときの風上差分の最大値と、ν = 0.5 \nu = 0.5 ν = 0.5 での全変動 ∑ j ∣ u j − u j − 1 ∣ \sum_j|u_j - u_{j-1}| ∑ j ∣ u j − u j − 1 ∣ を調べます。
# Python 3.9.6 / NumPy 2.0.2(arm64)
sq = np. where ( (x >= 0.25 ) & (x < 0.75 ) , 1.0 , 0.0 ) # 矩形波
tv = lambda u : np. sum ( np. abs ( u - np. roll ( u , 1 ))) # 全変動
return u - nu * (u - np. roll ( u , 1 ))
um, up = np. roll ( u , 1 ), np. roll ( u , - 1 )
return u - 0.5 * nu * (up - um) + 0.5 * nu ** 2 * (up - 2 * u + um)
print ( " 風上差分の最大値 max|u^n| と増幅因子の最大値の n 乗 " )
for nu in ( 0.5 , 1.0 , 1.1 ):
u, g = sq. copy (), max ( 1.0 , abs ( 1 - 2 * nu ))
row. append ( f "n= {n} : {np. max ( np. abs ( u )) :9.3e } ( {g ** n :9.3e } )" )
print ( f "nu= {nu} : " + " " . join ( row ))
for name, f in [ ( " upwind " , upwind), ( " LW " , lw) ] :
u, row = sq. copy (), [ tv ( sq ) ]
print ( f " {name :7s } " + " " . join ( f " {v :8.4f } " for v in row )
+ f " min= {u. min () :8.4f } max= {u. max () :8.4f } " )
風上差分の最大値 max|u^n| と増幅因子の最大値の n 乗
nu=0.5: n=50: 1.000e+00 (1.000e+00) n=100: 1.000e+00 (1.000e+00) n=200: 9.996e-01 (1.000e+00)
nu=1.0: n=50: 1.000e+00 (1.000e+00) n=100: 1.000e+00 (1.000e+00) n=200: 1.000e+00 (1.000e+00)
nu=1.1: n=50: 9.574e+02 (9.100e+03) n=100: 6.020e+06 (8.282e+07) n=200: 3.524e+14 (6.859e+15)
upwind 2.0000 2.0000 2.0000 2.0000 min= 0.0000 max= 1.0000
LW 2.0000 2.5000 2.8801 3.4455 min= -0.2041 max= 1.2041
検算. (a) ν ≤ 1 \nu \le 1 ν ≤ 1 では最大値は 1 1 1 を超えず、定理 7.1 の 1 の ∥ u n + 1 ∥ ∞ ≤ ∥ u n ∥ ∞ \|u^{n+1}\|_\infty \le \|u^n\|_\infty ∥ u n + 1 ∥ ∞ ≤ ∥ u n ∥ ∞ と合います。(b) ν = 1.1 \nu = 1.1 ν = 1.1 では max θ ∣ g ∣ = ∣ g ( π ) ∣ = ∣ 1 − 2 ν ∣ = 1.2 \max_\theta|g| = |g(\pi)| = |1 - 2\nu| = 1.2 max θ ∣ g ∣ = ∣ g ( π ) ∣ = ∣1 − 2 ν ∣ = 1.2 で、補題 5.3 から ∥ u n ∥ h ≤ 1.2 n ∥ u 0 ∥ h \|u^n\|_h \le 1.2^n\|u^0\|_h ∥ u n ∥ h ≤ 1. 2 n ∥ u 0 ∥ h です。観測された最大値はこの上界より小さく、1 ステップあたりの増え方は n = 50 → 100 n = 50 \to 100 n = 50 → 100 で ( 6.020 × 10 6 / 957.4 ) 1 / 50 = 1.191 (6.020\times10^6/957.4)^{1/50} = 1.191 ( 6.020 × 1 0 6 /957.4 ) 1/50 = 1.191 、n = 100 → 200 n = 100 \to 200 n = 100 → 200 で 1.196 1.196 1.196 と、1.2 1.2 1.2 に下から近づいています。この矩形波は θ = π \theta = \pi θ = π の成分 ∑ j ( − 1 ) j u j \sum_j(-1)^ju_j ∑ j ( − 1 ) j u j がちょうど 0 0 0 なので、π \pi π に近い波数の成分が先に育つためです。(c) 風上差分の全変動は増えず、最小値と最大値も [ 0 , 1 ] [0, 1] [ 0 , 1 ] に収まっています(単調性を保つこと。定理 8.4 の 1)。Lax–Wendroff の全変動は増え、[ 0 , 1 ] [0,1] [ 0 , 1 ] をはみ出す振動(− 0.20 -0.20 − 0.20 と 1.20 1.20 1.20 )が現れます。これが 命題 8.2 の 2 の分散による振動です。
演習 10.1 易
a > 0 a > 0 a > 0 のとき、風下側の差分を使うスキーム u j n + 1 = u j n − ν ( u j + 1 n − u j n ) u^{n+1}_j = u^n_j - \nu(u^n_{j+1} - u^n_j) u j n + 1 = u j n − ν ( u j + 1 n − u j n ) (ν = a Δ t / h > 0 \nu = a\Delta t/h > 0 ν = a Δ t / h > 0 )は、どんな ν \nu ν でも不安定であることを、(a) 増幅因子、(b) CFL 条件の 2 通りで示せ。
解答 (a) g ( θ ) = 1 + ν − ν e i θ g(\theta) = 1 + \nu - \nu e^{i\theta} g ( θ ) = 1 + ν − ν e i θ で、g ( π ) = 1 + 2 ν > 1 g(\pi) = 1 + 2\nu > 1 g ( π ) = 1 + 2 ν > 1 です。g g g は Δ t \Delta t Δ t によらないので、定理 5.5 から不安定です。
(b) このスキームは u j n u^n_j u j n と u j + 1 n u^n_{j+1} u j + 1 n だけを使うので l = 0 l = 0 l = 0 、r = 1 r = 1 r = 1 です。定理 6.3 の必要条件は 0 ≤ − a λ ≤ 1 0 \le -a\lambda \le 1 0 ≤ − aλ ≤ 1 ですが、− a λ = − ν < 0 -a\lambda = -\nu < 0 − aλ = − ν < 0 なので成り立ちません。数値的な依存領域 [ x , x + t / λ ] [x, x + t/\lambda] [ x , x + t / λ ] は点の右側にあり、特性曲線の足 x − a t x - at x − a t は左側にあります。したがって収束せず、整合的なので 定理 4.4 により不安定です(整合性は風上差分と同じ計算で ∣ τ ∣ ≤ a h 2 ( 1 + ν ) U 2 |\tau| \le \frac{ah}{2}(1+\nu)U_2 ∣ τ ∣ ≤ 2 ah ( 1 + ν ) U 2 )。
演習 10.2 標準
a > 0 a > 0 a > 0 とする。陰的な風上差分 u j n + 1 + ν ( u j n + 1 − u j − 1 n + 1 ) = u j n u^{n+1}_j + \nu(u^{n+1}_j - u^{n+1}_{j-1}) = u^n_j u j n + 1 + ν ( u j n + 1 − u j − 1 n + 1 ) = u j n は、周期格子の上で、すべての ν > 0 \nu > 0 ν > 0 について ∥ u n + 1 ∥ h ≤ ∥ u n ∥ h \|u^{n+1}\|_h \le \|u^n\|_h ∥ u n + 1 ∥ h ≤ ∥ u n ∥ h を満たすことを示せ。CFL 条件に反しないのはなぜか。
解答 左辺の作用素を B = ( 1 + ν ) I − ν S − 1 B = (1 + \nu)I - \nu S^{-1} B = ( 1 + ν ) I − ν S − 1 と書きます(S S S は 補題 5.1 の平行移動)。補題 5.3 の証明の基底 φ ( m ) \varphi^{(m)} φ ( m ) について B φ ( m ) = b ( θ m ) φ ( m ) B\varphi^{(m)} = b(\theta_m)\varphi^{(m)} B φ ( m ) = b ( θ m ) φ ( m ) 、b ( θ ) = 1 + ν − ν e − i θ b(\theta) = 1 + \nu - \nu e^{-i\theta} b ( θ ) = 1 + ν − ν e − i θ です。
∣ b ( θ ) ∣ 2 = ( 1 + ν − ν cos θ ) 2 + ν 2 sin 2 θ = 1 + 2 ν ( 1 + ν ) ( 1 − cos θ ) = 1 + 4 ν ( 1 + ν ) sin 2 ( θ / 2 ) ≥ 1 |b(\theta)|^2 = (1 + \nu - \nu\cos\theta)^2 + \nu^2\sin^2\theta = 1 + 2\nu(1+\nu)(1 - \cos\theta) = 1 + 4\nu(1+\nu)\sin^2(\theta/2) \ge 1 ∣ b ( θ ) ∣ 2 = ( 1 + ν − ν cos θ ) 2 + ν 2 sin 2 θ = 1 + 2 ν ( 1 + ν ) ( 1 − cos θ ) = 1 + 4 ν ( 1 + ν ) sin 2 ( θ /2 ) ≥ 1 なので B B B は正則で、u n + 1 = B − 1 u n u^{n+1} = B^{-1}u^n u n + 1 = B − 1 u n は φ ( m ) \varphi^{(m)} φ ( m ) の成分を 1 / b ( θ m ) 1/b(\theta_m) 1/ b ( θ m ) 倍します。∣ 1 / b ∣ ≤ 1 |1/b| \le 1 ∣1/ b ∣ ≤ 1 と { φ ( m ) } \{\varphi^{(m)}\} { φ ( m ) } の正規直交性から ∥ u n + 1 ∥ h ≤ ∥ u n ∥ h \|u^{n+1}\|_h \le \|u^n\|_h ∥ u n + 1 ∥ h ≤ ∥ u n ∥ h です。
B − 1 B^{-1} B − 1 は一般にすべての成分が 0 0 0 でない行列で、u j n + 1 u^{n+1}_j u j n + 1 はすべての u i n u^n_i u i n に依存します。数値的な依存領域が全区間なので、どんな ν \nu ν でも特性曲線の足を含みます。定理 6.3 は陽的スキームについての定理で、陰的スキームには制限を与えません。
演習 10.3 標準
FTCS スキームを、Δ t = μ h 2 \Delta t = \mu h^2 Δ t = μ h 2 (μ > 0 \mu > 0 μ > 0 は定数)として使うと ℓ 2 \ell^2 ℓ 2 で安定になることを示せ。このときの打ち切り誤差の次数と、時刻 T T T までのステップ数を h h h で表せ。
解答 ν = a Δ t / h = a μ h \nu = a\Delta t/h = a\mu h ν = a Δ t / h = a μ h なので ν 2 = a 2 μ 2 h 2 = a 2 μ Δ t \nu^2 = a^2\mu^2h^2 = a^2\mu\Delta t ν 2 = a 2 μ 2 h 2 = a 2 μ Δ t です。定理 7.1 の 4 から ∣ g ( θ ) ∣ 2 = 1 + ν 2 sin 2 θ ≤ 1 + a 2 μ Δ t |g(\theta)|^2 = 1 + \nu^2\sin^2\theta \le 1 + a^2\mu\Delta t ∣ g ( θ ) ∣ 2 = 1 + ν 2 sin 2 θ ≤ 1 + a 2 μ Δ t で、1 + s ≤ 1 + s / 2 \sqrt{1 + s} \le 1 + s/2 1 + s ≤ 1 + s /2 から max θ ∣ g ∣ ≤ 1 + a 2 μ 2 Δ t \max_\theta|g| \le 1 + \frac{a^2\mu}{2}\Delta t max θ ∣ g ∣ ≤ 1 + 2 a 2 μ Δ t です。定理 5.5 の条件 2 が C 0 = a 2 μ / 2 C_0 = a^2\mu/2 C 0 = a 2 μ /2 で成り立つので安定で、∥ C n ∥ ≤ e a 2 μ T / 2 \|C^n\| \le e^{a^2\mu T/2} ∥ C n ∥ ≤ e a 2 μ T /2 です。打ち切り誤差は ∣ τ ∣ ≤ a 2 Δ t 2 U 2 + ∣ a ∣ h 2 6 U 3 = O ( h 2 ) |\tau| \le \frac{a^2\Delta t}{2}U_2 + \frac{|a|h^2}{6}U_3 = O(h^2) ∣ τ ∣ ≤ 2 a 2 Δ t U 2 + 6 ∣ a ∣ h 2 U 3 = O ( h 2 ) 、ステップ数は T / Δ t = T / ( μ h 2 ) T/\Delta t = T/(\mu h^2) T /Δ t = T / ( μ h 2 ) です。格子比を固定する Lax–Wendroff は同じ O ( h 2 ) O(h^2) O ( h 2 ) の精度をステップ数 O ( h − 1 ) O(h^{-1}) O ( h − 1 ) で達成するので、こちらを使う理由はありません。
演習 10.4 難
u j − 1 n , u j n , u j + 1 n u^n_{j-1}, u^n_j, u^n_{j+1} u j − 1 n , u j n , u j + 1 n だけを使う定数係数の陽的スキーム(係数は ν \nu ν だけによる)で、移流方程式に対して 定理 8.4 の 2 の意味で 2 次精度をもつものは Lax–Wendroff に限ることを示せ。また、0 < ν < 1 0 < \nu < 1 0 < ν < 1 で負の係数が現れることを確かめよ。
解答 定理 8.4 の 2 から、係数は a − 1 + a 0 + a 1 = 1 a_{-1} + a_0 + a_1 = 1 a − 1 + a 0 + a 1 = 1 、a 1 − a − 1 = − ν a_1 - a_{-1} = -\nu a 1 − a − 1 = − ν 、a 1 + a − 1 = ν 2 a_1 + a_{-1} = \nu^2 a 1 + a − 1 = ν 2 を満たします。後の 2 式から a 1 = ν 2 − ν 2 a_1 = \frac{\nu^2 - \nu}{2} a 1 = 2 ν 2 − ν 、a − 1 = ν 2 + ν 2 a_{-1} = \frac{\nu^2 + \nu}{2} a − 1 = 2 ν 2 + ν で、最初の式から a 0 = 1 − ν 2 a_0 = 1 - \nu^2 a 0 = 1 − ν 2 です。Lax–Wendroff の式を u j ± 1 n u^n_{j\pm1} u j ± 1 n 、u j n u^n_j u j n について整理すると、u j + 1 n u^n_{j+1} u j + 1 n の係数は − ν 2 + ν 2 2 -\frac{\nu}{2} + \frac{\nu^2}{2} − 2 ν + 2 ν 2 、u j − 1 n u^n_{j-1} u j − 1 n の係数は ν 2 + ν 2 2 \frac{\nu}{2} + \frac{\nu^2}{2} 2 ν + 2 ν 2 、u j n u^n_j u j n の係数は 1 − ν 2 1 - \nu^2 1 − ν 2 で、一致します。0 < ν < 1 0 < \nu < 1 0 < ν < 1 では a 1 = ν ( ν − 1 ) 2 < 0 a_1 = \frac{\nu(\nu-1)}{2} < 0 a 1 = 2 ν ( ν − 1 ) < 0 なので、定理 8.4 の 1 から単調性を保ちません。これは同じ定理の 3 と整合しています。
P. D. Lax, R. D. Richtmyer, “Survey of the stability of linear finite difference equations”, Communications on Pure and Applied Mathematics 9 (1956), 267–293 — 同等定理の原論文。
R. D. Richtmyer, K. W. Morton『Difference Methods for Initial-Value Problems』2nd ed., Interscience, 1967 — 適切性・整合性・安定性の枠組みと同等定理、von Neumann 条件。
R. Courant, K. Friedrichs, H. Lewy, “Über die partiellen Differenzengleichungen der mathematischen Physik”, Mathematische Annalen 100 (1928), 32–74 — 依存領域の条件の原論文。
J. C. Strikwerda『Finite Difference Schemes and Partial Differential Equations』2nd ed., SIAM, 2004 — Fourier 解析による安定性、散逸と分散、同等定理の証明。
B. Gustafsson, H.-O. Kreiss, J. Oliger『Time Dependent Problems and Difference Methods』Wiley, 1995 — Kreiss の行列定理と境界のあるスキームの安定性。
R. J. LeVeque『Numerical Methods for Conservation Laws』2nd ed., Birkhäuser, 1992 — 修正方程式、単調スキームと Godunov の定理、非線形の保存則。
P. Brenner, V. Thomée, L. B. Wahlbin『Besov Spaces and Applications to Difference Methods for Initial Value Problems』Lecture Notes in Mathematics 434, Springer, 1975 — 滑らかでない初期値での収束の次数。
執筆: Claude Code(Opus 5.5)、Claude Code(Sonnet 5.5)・監査 2 回(Claude Code)・最終 2026-10-12