波の動きや量子力学の粒子の動きをコンピュータで追うときは、時間を小さな刻みに区切って少しずつ進めます。熱の拡散と違って、これらの現象は時間がたっても衰えず、全体の大きさ(エネルギーや確率の総和)が一定に保たれます。ところが刻み方を誤ると、計算の上では大きさが勝手に膨らんだり、波の進み方がずれたりします。この記事を読み終えると、どんな刻み幅なら計算が壊れないか、大きさを正確に保つ刻み方は何か、そして誤差がどれだけになるかを説明できるようになります。
波動方程式を空間について離散化した系 u ′ ′ = − A u u'' = -Au u ′′ = − A u (A A A は正定値 対称行列)に対する leapfrog 法は、Δ t 2 λ max ( A ) < 4 \Delta t^2\lambda_{\max}(A) \lt 4 Δ t 2 λ m a x ( A ) < 4 のとき、かつそのときに限り解が有界にとどまります。1 次元の中心差分 では CFL 条件(波が 1 ステップで格子 1 マス分より遠くへ進まないための刻み幅の上限)c Δ t / h ≤ 1 c\Delta t/h \le 1 c Δ t / h ≤ 1 です。
leapfrog 法は離散エネルギー E n = 1 2 ∥ ( u n + 1 − u n ) / Δ t ∥ 2 + 1 2 ⟨ u n + 1 , A u n ⟩ E^n = \frac12\|(u^{n+1}-u^n)/\Delta t\|^2 + \frac12\langle u^{n+1}, Au^n\rangle E n = 2 1 ∥ ( u n + 1 − u n ) /Δ t ∥ 2 + 2 1 ⟨ u n + 1 , A u n ⟩ を厳密に保存します。安定条件のもとで E n E^n E n は正定値で、これから誤差評価 O ( Δ t 2 + h 2 ) O(\Delta t^2 + h^2) O ( Δ t 2 + h 2 ) が出ます。振幅は保たれますが、位相速度(波の山が進む速さ)は − ( 1 − ν 2 ) ( k h ) 2 / 24 -(1-\nu^2)(kh)^2/24 − ( 1 − ν 2 ) ( k h ) 2 /24 の割合でずれ、長時間では位相の誤差が蓄積します。
Schrödinger 方程式を離散化した系 i ψ ′ = H ψ i\psi' = H\psi i ψ ′ = H ψ に対する Crank–Nicolson 法(Cayley 変換)はユニタリ (ベクトルの長さを変えない変換)で、ノルムとエネルギーを厳密に保存し、誤差は t Δ t 2 12 ∥ H 3 ψ 0 ∥ \frac{t\,\Delta t^2}{12}\|H^3\psi_0\| 12 t Δ t 2 ∥ H 3 ψ 0 ∥ 以下です。陽的 Euler 法はどんな刻み幅でもノルムを増やします。
H = A + B H = A + B H = A + B を分けて e − i τ A e^{-i\tau A} e − i τ A と e − i τ B e^{-i\tau B} e − i τ B を交互に掛ける分割法は、各因子がユニタリなので積もユニタリです。誤差は交換子(A A A と B B B を掛ける順序を入れ替えたときのずれ A B − B A AB - BA A B − B A )で決まり、Lie–Trotter 分割で t τ 2 ∥ [ A , B ] ∥ \frac{t\tau}{2}\|[A,B]\| 2 t τ ∥ [ A , B ] ∥ 、Strang 分割で t τ 2 ( 1 12 ∥ [ A , [ A , B ] ] ∥ + 1 24 ∥ [ B , [ B , A ] ] ∥ ) t\tau^2\bigl(\frac1{12}\|[A,[A,B]]\| + \frac1{24}\|[B,[B,A]]\|\bigr) t τ 2 ( 12 1 ∥ [ A , [ A , B ]] ∥ + 24 1 ∥ [ B , [ B , A ]] ∥ ) 以下です。
全空間の問題を有限の箱で計算したときの誤差は、箱の外に出た波動関数の大きさを時間について積分したもので抑えられます。
この記事で使う事前知識
ユニタリ行列 : ベクトルの長さと内積を変えない行列(U ∗ U = I U^{*}U = I U ∗ U = I を満たす)。→ ユニタリ行列
エルミート行列 : 転置して複素共役をとっても変わらない行列。実対称行列の複素版で、固有値は実数。→ エルミート行列
正定値 : 零でないどのベクトル x x x についても ⟨ x , A x ⟩ > 0 \langle x, Ax\rangle \gt 0 ⟨ x , A x ⟩ > 0 となる対称行列。→ 正定値
行列の指数関数 : e t A e^{tA} e t A を冪級数で定めたもので、u ′ = A u u' = Au u ′ = A u の解を与える。→ 行列指数関数
中心差分 : 点 x x x の前後の格子点の値の差で微分を近似する方法。→ 中心差分
熱方程式の解は時間とともに滑らかになり、高い波数の成分はすぐに減衰します。そのため、数値解法が高い波数の成分を少し間違えても、誤差は自然に消えていきます。波動方程式と Schrödinger 方程式はそうではありません。波動方程式はエネルギー 1 2 ∫ ( u t 2 + c 2 u x 2 ) d x \frac12\int(u_t^2 + c^2u_x^2)dx 2 1 ∫ ( u t 2 + c 2 u x 2 ) d x を保存し(定理 5.1[波動方程式] )、Schrödinger 方程式は確率の総和 ∫ ∣ ψ ∣ 2 d x \int|\psi|^2dx ∫ ∣ ψ ∣ 2 d x を保存します。どの波数の成分も減衰せず、位相を変えながら永久に残ります。
このことは数値解法に 2 つの要求を課します。1 つは、保存量を壊さないことです。Schrödinger 方程式に陽的 Euler 法を使うと、∥ ψ ∥ \|\psi\| ∥ ψ ∥ は毎ステップ必ず増え、確率の総和が 1 を超えていきます(§6)。もう 1 つは、位相を正しく進めることです。振幅が正確でも、位相速度が波数によって少しずつずれると、波束は時間とともに形を崩します(§5)。
この章では、空間の離散化(差分法・スペクトル法)は済んでいるものとして、行列の常微分方程式 u ′ ′ = − A u u'' = -Au u ′′ = − A u と i ψ ′ = H ψ i\psi' = H\psi i ψ ′ = H ψ の時間積分を扱います。A A A と H H H は対称・エルミートなので、固有分解(定理 4.2[スペクトル定理] )によって、すべての主張はスカラーの漸化式と不等式に帰着します。分割法の誤差評価は、虚時間の場合を含む一般の形を経路積分 Monte Carlo 法 の章で証明し、ここではユニタリな場合の系として使います。
定義 2.1 (空間を離散化した波動方程式と Schrödinger 方程式 ) ↗
A A A を d d d 次の実対称な正定値行列、H H H を d d d 次のエルミート行列とする。
u ′ ′ ( t ) = − A u ( t ) , u ( 0 ) = g , u ′ ( 0 ) = g 1 と i ψ ′ ( t ) = H ψ ( t ) , ψ ( 0 ) = ψ 0 u''(t) = -Au(t),\quad u(0) = g,\ u'(0) = g_1\qquad\text{と}\qquad i\psi'(t) = H\psi(t),\quad \psi(0) = \psi_0 u ′′ ( t ) = − A u ( t ) , u ( 0 ) = g , u ′ ( 0 ) = g 1 と i ψ ′ ( t ) = H ψ ( t ) , ψ ( 0 ) = ψ 0 を、それぞれ半離散の波動方程式 、半離散の Schrödinger 方程式 という。A A A の固有値を 0 < λ 1 ≤ ⋯ ≤ λ d 0 \lt \lambda_1 \le \cdots \le \lambda_d 0 < λ 1 ≤ ⋯ ≤ λ d と書く。⟨ x , y ⟩ = ∑ j x ˉ j y j \langle x, y\rangle = \sum_j\bar x_jy_j ⟨ x , y ⟩ = ∑ j x ˉ j y j 、∥ x ∥ = ⟨ x , x ⟩ 1 / 2 \|x\| = \langle x, x\rangle^{1/2} ∥ x ∥ = ⟨ x , x ⟩ 1/2 は C d \mathbb{C}^d C d の標準内積とノルム、行列のノルム ∥ ⋅ ∥ \|\cdot\| ∥ ⋅ ∥ はそれから誘導される作用素ノルム(2 ノルム)とする。交換子を [ X , Y ] = X Y − Y X [X, Y] = XY - YX [ X , Y ] = X Y − Y X と書く。
1 次元の波動方程式 u t t = c 2 u x x u_{tt} = c^2u_{xx} u tt = c 2 u xx (0 < x < 1 0 \lt x \lt 1 0 < x < 1 、両端で 0)を h = 1 / M h = 1/M h = 1/ M の格子で中心差分により離散化すると、A A A は ( M − 1 ) (M-1) ( M − 1 ) 次の三重対角行列 c 2 h 2 t r i d i a g ( − 1 , 2 , − 1 ) \frac{c^2}{h^2}\mathrm{tridiag}(-1, 2, -1) h 2 c 2 tridiag ( − 1 , 2 , − 1 ) で、固有値は
λ k = 4 c 2 h 2 sin 2 k π h 2 ( k = 1 , … , M − 1 ) \lambda_k = \frac{4c^2}{h^2}\sin^2\frac{k\pi h}{2}\qquad(k = 1, \ldots, M-1) λ k = h 2 4 c 2 sin 2 2 k π h ( k = 1 , … , M − 1 )
です(補題 8.3[行列のノルムと線形方程式の条件数] で α = 2 c 2 / h 2 \alpha = 2c^2/h^2 α = 2 c 2 / h 2 、β = − c 2 / h 2 \beta = -c^2/h^2 β = − c 2 / h 2 )。Schrödinger 方程式 i ψ t = − 1 2 ψ x x + V ψ i\psi_t = -\frac12\psi_{xx} + V\psi i ψ t = − 2 1 ψ xx + V ψ では H = 1 2 h 2 t r i d i a g ( − 1 , 2 , − 1 ) + d i a g ( V ( x j ) ) H = \frac{1}{2h^2}\mathrm{tridiag}(-1,2,-1) + \mathrm{diag}(V(x_j)) H = 2 h 2 1 tridiag ( − 1 , 2 , − 1 ) + diag ( V ( x j )) です。格子関数については、h h h の重みをつけたノルム ∥ v ∥ h = h ∥ v ∥ \|v\|_h = \sqrt h\|v\| ∥ v ∥ h = h ∥ v ∥ と内積 ⟨ v , w ⟩ h = h ⟨ v , w ⟩ \langle v, w\rangle_h = h\langle v, w\rangle ⟨ v , w ⟩ h = h ⟨ v , w ⟩ も使います。
補題 2.2 (エルミート行列の生成するユニタリ群 ) ✓
H H H をエルミート行列、H = U Λ U ∗ H = U\Lambda U^{*} H = U Λ U ∗ (U U U はユニタリ、Λ = d i a g ( μ 1 , … , μ d ) \Lambda = \mathrm{diag}(\mu_1, \ldots, \mu_d) Λ = diag ( μ 1 , … , μ d ) は実対角)をその固有分解とする。実数 t t t について e − i t H = U d i a g ( e − i t μ k ) U ∗ e^{-itH} = U\,\mathrm{diag}(e^{-it\mu_k})\,U^{*} e − i t H = U diag ( e − i t μ k ) U ∗ で、これはユニタリ行列であり、H H H と可換である。半離散の Schrödinger 方程式の解は ψ ( t ) = e − i t H ψ 0 \psi(t) = e^{-itH}\psi_0 ψ ( t ) = e − i t H ψ 0 で、∥ ψ ( t ) ∥ = ∥ ψ 0 ∥ \|\psi(t)\| = \|\psi_0\| ∥ ψ ( t ) ∥ = ∥ ψ 0 ∥ 、⟨ ψ ( t ) , H ψ ( t ) ⟩ = ⟨ ψ 0 , H ψ 0 ⟩ \langle\psi(t), H\psi(t)\rangle = \langle\psi_0, H\psi_0\rangle ⟨ ψ ( t ) , H ψ ( t )⟩ = ⟨ ψ 0 , H ψ 0 ⟩ を満たす。また、∥ X ∥ ≤ 1 \|X\| \le 1 ∥ X ∥ ≤ 1 、∥ Y ∥ ≤ 1 \|Y\| \le 1 ∥ Y ∥ ≤ 1 である行列について ∥ X n − Y n ∥ ≤ n ∥ X − Y ∥ \|X^n - Y^n\| \le n\|X - Y\| ∥ X n − Y n ∥ ≤ n ∥ X − Y ∥ (n ≥ 1 n \ge 1 n ≥ 1 )である。
証明(補題 2.2) 固有分解は 定理 4.2[スペクトル定理] です。命題 4.2[線形微分方程式系] の 4 から U ∗ e − i t H U = e − i t U ∗ H U = e − i t Λ U^{*}e^{-itH}U = e^{-itU^{*}HU} = e^{-it\Lambda} U ∗ e − i t H U = e − i t U ∗ H U = e − i t Λ で、対角行列の指数関数は定義の級数(定義 4.1[線形微分方程式系] )から d i a g ( e − i t μ k ) \mathrm{diag}(e^{-it\mu_k}) diag ( e − i t μ k ) です。∣ e − i t μ k ∣ = 1 |e^{-it\mu_k}| = 1 ∣ e − i t μ k ∣ = 1 なので e − i t H e^{-itH} e − i t H はユニタリです(定理 8.1[スペクトル定理] )。H = U Λ U ∗ H = U\Lambda U^{*} H = U Λ U ∗ と e − i t H e^{-itH} e − i t H は同じ U U U で対角化されるので可換です。同じ命題の 3 から d d t e − i t H ψ 0 = − i H e − i t H ψ 0 \frac{d}{dt}e^{-itH}\psi_0 = -iHe^{-itH}\psi_0 d t d e − i t H ψ 0 = − i H e − i t H ψ 0 で、解の一意性(定理 3.1[線形微分方程式系] )から ψ ( t ) = e − i t H ψ 0 \psi(t) = e^{-itH}\psi_0 ψ ( t ) = e − i t H ψ 0 です。ユニタリ行列はノルムと内積を保つので(命題 3.2[スペクトル定理] )、∥ ψ ( t ) ∥ = ∥ ψ 0 ∥ \|\psi(t)\| = \|\psi_0\| ∥ ψ ( t ) ∥ = ∥ ψ 0 ∥ 、⟨ ψ ( t ) , H ψ ( t ) ⟩ = ⟨ e − i t H ψ 0 , e − i t H H ψ 0 ⟩ = ⟨ ψ 0 , H ψ 0 ⟩ \langle\psi(t), H\psi(t)\rangle = \langle e^{-itH}\psi_0, e^{-itH}H\psi_0\rangle = \langle\psi_0, H\psi_0\rangle ⟨ ψ ( t ) , H ψ ( t )⟩ = ⟨ e − i t H ψ 0 , e − i t H H ψ 0 ⟩ = ⟨ ψ 0 , H ψ 0 ⟩ です。
最後の主張は X n − Y n = ∑ j = 0 n − 1 X n − 1 − j ( X − Y ) Y j X^n - Y^n = \sum_{j=0}^{n-1}X^{n-1-j}(X - Y)Y^j X n − Y n = ∑ j = 0 n − 1 X n − 1 − j ( X − Y ) Y j と、各項のノルムが ∥ X ∥ n − 1 − j ∥ X − Y ∥ ∥ Y ∥ j ≤ ∥ X − Y ∥ \|X\|^{n-1-j}\|X - Y\|\|Y\|^j \le \|X - Y\| ∥ X ∥ n − 1 − j ∥ X − Y ∥∥ Y ∥ j ≤ ∥ X − Y ∥ であることから出ます。
∎
定義 3.1 (leapfrog 法 ) ↗
半離散の波動方程式に対し、t n = n Δ t t_n = n\Delta t t n = n Δ t での近似 u n u^n u n を
u n + 1 − 2 u n + u n − 1 = − Δ t 2 A u n ( n ≥ 1 ) u^{n+1} - 2u^n + u^{n-1} = -\Delta t^2Au^n\qquad(n \ge 1) u n + 1 − 2 u n + u n − 1 = − Δ t 2 A u n ( n ≥ 1 ) で定める方法を leapfrog 法 (Störmer–Verlet 法)という。出発値 u 0 u^0 u 0 、u 1 u^1 u 1 は別に与える。すべての出発値について sup n ∥ u n ∥ < ∞ \sup_n\|u^n\| \lt \infty sup n ∥ u n ∥ < ∞ であるとき、(その A A A と Δ t \Delta t Δ t について)安定 であるという。
左辺を Δ t 2 \Delta t^2 Δ t 2 で割ったものは u ′ ′ ( t n ) u''(t_n) u ′′ ( t n ) の 2 階中心差分です。3 つの時刻の値を使う 2 段のスキームなので、差分法の整合性・安定性・収束 の 1 段スキームの枠組みはそのままでは使えませんが、固有分解でスカラーの 3 項漸化式に帰着させれば直接調べられます。
次の補題は、各固有成分が従う 3 項漸化式の解を、μ \mu μ の大きさで場合分けして書き下すものです。μ < 4 \mu \lt 4 μ < 4 なら解は振動して有界にとどまり、μ ≥ 4 \mu \ge 4 μ ≥ 4 なら増大する、という分かれ目がそのまま安定条件になります。証明は解の形を与えて漸化式と出発値を満たすことを確かめるだけですが、cos φ = 1 − μ / 2 \cos\varphi = 1 - \mu/2 cos φ = 1 − μ /2 という形は、z n z^n z n の形の解を探したときの特性方程式 z 2 − ( 2 − μ ) z + 1 = 0 z^2 - (2-\mu)z + 1 = 0 z 2 − ( 2 − μ ) z + 1 = 0 の根が、μ < 4 \mu \lt 4 μ < 4 では絶対値 1 の複素数 e ± i φ e^{\pm i\varphi} e ± i φ になることから来ています。
補題 3.2 (3 項漸化式の解 ) ✓
μ > 0 \mu \gt 0 μ > 0 とし、複素数列 ( y n ) n ≥ 0 (y^n)_{n\ge0} ( y n ) n ≥ 0 が y n + 1 − ( 2 − μ ) y n + y n − 1 = 0 y^{n+1} - (2 - \mu)y^n + y^{n-1} = 0 y n + 1 − ( 2 − μ ) y n + y n − 1 = 0 (n ≥ 1 n \ge 1 n ≥ 1 )を満たすとする。
0 < μ < 4 0 \lt \mu \lt 4 0 < μ < 4 のとき、cos φ = 1 − μ / 2 \cos\varphi = 1 - \mu/2 cos φ = 1 − μ /2 で定まる φ ∈ ( 0 , π ) \varphi \in (0, \pi) φ ∈ ( 0 , π ) について
y n = y 0 cos n φ + y 1 − y 0 cos φ sin φ sin n φ , ∣ y n ∣ ≤ ∣ y 0 ∣ + ∣ y 1 − y 0 cos φ ∣ sin φ . y^n = y^0\cos n\varphi + \frac{y^1 - y^0\cos\varphi}{\sin\varphi}\sin n\varphi,\qquad |y^n| \le |y^0| + \frac{|y^1 - y^0\cos\varphi|}{\sin\varphi}. y n = y 0 cos n φ + sin φ y 1 − y 0 cos φ sin n φ , ∣ y n ∣ ≤ ∣ y 0 ∣ + sin φ ∣ y 1 − y 0 cos φ ∣ .
μ = 4 \mu = 4 μ = 4 のとき y n = ( − 1 ) n ( y 0 − n ( y 0 + y 1 ) ) y^n = (-1)^n\bigl(y^0 - n(y^0 + y^1)\bigr) y n = ( − 1 ) n ( y 0 − n ( y 0 + y 1 ) ) 。y 1 ≠ − y 0 y^1 \ne -y^0 y 1 = − y 0 なら ∣ y n ∣ → ∞ |y^n| \to \infty ∣ y n ∣ → ∞ (1 次の増大)。
μ > 4 \mu \gt 4 μ > 4 のとき、z = 1 2 ( 2 − μ − μ 2 − 4 μ ) z = \frac12\bigl(2 - \mu - \sqrt{\mu^2 - 4\mu}\bigr) z = 2 1 ( 2 − μ − μ 2 − 4 μ ) は z < − 1 z \lt -1 z < − 1 を満たす実数で、y n = z n y^n = z^n y n = z n は解である(幾何級数的な増大)。
証明(補題 3.2) 漸化式は y 0 y^0 y 0 、y 1 y^1 y 1 から y n y^n y n を一意に決めるので、各場合に、右辺の式が漸化式を満たし、n = 0 , 1 n = 0, 1 n = 0 , 1 で y 0 y^0 y 0 、y 1 y^1 y 1 に一致することを確かめれば十分です。
加法定理から cos ( n + 1 ) φ + cos ( n − 1 ) φ = 2 cos φ cos n φ \cos(n+1)\varphi + \cos(n-1)\varphi = 2\cos\varphi\cos n\varphi cos ( n + 1 ) φ + cos ( n − 1 ) φ = 2 cos φ cos n φ 、sin ( n + 1 ) φ + sin ( n − 1 ) φ = 2 cos φ sin n φ \sin(n+1)\varphi + \sin(n-1)\varphi = 2\cos\varphi\sin n\varphi sin ( n + 1 ) φ + sin ( n − 1 ) φ = 2 cos φ sin n φ で、2 cos φ = 2 − μ 2\cos\varphi = 2 - \mu 2 cos φ = 2 − μ なので、cos n φ \cos n\varphi cos n φ と sin n φ \sin n\varphi sin n φ はどちらも漸化式を満たします。n = 0 n = 0 n = 0 で右辺は y 0 y^0 y 0 、n = 1 n = 1 n = 1 で y 0 cos φ + ( y 1 − y 0 cos φ ) = y 1 y^0\cos\varphi + (y^1 - y^0\cos\varphi) = y^1 y 0 cos φ + ( y 1 − y 0 cos φ ) = y 1 です。不等式は ∣ cos n φ ∣ ≤ 1 |\cos n\varphi| \le 1 ∣ cos n φ ∣ ≤ 1 、∣ sin n φ ∣ ≤ 1 |\sin n\varphi| \le 1 ∣ sin n φ ∣ ≤ 1 から出ます。
y n = ( − 1 ) n ( a + b n ) y^n = (-1)^n(a + bn) y n = ( − 1 ) n ( a + bn ) を y n + 1 + 2 y n + y n − 1 y^{n+1} + 2y^n + y^{n-1} y n + 1 + 2 y n + y n − 1 に入れると ( − 1 ) n + 1 [ ( a + b ( n + 1 ) ) − 2 ( a + b n ) + ( a + b ( n − 1 ) ) ] = 0 (-1)^{n+1}\bigl[(a + b(n+1)) - 2(a + bn) + (a + b(n-1))\bigr] = 0 ( − 1 ) n + 1 [ ( a + b ( n + 1 )) − 2 ( a + bn ) + ( a + b ( n − 1 )) ] = 0 です。a = y 0 a = y^0 a = y 0 、b = − ( y 0 + y 1 ) b = -(y^0 + y^1) b = − ( y 0 + y 1 ) とすると n = 1 n = 1 n = 1 で − ( y 0 − y 0 − y 1 ) = y 1 -(y^0 - y^0 - y^1) = y^1 − ( y 0 − y 0 − y 1 ) = y 1 です。
z z z は z 2 − ( 2 − μ ) z + 1 = 0 z^2 - (2-\mu)z + 1 = 0 z 2 − ( 2 − μ ) z + 1 = 0 の解なので z n z^n z n は漸化式を満たします。μ > 4 \mu \gt 4 μ > 4 なら μ 2 − 4 μ > 0 \mu^2 - 4\mu \gt 0 μ 2 − 4 μ > 0 で z z z は実数、2 − μ < − 2 2 - \mu \lt -2 2 − μ < − 2 から z < 1 2 ( 2 − μ ) < − 1 z \lt \frac12(2 - \mu) \lt -1 z < 2 1 ( 2 − μ ) < − 1 です。
∎
定理 3.3 (leapfrog 法の安定条件 ) ✓
定義 3.1 の leapfrog 法が安定であるためには、Δ t 2 λ d < 4 \Delta t^2\lambda_d \lt 4 Δ t 2 λ d < 4 が必要十分である。Δ t 2 λ d = 4 \Delta t^2\lambda_d = 4 Δ t 2 λ d = 4 のときは ∥ u n ∥ \|u^n\| ∥ u n ∥ が n n n に比例して増える解が、Δ t 2 λ d > 4 \Delta t^2\lambda_d \gt 4 Δ t 2 λ d > 4 のときは幾何級数的に増える解が存在する。
証明(定理 3.3) A A A の固有ベクトルからなる正規直交基底 q 1 , … , q d q_1, \ldots, q_d q 1 , … , q d (A q k = λ k q k Aq_k = \lambda_kq_k A q k = λ k q k )をとり(定理 4.2[スペクトル定理] )、y k n = ⟨ q k , u n ⟩ y_k^n = \langle q_k, u^n\rangle y k n = ⟨ q k , u n ⟩ とおきます。leapfrog 法の式と q k q_k q k の内積をとると、⟨ q k , A u n ⟩ = ⟨ A q k , u n ⟩ = λ k y k n \langle q_k, Au^n\rangle = \langle Aq_k, u^n\rangle = \lambda_ky_k^n ⟨ q k , A u n ⟩ = ⟨ A q k , u n ⟩ = λ k y k n から
y k n + 1 − ( 2 − μ k ) y k n + y k n − 1 = 0 , μ k = Δ t 2 λ k > 0 y_k^{n+1} - (2 - \mu_k)\,y_k^n + y_k^{n-1} = 0,\qquad \mu_k = \Delta t^2\lambda_k \gt 0 y k n + 1 − ( 2 − μ k ) y k n + y k n − 1 = 0 , μ k = Δ t 2 λ k > 0 です。∥ u n ∥ 2 = ∑ k ∣ y k n ∣ 2 \|u^n\|^2 = \sum_k|y_k^n|^2 ∥ u n ∥ 2 = ∑ k ∣ y k n ∣ 2 です。
Δ t 2 λ d < 4 \Delta t^2\lambda_d \lt 4 Δ t 2 λ d < 4 なら、すべての k k k で 0 < μ k < 4 0 \lt \mu_k \lt 4 0 < μ k < 4 なので、補題 3.2 の 1 から各 ∣ y k n ∣ |y_k^n| ∣ y k n ∣ は n n n について有界で、∥ u n ∥ \|u^n\| ∥ u n ∥ も有界です。Δ t 2 λ d = 4 \Delta t^2\lambda_d = 4 Δ t 2 λ d = 4 なら、u 0 = q d u^0 = q_d u 0 = q d 、u 1 = 0 u^1 = 0 u 1 = 0 とすると y k n = 0 y_k^n = 0 y k n = 0 (k ≠ d k \ne d k = d )、同じ補題の 2 から y d n = ( − 1 ) n ( 1 − n ) y_d^n = (-1)^n(1 - n) y d n = ( − 1 ) n ( 1 − n ) で、∥ u n ∥ = ∣ n − 1 ∣ \|u^n\| = |n - 1| ∥ u n ∥ = ∣ n − 1∣ です。Δ t 2 λ d > 4 \Delta t^2\lambda_d \gt 4 Δ t 2 λ d > 4 なら、u 0 = q d u^0 = q_d u 0 = q d 、u 1 = z q d u^1 = zq_d u 1 = z q d (z z z は同じ補題の 3 のもの)とすると u n = z n q d u^n = z^nq_d u n = z n q d 、∥ u n ∥ = ∣ z ∣ n \|u^n\| = |z|^n ∥ u n ∥ = ∣ z ∣ n です。
∎
系 3.4 (波動方程式の中心差分と CFL 条件 ) ✓
1 次元の波動方程式 u t t = c 2 u x x u_{tt} = c^2u_{xx} u tt = c 2 u xx の中心差分と leapfrog 法について、ν = c Δ t / h \nu = c\Delta t/h ν = c Δ t / h とおく。
区間 ( 0 , 1 ) (0,1) ( 0 , 1 ) で両端 0(h = 1 / M h = 1/M h = 1/ M )のとき、安定であるための必要十分条件は ν sin ( ( M − 1 ) π / ( 2 M ) ) < 1 \nu\sin\bigl((M-1)\pi/(2M)\bigr) \lt 1 ν sin ( ( M − 1 ) π / ( 2 M ) ) < 1 である。したがって ν ≤ 1 \nu \le 1 ν ≤ 1 ならすべての M M M で安定であり、ν > 1 \nu \gt 1 ν > 1 なら十分大きいすべての M M M で不安定である。
周期境界で格子点の数 N N N が偶数のとき、A A A は固有値 0(定数の格子関数)をもつ半正定値行列である。定数の成分を除いた部分(成分の和が 0 である出発値 u 0 u^0 u 0 、u 1 u^1 u 1 )について、sup n ∥ u n ∥ < ∞ \sup_n\|u^n\| \lt \infty sup n ∥ u n ∥ < ∞ がつねに成り立つための必要十分条件は ν < 1 \nu \lt 1 ν < 1 である。ν = 1 \nu = 1 ν = 1 のとき u j n = ( − 1 ) j + n n u_j^n = (-1)^{j+n}n u j n = ( − 1 ) j + n n は解で、1 次で増大する。
証明(系 3.4)
§2 の固有値の式から Δ t 2 λ M − 1 = 4 ν 2 sin 2 ( ( M − 1 ) π / ( 2 M ) ) \Delta t^2\lambda_{M-1} = 4\nu^2\sin^2((M-1)\pi/(2M)) Δ t 2 λ M − 1 = 4 ν 2 sin 2 (( M − 1 ) π / ( 2 M )) で、定理 3.3 の条件は ν sin ( ( M − 1 ) π / ( 2 M ) ) < 1 \nu\sin((M-1)\pi/(2M)) \lt 1 ν sin (( M − 1 ) π / ( 2 M )) < 1 です。sin < 1 \sin \lt 1 sin < 1 なので ν ≤ 1 \nu \le 1 ν ≤ 1 なら成り立ちます。M → ∞ M \to \infty M → ∞ で sin ( ( M − 1 ) π / ( 2 M ) ) → 1 \sin((M-1)\pi/(2M)) \to 1 sin (( M − 1 ) π / ( 2 M )) → 1 なので、ν > 1 \nu \gt 1 ν > 1 なら十分大きい M M M で破れます。
周期境界の行列 A A A は半正定値で、v = ( ( − 1 ) j ) j v = ((-1)^j)_j v = (( − 1 ) j ) j (N N N が偶数なので周期的)について ( A v ) j = − c 2 h 2 ( v j + 1 − 2 v j + v j − 1 ) = 4 c 2 h 2 v j (Av)_j = -\frac{c^2}{h^2}(v_{j+1} - 2v_j + v_{j-1}) = \frac{4c^2}{h^2}v_j ( A v ) j = − h 2 c 2 ( v j + 1 − 2 v j + v j − 1 ) = h 2 4 c 2 v j です。一般に v j = e 2 π i j m / N v_j = e^{2\pi ijm/N} v j = e 2 π ij m / N は固有値 4 c 2 h 2 sin 2 ( π m / N ) \frac{4c^2}{h^2}\sin^2(\pi m/N) h 2 4 c 2 sin 2 ( π m / N ) の固有ベクトルで、m = 0 , … , N − 1 m = 0, \ldots, N-1 m = 0 , … , N − 1 の N N N 個は互いに直交して C N \mathbb{C}^N C N の基底をなすので(m ≠ m ′ m \ne m' m = m ′ のとき ∑ j = 0 N − 1 e 2 π i j ( m − m ′ ) / N = 0 \sum_{j=0}^{N-1}e^{2\pi ij(m-m')/N} = 0 ∑ j = 0 N − 1 e 2 π ij ( m − m ′ ) / N = 0 。等比数列の和の公式による)、最大固有値は m = N / 2 m = N/2 m = N /2 の 4 c 2 / h 2 4c^2/h^2 4 c 2 / h 2 です。m = 0 m = 0 m = 0 の固有値 0 の成分は y n + 1 − 2 y n + y n − 1 = 0 y^{n+1} - 2y^n + y^{n-1} = 0 y n + 1 − 2 y n + y n − 1 = 0 を満たし、出発値が y 1 = y 0 y^1 = y^0 y 1 = y 0 でなければ 1 次で増えますが、これは方程式 u t t = c 2 u x x u_{tt} = c^2u_{xx} u tt = c 2 u xx の解 u = t u = t u = t に対応する正しい振る舞いなので、安定性は m ≠ 0 m \ne 0 m = 0 の成分について考えます。その条件は 補題 3.2 から 4 ν 2 < 4 4\nu^2 \lt 4 4 ν 2 < 4 です。ν = 1 \nu = 1 ν = 1 のとき、u j n = ( − 1 ) j + n n u_j^n = (-1)^{j+n}n u j n = ( − 1 ) j + n n を代入すると、左辺は ( − 1 ) j + n [ − ( n + 1 ) − 2 n − ( n − 1 ) ] = − 4 n ( − 1 ) j + n (-1)^{j+n}\bigl[-(n+1) - 2n - (n-1)\bigr] = -4n(-1)^{j+n} ( − 1 ) j + n [ − ( n + 1 ) − 2 n − ( n − 1 ) ] = − 4 n ( − 1 ) j + n 、右辺は ν 2 ( u j + 1 n − 2 u j n + u j − 1 n ) = ( − 1 ) j + n n ( − 1 − 2 − 1 ) = − 4 n ( − 1 ) j + n \nu^2(u_{j+1}^n - 2u_j^n + u_{j-1}^n) = (-1)^{j+n}n(-1 - 2 - 1) = -4n(-1)^{j+n} ν 2 ( u j + 1 n − 2 u j n + u j − 1 n ) = ( − 1 ) j + n n ( − 1 − 2 − 1 ) = − 4 n ( − 1 ) j + n で一致します。
∎
ν ≤ 1 \nu \le 1 ν ≤ 1 は、数値的な依存領域が波動方程式の依存領域(定理 5.3[波動方程式] )を含むという CFL 条件(定理 6.3[差分法の整合性・安定性・収束] )と同じ条件です。1 の ν = 1 \nu = 1 ν = 1 の場合、各 M M M では安定ですが、補題 3.2 の 1 の評価の分母 sin φ \sin\varphi sin φ は最高波数で sin ( π h ) ≈ π h \sin(\pi h) \approx \pi h sin ( π h ) ≈ π h まで小さくなり、解の大きさの評価は h → 0 h \to 0 h → 0 で一様ではありません。h h h について一様な評価を得るには、次節のエネルギーを使います。
前節の安定条件は固有値ごとの議論から出ましたが、h → 0 h \to 0 h → 0 で行列の次元が増える問題では、次元によらない形の評価が欲しくなります。そこで、連続のエネルギー保存に対応する量を離散化して、leapfrog 法が厳密に保存する量を探します。位置エネルギーを同じ時刻の ⟨ u n , A u n ⟩ \langle u^n, Au^n\rangle ⟨ u n , A u n ⟩ ではなく、隣り合う時刻の積 ⟨ u n + 1 , A u n ⟩ \langle u^{n+1}, Au^n\rangle ⟨ u n + 1 , A u n ⟩ にするのが、次の定理で保存を成り立たせる工夫です。
定理 4.1 (leapfrog 法の離散エネルギー ) ✓
A A A を実対称な正定値行列、θ = Δ t 2 λ d / 4 \theta = \Delta t^2\lambda_d/4 θ = Δ t 2 λ d /4 とする。実ベクトルの列 u n u^n u n が、与えられた r n r^n r n について
u n + 1 − 2 u n + u n − 1 = − Δ t 2 A u n + Δ t 2 r n ( n ≥ 1 ) u^{n+1} - 2u^n + u^{n-1} = -\Delta t^2Au^n + \Delta t^2r^n\qquad(n \ge 1) u n + 1 − 2 u n + u n − 1 = − Δ t 2 A u n + Δ t 2 r n ( n ≥ 1 ) を満たすとし、δ n = ( u n + 1 − u n ) / Δ t \delta^n = (u^{n+1} - u^n)/\Delta t δ n = ( u n + 1 − u n ) /Δ t 、u ˉ n = ( u n + 1 + u n ) / 2 \bar u^n = (u^{n+1} + u^n)/2 u ˉ n = ( u n + 1 + u n ) /2 、
E n = 1 2 ∥ δ n ∥ 2 + 1 2 ⟨ u n + 1 , A u n ⟩ E^n = \frac12\|\delta^n\|^2 + \frac12\langle u^{n+1}, Au^n\rangle E n = 2 1 ∥ δ n ∥ 2 + 2 1 ⟨ u n + 1 , A u n ⟩ とおく。
E n − E n − 1 = Δ t 2 ⟨ r n , δ n + δ n − 1 ⟩ E^n - E^{n-1} = \frac{\Delta t}{2}\langle r^n, \delta^n + \delta^{n-1}\rangle E n − E n − 1 = 2 Δ t ⟨ r n , δ n + δ n − 1 ⟩ 。とくに r n = 0 r^n = 0 r n = 0 なら E n = E 0 E^n = E^0 E n = E 0 (すべての n n n )である。
E n = 1 2 ∥ δ n ∥ 2 − Δ t 2 8 ⟨ A δ n , δ n ⟩ + 1 2 ⟨ A u ˉ n , u ˉ n ⟩ E^n = \frac12\|\delta^n\|^2 - \frac{\Delta t^2}{8}\langle A\delta^n, \delta^n\rangle + \frac12\langle A\bar u^n, \bar u^n\rangle E n = 2 1 ∥ δ n ∥ 2 − 8 Δ t 2 ⟨ A δ n , δ n ⟩ + 2 1 ⟨ A u ˉ n , u ˉ n ⟩ で、
1 − θ 2 ∥ δ n ∥ 2 + 1 2 ⟨ A u ˉ n , u ˉ n ⟩ ≤ E n ≤ 1 2 ∥ δ n ∥ 2 + 1 2 ⟨ A u ˉ n , u ˉ n ⟩ . \frac{1-\theta}{2}\|\delta^n\|^2 + \frac12\langle A\bar u^n, \bar u^n\rangle \le E^n \le \frac12\|\delta^n\|^2 + \frac12\langle A\bar u^n, \bar u^n\rangle. 2 1 − θ ∥ δ n ∥ 2 + 2 1 ⟨ A u ˉ n , u ˉ n ⟩ ≤ E n ≤ 2 1 ∥ δ n ∥ 2 + 2 1 ⟨ A u ˉ n , u ˉ n ⟩ .
θ < 1 \theta \lt 1 θ < 1 のとき E n ≤ E 0 + Δ t 2 ( 1 − θ ) ∑ m = 1 n ∥ r m ∥ \sqrt{E^n} \le \sqrt{E^0} + \dfrac{\Delta t}{\sqrt{2(1-\theta)}}\displaystyle\sum_{m=1}^{n}\|r^m\| E n ≤ E 0 + 2 ( 1 − θ ) Δ t m = 1 ∑ n ∥ r m ∥ 。r n = 0 r^n = 0 r n = 0 なら、すべての n n n で
∥ δ n ∥ 2 ≤ 2 E 0 1 − θ , ∥ u n ∥ ≤ 2 E 0 λ 1 + Δ t 2 2 E 0 1 − θ . \|\delta^n\|^2 \le \frac{2E^0}{1-\theta},\qquad \|u^n\| \le \sqrt{\frac{2E^0}{\lambda_1}} + \frac{\Delta t}{2}\sqrt{\frac{2E^0}{1-\theta}}. ∥ δ n ∥ 2 ≤ 1 − θ 2 E 0 , ∥ u n ∥ ≤ λ 1 2 E 0 + 2 Δ t 1 − θ 2 E 0 .
証明(定理 4.1)
a = u n + 1 − u n a = u^{n+1} - u^n a = u n + 1 − u n 、b = u n − u n − 1 b = u^n - u^{n-1} b = u n − u n − 1 とおくと、a − b = − Δ t 2 A u n + Δ t 2 r n a - b = -\Delta t^2Au^n + \Delta t^2r^n a − b = − Δ t 2 A u n + Δ t 2 r n 、a + b = u n + 1 − u n − 1 a + b = u^{n+1} - u^{n-1} a + b = u n + 1 − u n − 1 です。∥ a ∥ 2 − ∥ b ∥ 2 = ⟨ a − b , a + b ⟩ \|a\|^2 - \|b\|^2 = \langle a - b, a + b\rangle ∥ a ∥ 2 − ∥ b ∥ 2 = ⟨ a − b , a + b ⟩ なので
1 2 Δ t 2 ( ∥ a ∥ 2 − ∥ b ∥ 2 ) = − 1 2 ⟨ A u n , u n + 1 − u n − 1 ⟩ + 1 2 ⟨ r n , u n + 1 − u n − 1 ⟩ \frac{1}{2\Delta t^2}\bigl(\|a\|^2 - \|b\|^2\bigr) = -\frac12\langle Au^n, u^{n+1} - u^{n-1}\rangle + \frac12\langle r^n, u^{n+1} - u^{n-1}\rangle 2Δ t 2 1 ( ∥ a ∥ 2 − ∥ b ∥ 2 ) = − 2 1 ⟨ A u n , u n + 1 − u n − 1 ⟩ + 2 1 ⟨ r n , u n + 1 − u n − 1 ⟩ です。一方 A A A の対称性から ⟨ u n + 1 , A u n ⟩ − ⟨ u n , A u n − 1 ⟩ = ⟨ A u n , u n + 1 − u n − 1 ⟩ \langle u^{n+1}, Au^n\rangle - \langle u^n, Au^{n-1}\rangle = \langle Au^n, u^{n+1} - u^{n-1}\rangle ⟨ u n + 1 , A u n ⟩ − ⟨ u n , A u n − 1 ⟩ = ⟨ A u n , u n + 1 − u n − 1 ⟩ です。2 つを足すと E n − E n − 1 = 1 2 ⟨ r n , u n + 1 − u n − 1 ⟩ E^n - E^{n-1} = \frac12\langle r^n, u^{n+1} - u^{n-1}\rangle E n − E n − 1 = 2 1 ⟨ r n , u n + 1 − u n − 1 ⟩ で、u n + 1 − u n − 1 = Δ t ( δ n + δ n − 1 ) u^{n+1} - u^{n-1} = \Delta t(\delta^n + \delta^{n-1}) u n + 1 − u n − 1 = Δ t ( δ n + δ n − 1 ) です。
u n + 1 = u ˉ n + Δ t 2 δ n u^{n+1} = \bar u^n + \frac{\Delta t}{2}\delta^n u n + 1 = u ˉ n + 2 Δ t δ n 、u n = u ˉ n − Δ t 2 δ n u^n = \bar u^n - \frac{\Delta t}{2}\delta^n u n = u ˉ n − 2 Δ t δ n を入れると、A A A の対称性から交差項が消えて ⟨ u n + 1 , A u n ⟩ = ⟨ A u ˉ n , u ˉ n ⟩ − Δ t 2 4 ⟨ A δ n , δ n ⟩ \langle u^{n+1}, Au^n\rangle = \langle A\bar u^n, \bar u^n\rangle - \frac{\Delta t^2}{4}\langle A\delta^n, \delta^n\rangle ⟨ u n + 1 , A u n ⟩ = ⟨ A u ˉ n , u ˉ n ⟩ − 4 Δ t 2 ⟨ A δ n , δ n ⟩ です。0 ≤ ⟨ A δ n , δ n ⟩ ≤ λ d ∥ δ n ∥ 2 0 \le \langle A\delta^n, \delta^n\rangle \le \lambda_d\|\delta^n\|^2 0 ≤ ⟨ A δ n , δ n ⟩ ≤ λ d ∥ δ n ∥ 2 から 0 ≤ Δ t 2 8 ⟨ A δ n , δ n ⟩ ≤ θ 2 ∥ δ n ∥ 2 0 \le \frac{\Delta t^2}{8}\langle A\delta^n,\delta^n\rangle \le \frac\theta2\|\delta^n\|^2 0 ≤ 8 Δ t 2 ⟨ A δ n , δ n ⟩ ≤ 2 θ ∥ δ n ∥ 2 で、不等式が出ます。
θ < 1 \theta \lt 1 θ < 1 なら 2 から E n ≥ 0 E^n \ge 0 E n ≥ 0 、∥ δ n ∥ ≤ 2 E n / ( 1 − θ ) \|\delta^n\| \le \sqrt{2E^n/(1-\theta)} ∥ δ n ∥ ≤ 2 E n / ( 1 − θ ) です。1 と Cauchy–Schwarz の不等式から
( E n − E n − 1 ) ( E n + E n − 1 ) = E n − E n − 1 ≤ Δ t 2 ∥ r n ∥ 2 1 − θ ( E n + E n − 1 ) \bigl(\sqrt{E^n} - \sqrt{E^{n-1}}\bigr)\bigl(\sqrt{E^n} + \sqrt{E^{n-1}}\bigr) = E^n - E^{n-1} \le \frac{\Delta t}{2}\|r^n\|\sqrt{\frac{2}{1-\theta}}\bigl(\sqrt{E^n} + \sqrt{E^{n-1}}\bigr) ( E n − E n − 1 ) ( E n + E n − 1 ) = E n − E n − 1 ≤ 2 Δ t ∥ r n ∥ 1 − θ 2 ( E n + E n − 1 ) です。E n + E n − 1 > 0 \sqrt{E^n} + \sqrt{E^{n-1}} \gt 0 E n + E n − 1 > 0 なら割って E n − E n − 1 ≤ Δ t ∥ r n ∥ / 2 ( 1 − θ ) \sqrt{E^n} - \sqrt{E^{n-1}} \le \Delta t\|r^n\|/\sqrt{2(1-\theta)} E n − E n − 1 ≤ Δ t ∥ r n ∥/ 2 ( 1 − θ ) 、0 なら両辺 0 でやはり成り立ちます。n n n について足すと最初の式です。r n = 0 r^n = 0 r n = 0 なら E n = E 0 E^n = E^0 E n = E 0 で、2 から ∥ δ n ∥ 2 ≤ 2 E 0 / ( 1 − θ ) \|\delta^n\|^2 \le 2E^0/(1-\theta) ∥ δ n ∥ 2 ≤ 2 E 0 / ( 1 − θ ) 、λ 1 ∥ u ˉ n ∥ 2 ≤ ⟨ A u ˉ n , u ˉ n ⟩ ≤ 2 E 0 \lambda_1\|\bar u^n\|^2 \le \langle A\bar u^n, \bar u^n\rangle \le 2E^0 λ 1 ∥ u ˉ n ∥ 2 ≤ ⟨ A u ˉ n , u ˉ n ⟩ ≤ 2 E 0 です。u n = u ˉ n − Δ t 2 δ n u^n = \bar u^n - \frac{\Delta t}{2}\delta^n u n = u ˉ n − 2 Δ t δ n に三角不等式を使うと最後の式が出ます。
∎
E n E^n E n は連続のエネルギー 1 2 ∥ u ′ ∥ 2 + 1 2 ⟨ u , A u ⟩ \frac12\|u'\|^2 + \frac12\langle u, Au\rangle 2 1 ∥ u ′ ∥ 2 + 2 1 ⟨ u , A u ⟩ の離散版です。位置エネルギーの項が ⟨ u n , A u n ⟩ \langle u^n, Au^n\rangle ⟨ u n , A u n ⟩ ではなく、隣り合う時刻の積 ⟨ u n + 1 , A u n ⟩ \langle u^{n+1}, Au^n\rangle ⟨ u n + 1 , A u n ⟩ になっている点が要で、このために 2 の第 2 項(負の項)が現れ、正定値であるための条件 θ < 1 \theta \lt 1 θ < 1 が 定理 3.3 の安定条件と一致します。3 の定数は A A A の次元によらず θ \theta θ と λ 1 \lambda_1 λ 1 だけで決まるので、ν ≤ ν 0 < 1 \nu \le \nu_0 \lt 1 ν ≤ ν 0 < 1 と固定すれば、h → 0 h \to 0 h → 0 で一様な安定性の評価になります。
定理 4.2 (波動方程式の leapfrog 法の収束 ) ✓
u ∈ C 4 ( [ 0 , 1 ] × [ 0 , T ] ) u \in C^4([0,1]\times[0,T]) u ∈ C 4 ([ 0 , 1 ] × [ 0 , T ]) が u t t = c 2 u x x u_{tt} = c^2u_{xx} u tt = c 2 u xx 、u ( 0 , t ) = u ( 1 , t ) = 0 u(0,t) = u(1,t) = 0 u ( 0 , t ) = u ( 1 , t ) = 0 、u ( x , 0 ) = g ( x ) u(x,0) = g(x) u ( x , 0 ) = g ( x ) 、u t ( x , 0 ) = g 1 ( x ) u_t(x,0) = g_1(x) u t ( x , 0 ) = g 1 ( x ) を満たすとする。h = 1 / M h = 1/M h = 1/ M 、ν = c Δ t / h ≤ ν 0 < 1 \nu = c\Delta t/h \le \nu_0 \lt 1 ν = c Δ t / h ≤ ν 0 < 1 とし、U j 0 = g ( x j ) U^0_j = g(x_j) U j 0 = g ( x j ) 、
U j 1 = g ( x j ) + Δ t g 1 ( x j ) + c 2 Δ t 2 2 ⋅ g ( x j + 1 ) − 2 g ( x j ) + g ( x j − 1 ) h 2 U^1_j = g(x_j) + \Delta t\,g_1(x_j) + \frac{c^2\Delta t^2}{2}\cdot\frac{g(x_{j+1}) - 2g(x_j) + g(x_{j-1})}{h^2} U j 1 = g ( x j ) + Δ t g 1 ( x j ) + 2 c 2 Δ t 2 ⋅ h 2 g ( x j + 1 ) − 2 g ( x j ) + g ( x j − 1 ) を出発値とする leapfrog・中心差分の解を U n U^n U n とする。B t = max ∣ ∂ t 4 u ∣ B_t = \max|\partial_t^4u| B t = max ∣ ∂ t 4 u ∣ 、B x = max ∣ ∂ x 4 u ∣ B_x = \max|\partial_x^4u| B x = max ∣ ∂ x 4 u ∣ 、B 3 = max ∣ ∂ t 3 u ∣ B_3 = \max|\partial_t^3u| B 3 = max ∣ ∂ t 3 u ∣ とおくと、t n ≤ T t_n \le T t n ≤ T である n n n について
∥ u ( ⋅ , t n ) − U n ∥ h ≤ t n 1 − ν 0 2 ( c 2 Δ t h 2 24 B x + Δ t 2 6 B 3 ) + t n 2 1 − ν 0 2 ( Δ t 2 12 B t + c 2 h 2 12 B x ) \|u(\cdot, t_n) - U^n\|_h \le \frac{t_n}{\sqrt{1-\nu_0^2}}\Bigl(\frac{c^2\Delta t\,h^2}{24}B_x + \frac{\Delta t^2}{6}B_3\Bigr) + \frac{t_n^2}{1-\nu_0^2}\Bigl(\frac{\Delta t^2}{12}B_t + \frac{c^2h^2}{12}B_x\Bigr) ∥ u ( ⋅ , t n ) − U n ∥ h ≤ 1 − ν 0 2 t n ( 24 c 2 Δ t h 2 B x + 6 Δ t 2 B 3 ) + 1 − ν 0 2 t n 2 ( 12 Δ t 2 B t + 12 c 2 h 2 B x ) が成り立つ(左辺の u ( ⋅ , t n ) u(\cdot,t_n) u ( ⋅ , t n ) は内部の格子点での値のベクトル)。右辺は O ( Δ t 2 + h 2 ) O(\Delta t^2 + h^2) O ( Δ t 2 + h 2 ) である。
また、格子 h Z h\mathbb{Z} h Z の上で c Δ t = h c\Delta t = h c Δ t = h (ν = 1 \nu = 1 ν = 1 )のとき、u ∈ C 2 ( R × [ 0 , ∞ ) ) u \in C^2(\mathbb{R}\times[0,\infty)) u ∈ C 2 ( R × [ 0 , ∞ )) が u t t = c 2 u x x u_{tt} = c^2u_{xx} u tt = c 2 u xx を満たし、U j 0 = u ( x j , 0 ) U^0_j = u(x_j, 0) U j 0 = u ( x j , 0 ) 、U j 1 = u ( x j , Δ t ) U^1_j = u(x_j, \Delta t) U j 1 = u ( x j , Δ t ) ならば、すべての n ≥ 0 n \ge 0 n ≥ 0 と j j j で U j n = u ( x j , t n ) U^n_j = u(x_j, t_n) U j n = u ( x j , t n ) である。
証明(定理 4.2) 誤差の方程式。 e j n = u ( x j , t n ) − U j n e^n_j = u(x_j, t_n) - U^n_j e j n = u ( x j , t n ) − U j n とおきます。2 階中心差分の打ち切り誤差(補題 2.3[差分法の整合性・安定性・収束] の 3)を t t t と x x x のそれぞれについて使うと、内部の格子点と n ≥ 1 n \ge 1 n ≥ 1 で
u ( x j , t n + 1 ) − 2 u ( x j , t n ) + u ( x j , t n − 1 ) Δ t 2 = c 2 u ( x j + 1 , t n ) − 2 u ( x j , t n ) + u ( x j − 1 , t n ) h 2 + r j n , ∣ r j n ∣ ≤ ρ : = Δ t 2 12 B t + c 2 h 2 12 B x \frac{u(x_j,t_{n+1}) - 2u(x_j,t_n) + u(x_j,t_{n-1})}{\Delta t^2} = c^2\frac{u(x_{j+1},t_n) - 2u(x_j,t_n) + u(x_{j-1},t_n)}{h^2} + r^n_j,\qquad |r^n_j| \le \rho := \frac{\Delta t^2}{12}B_t + \frac{c^2h^2}{12}B_x Δ t 2 u ( x j , t n + 1 ) − 2 u ( x j , t n ) + u ( x j , t n − 1 ) = c 2 h 2 u ( x j + 1 , t n ) − 2 u ( x j , t n ) + u ( x j − 1 , t n ) + r j n , ∣ r j n ∣ ≤ ρ := 12 Δ t 2 B t + 12 c 2 h 2 B x です(u t t = c 2 u x x u_{tt} = c^2u_{xx} u tt = c 2 u xx を使った)。U n U^n U n の式を引くと、e n e^n e n は 定理 4.1 の式を A = c 2 h 2 t r i d i a g ( − 1 , 2 , − 1 ) A = \frac{c^2}{h^2}\mathrm{tridiag}(-1,2,-1) A = h 2 c 2 tridiag ( − 1 , 2 , − 1 ) と r n r^n r n について満たします。内部の格子点は M − 1 M - 1 M − 1 個で h ( M − 1 ) < 1 h(M-1) \lt 1 h ( M − 1 ) < 1 なので ∥ r n ∥ h ≤ ρ \|r^n\|_h \le \rho ∥ r n ∥ h ≤ ρ です。
出発値の誤差。 e 0 = 0 e^0 = 0 e 0 = 0 です。t t t についての Taylor の定理(定理 5.3[平均値の定理とテイラーの定理] )と u t t ( x , 0 ) = c 2 g ′ ′ ( x ) u_{tt}(x,0) = c^2g''(x) u tt ( x , 0 ) = c 2 g ′′ ( x ) から u ( x j , Δ t ) = g ( x j ) + Δ t g 1 ( x j ) + c 2 Δ t 2 2 g ′ ′ ( x j ) + Δ t 3 6 ∂ t 3 u ( x j , ξ ) u(x_j,\Delta t) = g(x_j) + \Delta t\,g_1(x_j) + \frac{c^2\Delta t^2}{2}g''(x_j) + \frac{\Delta t^3}{6}\partial_t^3u(x_j,\xi) u ( x j , Δ t ) = g ( x j ) + Δ t g 1 ( x j ) + 2 c 2 Δ t 2 g ′′ ( x j ) + 6 Δ t 3 ∂ t 3 u ( x j , ξ ) なので、再び打ち切り誤差の補題から
∣ e j 1 ∣ ≤ c 2 Δ t 2 2 ⋅ h 2 12 B x + Δ t 3 6 B 3 , ∥ δ 0 ∥ h = ∥ e 1 ∥ h Δ t ≤ d 0 : = c 2 Δ t h 2 24 B x + Δ t 2 6 B 3 |e^1_j| \le \frac{c^2\Delta t^2}{2}\cdot\frac{h^2}{12}B_x + \frac{\Delta t^3}{6}B_3,\qquad \|\delta^0\|_h = \frac{\|e^1\|_h}{\Delta t} \le d_0 := \frac{c^2\Delta t\,h^2}{24}B_x + \frac{\Delta t^2}{6}B_3 ∣ e j 1 ∣ ≤ 2 c 2 Δ t 2 ⋅ 12 h 2 B x + 6 Δ t 3 B 3 , ∥ δ 0 ∥ h = Δ t ∥ e 1 ∥ h ≤ d 0 := 24 c 2 Δ t h 2 B x + 6 Δ t 2 B 3 です。
エネルギーによる評価。 定理 4.1 を、内積を ⟨ ⋅ , ⋅ ⟩ h \langle\cdot,\cdot\rangle_h ⟨ ⋅ , ⋅ ⟩ h に替えて使います(すべての式が h h h 倍されるだけです)。e 0 = 0 e^0 = 0 e 0 = 0 なので E 0 = 1 2 ∥ δ 0 ∥ h 2 ≤ d 0 2 / 2 E^0 = \frac12\|\delta^0\|_h^2 \le d_0^2/2 E 0 = 2 1 ∥ δ 0 ∥ h 2 ≤ d 0 2 /2 。θ = Δ t 2 λ M − 1 / 4 ≤ ν 2 ≤ ν 0 2 \theta = \Delta t^2\lambda_{M-1}/4 \le \nu^2 \le \nu_0^2 θ = Δ t 2 λ M − 1 /4 ≤ ν 2 ≤ ν 0 2 なので、同じ定理の 3 と 2 から
∥ δ n ∥ h ≤ 2 E n 1 − θ ≤ 1 1 − ν 0 2 ( d 0 + t n ρ 1 − ν 0 2 ) \|\delta^n\|_h \le \sqrt{\frac{2E^n}{1-\theta}} \le \frac{1}{\sqrt{1-\nu_0^2}}\Bigl(d_0 + \frac{t_n\rho}{\sqrt{1-\nu_0^2}}\Bigr) ∥ δ n ∥ h ≤ 1 − θ 2 E n ≤ 1 − ν 0 2 1 ( d 0 + 1 − ν 0 2 t n ρ ) です。e n = e 0 + Δ t ∑ m = 0 n − 1 δ m e^n = e^0 + \Delta t\sum_{m=0}^{n-1}\delta^m e n = e 0 + Δ t ∑ m = 0 n − 1 δ m なので ∥ e n ∥ h ≤ t n max m < n ∥ δ m ∥ h \|e^n\|_h \le t_n\max_{m \lt n}\|\delta^m\|_h ∥ e n ∥ h ≤ t n max m < n ∥ δ m ∥ h で、主張の式が出ます。
ν = 1 \nu = 1 ν = 1 の場合。 s = c t s = ct s = c t を時間の変数にとると u s s = u x x u_{ss} = u_{xx} u ss = u xx なので、d’Alembert の公式(定理 2.1[波動方程式] )から、C 2 C^2 C 2 級の関数 F , G F, G F , G があって u ( x , t ) = F ( x + c t ) + G ( x − c t ) u(x,t) = F(x + ct) + G(x - ct) u ( x , t ) = F ( x + c t ) + G ( x − c t ) と書けます(g = u ( ⋅ , 0 ) g = u(\cdot,0) g = u ( ⋅ , 0 ) 、g 1 = u t ( ⋅ , 0 ) g_1 = u_t(\cdot,0) g 1 = u t ( ⋅ , 0 ) として F ( y ) = 1 2 g ( y ) + 1 2 c ∫ 0 y g 1 F(y) = \frac12g(y) + \frac1{2c}\int_0^yg_1 F ( y ) = 2 1 g ( y ) + 2 c 1 ∫ 0 y g 1 、G ( y ) = 1 2 g ( y ) − 1 2 c ∫ 0 y g 1 G(y) = \frac12g(y) - \frac1{2c}\int_0^yg_1 G ( y ) = 2 1 g ( y ) − 2 c 1 ∫ 0 y g 1 )。c Δ t = h c\Delta t = h c Δ t = h なので x j + c t n ± 1 = x j ± 1 + c t n x_j + ct_{n\pm1} = x_{j\pm1} + ct_n x j + c t n ± 1 = x j ± 1 + c t n 、x j − c t n ± 1 = x j ∓ 1 − c t n x_j - ct_{n\pm1} = x_{j\mp1} - ct_n x j − c t n ± 1 = x j ∓ 1 − c t n で、
u ( x j , t n + 1 ) + u ( x j , t n − 1 ) = F ( x j + 1 + c t n ) + G ( x j − 1 − c t n ) + F ( x j − 1 + c t n ) + G ( x j + 1 − c t n ) = u ( x j + 1 , t n ) + u ( x j − 1 , t n ) u(x_j,t_{n+1}) + u(x_j,t_{n-1}) = F(x_{j+1} + ct_n) + G(x_{j-1} - ct_n) + F(x_{j-1} + ct_n) + G(x_{j+1} - ct_n) = u(x_{j+1},t_n) + u(x_{j-1},t_n) u ( x j , t n + 1 ) + u ( x j , t n − 1 ) = F ( x j + 1 + c t n ) + G ( x j − 1 − c t n ) + F ( x j − 1 + c t n ) + G ( x j + 1 − c t n ) = u ( x j + 1 , t n ) + u ( x j − 1 , t n ) です。ν = 1 \nu = 1 ν = 1 のスキームは U j n + 1 = U j + 1 n + U j − 1 n − U j n − 1 U^{n+1}_j = U^n_{j+1} + U^n_{j-1} - U^{n-1}_j U j n + 1 = U j + 1 n + U j − 1 n − U j n − 1 なので、厳密解の格子値は同じ漸化式を満たし、n = 0 , 1 n = 0, 1 n = 0 , 1 で一致するので、すべての n n n で一致します。
∎
例 4.3 (CFL 数と離散エネルギー )
c = 1 c = 1 c = 1 、初期値 g ( x ) = sin π x + 1 2 sin 3 π x g(x) = \sin\pi x + \frac12\sin3\pi x g ( x ) = sin π x + 2 1 sin 3 π x 、初速 0 の定在波(厳密解は sin π x cos π t + 1 2 sin 3 π x cos 3 π t \sin\pi x\cos\pi t + \frac12\sin3\pi x\cos3\pi t sin π x cos π t + 2 1 sin 3 π x cos 3 π t )を、ν = 0.5 , 1.0 , 1.01 \nu = 0.5,\ 1.0,\ 1.01 ν = 0.5 , 1.0 , 1.01 で解きます。
# Python 3.9.6 / NumPy 2.0.2
""" u_tt = u_xx(0 < x < 1、両端 0)を leapfrog・中心差分で解く。h = 1/M、dt = nu h。 """
x = np. linspace ( 0 , 1 , M + 1 )
g = np. sin ( np.pi * x ) + 0.5 * np. sin ( 3 * np.pi * x )
lap = lambda v : np. concatenate ( ( [ 0.0 ] , v [ 2 : ] - 2 * v [ 1 : - 1 ] + v [ : - 2 ] , [ 0.0 ] ) )
u_old, u = g, g + 0.5 * nu ** 2 * lap ( g ) # 初速 0、2 次精度の出発値
energy = lambda a , b : 0.5 * h * np. sum ( ((b - a) / dt) ** 2 ) - 0.5 * np. sum ( b * lap ( a )) / h
E0, n, maxima = energy ( u_old , u ), 1 , {}
steps = int ( round ( T / dt ))
u_old, u = u, 2 * u - u_old + nu ** 2 * lap ( u )
if n % (steps // 4 ) == 0 :
maxima[ round ( n * dt , 6 )] = np. max ( np. abs ( u ))
exact = np. sin ( np.pi * x ) * np. cos ( np.pi * n * dt ) + 0.5 * np. sin ( 3 * np.pi * x ) * np. cos ( 3 * np.pi * n * dt )
return maxima, abs ( energy ( u_old , u ) - E0 ) / E0, np. sqrt ( h * np. sum ( (u - exact) ** 2 ))
print ( " M = 200, T = 4: max|u| at t = 1, 2, 3, 4 |E^n - E^0| / E^0 " )
for nu in [ 0.5 , 1.0 , 1.01 ] :
maxima, dE, _ = leapfrog ( 200 , nu , 4.0 )
print ( f "nu = {nu :4.2f } : " + " " . join ( f " {v :.3e } " for v in maxima. values ()) + f " {dE :.1e } " )
print ( " nu = 0.5, T = 0.7: M l2 error order " )
for M in [ 25 , 50 , 100 , 200 , 400 ] :
err = leapfrog ( M , 0.5 , 0.7 ) [ 2 ]
print ( f " {M :4d } {err :.3e } " + ( "" if prev is None else f " {np. log2 ( prev / err ) :.2f } " ) )
print ( " nu = 1.0, T = 0.7, M = 100: l2 error = " , f " { leapfrog ( 100 , 1.0 , 0.7 ) [ 2 ] :.1e } " )
M = 200, T = 4: max|u| at t = 1, 2, 3, 4 |E^n - E^0| / E^0
nu = 0.50: 1.076e+00 1.076e+00 1.076e+00 1.076e+00 5.3e-15
nu = 1.00: 1.076e+00 1.076e+00 1.076e+00 1.076e+00 3.3e-15
nu = 1.01: 4.271e+07 6.712e+31 1.135e+56 1.962e+80 1.0e+00
nu = 0.5, T = 0.7: M l2 error order
nu = 1.0, T = 0.7, M = 100: l2 error = 3.5e-16
ν = 0.5 \nu = 0.5 ν = 0.5 と 1.0 1.0 1.0 では最大値は変わらず、離散エネルギーは丸めの大きさで保存されています。ν = 1.01 \nu = 1.01 ν = 1.01 では、丸め誤差から入った最高波数の成分が増幅されます。補題 3.2 の 3 で μ = 4 ν 2 sin 2 ( 199 π / 400 ) ≈ 4.0801 \mu = 4\nu^2\sin^2(199\pi/400) \approx 4.0801 μ = 4 ν 2 sin 2 ( 199 π /400 ) ≈ 4.0801 とすると ∣ z ∣ ≈ 1.326 |z| \approx 1.326 ∣ z ∣ ≈ 1.326 で、時間 1(198 ステップ)あたり ∣ z ∣ 198 ≈ 1.8 × 10 24 |z|^{198} \approx 1.8\times10^{24} ∣ z ∣ 198 ≈ 1.8 × 1 0 24 倍です。表の隣り合う値の比(1.6 × 10 24 1.6\times10^{24} 1.6 × 1 0 24 、1.7 × 10 24 1.7\times10^{24} 1.7 × 1 0 24 、1.7 × 10 24 1.7\times10^{24} 1.7 × 1 0 24 )と合います。このとき E n E^n E n は厳密な計算では保存されますが、正定値ではないので解の大きさを抑えません(増大する成分は 1 2 ∥ δ ∥ 2 \frac12\|\delta\|^2 2 1 ∥ δ ∥ 2 と 1 2 ⟨ u n + 1 , A u n ⟩ \frac12\langle u^{n+1}, Au^n\rangle 2 1 ⟨ u n + 1 , A u n ⟩ が打ち消し合ってエネルギーが 0 です)。表の 1.0 1.0 1.0 は、10 160 10^{160} 1 0 160 の大きさの 2 つの項の差が浮動小数点数で計算できなくなった結果です。ν = 0.5 \nu = 0.5 ν = 0.5 の誤差の次数は 2、ν = 1 \nu = 1 ν = 1 では 定理 4.2 の後半のとおり丸めの大きさです(区間の問題は、奇関数として周期 2 で延長すれば全直線の場合に帰着します。初速が 0 のとき、出発値 U j 1 = ( g ( x j + 1 ) + g ( x j − 1 ) ) / 2 U^1_j = (g(x_{j+1}) + g(x_{j-1}))/2 U j 1 = ( g ( x j + 1 ) + g ( x j − 1 )) /2 も d’Alembert の公式の値に一致します)。
leapfrog 法は各固有成分の振幅を保ちます(補題 3.2 の 1 で、解は cos n φ \cos n\varphi cos n φ と sin n φ \sin n\varphi sin n φ の 1 次結合)。誤差はすべて位相に現れます。
命題 5.1 (leapfrog・中心差分の数値分散関係 ) ✓
格子 h Z h\mathbb{Z} h Z 上のスキーム u j n + 1 − 2 u j n + u j n − 1 = ν 2 ( u j + 1 n − 2 u j n + u j − 1 n ) u^{n+1}_j - 2u^n_j + u^{n-1}_j = \nu^2(u^n_{j+1} - 2u^n_j + u^n_{j-1}) u j n + 1 − 2 u j n + u j n − 1 = ν 2 ( u j + 1 n − 2 u j n + u j − 1 n ) (ν = c Δ t / h \nu = c\Delta t/h ν = c Δ t / h )について次が成り立つ。
実数 k k k 、ω \omega ω について、平面波 u j n = e i ( k x j − ω t n ) u^n_j = e^{i(kx_j - \omega t_n)} u j n = e i ( k x j − ω t n ) が解であることは
sin 2 ω Δ t 2 = ν 2 sin 2 k h 2 \sin^2\frac{\omega\Delta t}{2} = \nu^2\sin^2\frac{kh}{2} sin 2 2 ω Δ t = ν 2 sin 2 2 k h
と同値である。
0 < ν ≤ 1 0 \lt \nu \le 1 0 < ν ≤ 1 を固定し、∣ k h ∣ ≤ π |kh| \le \pi ∣ k h ∣ ≤ π について ω h ( k ) = 2 Δ t arcsin ( ν sin k h 2 ) \omega_h(k) = \frac{2}{\Delta t}\arcsin\bigl(\nu\sin\frac{kh}{2}\bigr) ω h ( k ) = Δ t 2 arcsin ( ν sin 2 k h ) とおくと、k h → 0 kh \to 0 k h → 0 で
ω h ( k ) c k = 1 − 1 − ν 2 24 ( k h ) 2 + O ( ( k h ) 4 ) \frac{\omega_h(k)}{ck} = 1 - \frac{1-\nu^2}{24}(kh)^2 + O\bigl((kh)^4\bigr) c k ω h ( k ) = 1 − 24 1 − ν 2 ( k h ) 2 + O ( ( k h ) 4 )
である。ν = 1 \nu = 1 ν = 1 では ω h ( k ) = c k \omega_h(k) = ck ω h ( k ) = c k が厳密に成り立つ。
証明(命題 5.1)
平面波を代入して e i ( k x j − ω t n ) e^{i(kx_j - \omega t_n)} e i ( k x j − ω t n ) で割ると、左辺は e − i ω Δ t − 2 + e i ω Δ t = 2 cos ω Δ t − 2 = − 4 sin 2 ( ω Δ t / 2 ) e^{-i\omega\Delta t} - 2 + e^{i\omega\Delta t} = 2\cos\omega\Delta t - 2 = -4\sin^2(\omega\Delta t/2) e − iω Δ t − 2 + e iω Δ t = 2 cos ω Δ t − 2 = − 4 sin 2 ( ω Δ t /2 ) 、右辺は ν 2 ( 2 cos k h − 2 ) = − 4 ν 2 sin 2 ( k h / 2 ) \nu^2(2\cos kh - 2) = -4\nu^2\sin^2(kh/2) ν 2 ( 2 cos k h − 2 ) = − 4 ν 2 sin 2 ( k h /2 ) です。
G ( ϑ ) = arcsin ( ν sin ϑ ) G(\vartheta) = \arcsin(\nu\sin\vartheta) G ( ϑ ) = arcsin ( ν sin ϑ ) とおきます。ν = 1 \nu = 1 ν = 1 なら ∣ ϑ ∣ ≤ π / 2 |\vartheta| \le \pi/2 ∣ ϑ ∣ ≤ π /2 で G ( ϑ ) = ϑ G(\vartheta) = \vartheta G ( ϑ ) = ϑ なので ω h ( k ) = 2 Δ t ⋅ k h 2 = c k \omega_h(k) = \frac{2}{\Delta t}\cdot\frac{kh}{2} = ck ω h ( k ) = Δ t 2 ⋅ 2 k h = c k (h / Δ t = c h/\Delta t = c h /Δ t = c )です。ν < 1 \nu \lt 1 ν < 1 のとき、G G G は R \mathbb{R} R 上で C ∞ C^\infty C ∞ 級の奇関数で、G ′ ( ϑ ) = ν cos ϑ ( 1 − ν 2 sin 2 ϑ ) − 1 / 2 G'(\vartheta) = \nu\cos\vartheta\,(1 - \nu^2\sin^2\vartheta)^{-1/2} G ′ ( ϑ ) = ν cos ϑ ( 1 − ν 2 sin 2 ϑ ) − 1/2 です。cos ϑ = 1 − ϑ 2 / 2 + O ( ϑ 4 ) \cos\vartheta = 1 - \vartheta^2/2 + O(\vartheta^4) cos ϑ = 1 − ϑ 2 /2 + O ( ϑ 4 ) 、( 1 − ν 2 sin 2 ϑ ) − 1 / 2 = 1 + ν 2 ϑ 2 / 2 + O ( ϑ 4 ) (1 - \nu^2\sin^2\vartheta)^{-1/2} = 1 + \nu^2\vartheta^2/2 + O(\vartheta^4) ( 1 − ν 2 sin 2 ϑ ) − 1/2 = 1 + ν 2 ϑ 2 /2 + O ( ϑ 4 ) から G ′ ( ϑ ) = ν − ν ( 1 − ν 2 ) 2 ϑ 2 + O ( ϑ 4 ) G'(\vartheta) = \nu - \frac{\nu(1-\nu^2)}{2}\vartheta^2 + O(\vartheta^4) G ′ ( ϑ ) = ν − 2 ν ( 1 − ν 2 ) ϑ 2 + O ( ϑ 4 ) で、G ′ ( 0 ) = ν G'(0) = \nu G ′ ( 0 ) = ν 、G ′ ′ ′ ( 0 ) = − ν ( 1 − ν 2 ) G'''(0) = -\nu(1-\nu^2) G ′′′ ( 0 ) = − ν ( 1 − ν 2 ) です。G G G は奇関数なので G ( 0 ) = G ′ ′ ( 0 ) = G ′ ′ ′ ′ ( 0 ) = 0 G(0) = G''(0) = G''''(0) = 0 G ( 0 ) = G ′′ ( 0 ) = G ′′′′ ( 0 ) = 0 で、Taylor の定理(定理 5.3[平均値の定理とテイラーの定理] )から G ( ϑ ) = ν ϑ − ν ( 1 − ν 2 ) 6 ϑ 3 + O ( ϑ 5 ) G(\vartheta) = \nu\vartheta - \frac{\nu(1-\nu^2)}{6}\vartheta^3 + O(\vartheta^5) G ( ϑ ) = ν ϑ − 6 ν ( 1 − ν 2 ) ϑ 3 + O ( ϑ 5 ) です。ϑ = k h / 2 \vartheta = kh/2 ϑ = k h /2 とし、2 ν / Δ t ⋅ k h / 2 = c k 2\nu/\Delta t\cdot kh/2 = ck 2 ν /Δ t ⋅ k h /2 = c k を使うと
ω h ( k ) = 2 Δ t G ( k h 2 ) = c k ( 1 − 1 − ν 2 24 ( k h ) 2 + O ( ( k h ) 4 ) ) \omega_h(k) = \frac{2}{\Delta t}G\Bigl(\frac{kh}{2}\Bigr) = ck\Bigl(1 - \frac{1-\nu^2}{24}(kh)^2 + O\bigl((kh)^4\bigr)\Bigr) ω h ( k ) = Δ t 2 G ( 2 k h ) = c k ( 1 − 24 1 − ν 2 ( k h ) 2 + O ( ( k h ) 4 ) ) です。
∎
厳密な分散関係は ω = c k \omega = ck ω = c k で、位相速度 ω / k = c \omega/k = c ω / k = c は波数によりません。数値解では位相速度が c ( 1 − 1 − ν 2 24 ( k h ) 2 ) c\bigl(1 - \frac{1-\nu^2}{24}(kh)^2\bigr) c ( 1 − 24 1 − ν 2 ( k h ) 2 ) で、波長が短いほど遅く進みます(数値分散 )。時刻 t t t までの位相の誤差は ( ω h − c k ) t ≈ − 1 − ν 2 24 c k 3 h 2 t (\omega_h - ck)t \approx -\frac{1-\nu^2}{24}c\,k^3h^2t ( ω h − c k ) t ≈ − 24 1 − ν 2 c k 3 h 2 t で、t t t に比例して増えます。波長あたりの格子点の数を n λ = 2 π / ( k h ) n_\lambda = 2\pi/(kh) n λ = 2 π / ( k h ) とすると、位相の誤差を ε \varepsilon ε 以下に保つには、波が進む波長の数 c k t / ( 2 π ) ckt/(2\pi) c k t / ( 2 π ) が 3 n λ 2 ε π 3 ( 1 − ν 2 ) \frac{3n_\lambda^2\varepsilon}{\pi^3(1-\nu^2)} π 3 ( 1 − ν 2 ) 3 n λ 2 ε 以下でなければなりません(n λ = 20 n_\lambda = 20 n λ = 20 、ν = 0.5 \nu = 0.5 ν = 0.5 、ε = 0.1 \varepsilon = 0.1 ε = 0.1 なら約 5 波長)。長い距離を伝わる波の計算で、2 次の差分より高次の差分やスペクトル法が使われる理由です。
leapfrog 法が振幅を保つことは、対称行列の線形系に限らない構造から来ています。その構造とは、位置と運動量の組 ( q , p ) (q, p) ( q , p ) を相空間の 1 点とみたとき、1 ステップの写像が体積を保つだけでなく、正準 2 形式という量までまるごと保つこと(シンプレクティック性。d = 1 d = 1 d = 1 では面積の保存と同じことです)です。次の命題は、leapfrog 法がこの性質をもつことと、調和振動子で数値解がどのような振動になるかを示します。
命題 5.2 (leapfrog 法のシンプレクティック性 ) ✓
A A A を d d d 次の実対称行列とし、R 2 d \mathbb{R}^{2d} R 2 d 上の写像 Φ Δ t : ( q , p ) ↦ ( q ′ , p ′ ) \Phi_{\Delta t} : (q, p) \mapsto (q', p') Φ Δ t : ( q , p ) ↦ ( q ′ , p ′ ) を
p 1 / 2 = p − Δ t 2 A q , q ′ = q + Δ t p 1 / 2 , p ′ = p 1 / 2 − Δ t 2 A q ′ p^{1/2} = p - \tfrac{\Delta t}{2}Aq,\qquad q' = q + \Delta t\,p^{1/2},\qquad p' = p^{1/2} - \tfrac{\Delta t}{2}Aq' p 1/2 = p − 2 Δ t A q , q ′ = q + Δ t p 1/2 , p ′ = p 1/2 − 2 Δ t A q ′ で定める(速度 Verlet 法)。( q n + 1 , p n + 1 ) = Φ Δ t ( q n , p n ) (q^{n+1}, p^{n+1}) = \Phi_{\Delta t}(q^n, p^n) ( q n + 1 , p n + 1 ) = Φ Δ t ( q n , p n ) とする。
q n q^n q n は leapfrog 法の式 q n + 1 − 2 q n + q n − 1 = − Δ t 2 A q n q^{n+1} - 2q^n + q^{n-1} = -\Delta t^2Aq^n q n + 1 − 2 q n + q n − 1 = − Δ t 2 A q n (n ≥ 1 n \ge 1 n ≥ 1 )を満たす。
Φ Δ t \Phi_{\Delta t} Φ Δ t は線形で、その行列は J = ( 0 I − I 0 ) J = \begin{pmatrix}0 & I\\ -I & 0\end{pmatrix} J = ( 0 − I I 0 ) について Φ Δ t T J Φ Δ t = J \Phi_{\Delta t}^{\mathsf T}J\Phi_{\Delta t} = J Φ Δ t T J Φ Δ t = J を満たし(シンプレクティック)、det Φ Δ t = 1 \det\Phi_{\Delta t} = 1 det Φ Δ t = 1 、Φ − Δ t = Φ Δ t − 1 \Phi_{-\Delta t} = \Phi_{\Delta t}^{-1} Φ − Δ t = Φ Δ t − 1 (時間反転対称)である。
d = 1 d = 1 d = 1 、A = ω 2 A = \omega^2 A = ω 2 、0 < ω Δ t < 2 0 \lt \omega\Delta t \lt 2 0 < ω Δ t < 2 のとき、q n q^n q n は振動数 ω ~ = 2 Δ t arcsin ω Δ t 2 \tilde\omega = \frac{2}{\Delta t}\arcsin\frac{\omega\Delta t}{2} ω ~ = Δ t 2 arcsin 2 ω Δ t の調和振動 q n = a cos ω ~ t n + b sin ω ~ t n q^n = a\cos\tilde\omega t_n + b\sin\tilde\omega t_n q n = a cos ω ~ t n + b sin ω ~ t n で、p 2 + ω 2 ( 1 − ω 2 Δ t 2 4 ) q 2 p^2 + \omega^2\bigl(1 - \frac{\omega^2\Delta t^2}{4}\bigr)q^2 p 2 + ω 2 ( 1 − 4 ω 2 Δ t 2 ) q 2 は Φ Δ t \Phi_{\Delta t} Φ Δ t で不変である。
証明(命題 5.2)
第 n n n ステップの中間の値を p n + 1 / 2 p^{n+1/2} p n + 1/2 と書くと、q n + 1 − q n = Δ t p n + 1 / 2 q^{n+1} - q^n = \Delta t\,p^{n+1/2} q n + 1 − q n = Δ t p n + 1/2 、q n − q n − 1 = Δ t p n − 1 / 2 q^n - q^{n-1} = \Delta t\,p^{n-1/2} q n − q n − 1 = Δ t p n − 1/2 です。p n = p n − 1 / 2 − Δ t 2 A q n p^n = p^{n-1/2} - \frac{\Delta t}{2}Aq^n p n = p n − 1/2 − 2 Δ t A q n 、p n + 1 / 2 = p n − Δ t 2 A q n p^{n+1/2} = p^n - \frac{\Delta t}{2}Aq^n p n + 1/2 = p n − 2 Δ t A q n から p n + 1 / 2 − p n − 1 / 2 = − Δ t A q n p^{n+1/2} - p^{n-1/2} = -\Delta tAq^n p n + 1/2 − p n − 1/2 = − Δ t A q n で、差をとると主張の式です。
3 つの段階はそれぞれ線形で、行列は
L = ( I 0 − Δ t 2 A I ) , W = ( I Δ t I 0 I ) , Φ Δ t = L W L L = \begin{pmatrix}I & 0\\ -\frac{\Delta t}{2}A & I\end{pmatrix},\qquad W = \begin{pmatrix}I & \Delta t\,I\\ 0 & I\end{pmatrix},\qquad \Phi_{\Delta t} = L\,W\,L L = ( I − 2 Δ t A 0 I ) , W = ( I 0 Δ t I I ) , Φ Δ t = L W L です。C C C を対称行列として L C = ( I 0 C I ) L_C = \begin{pmatrix}I & 0\\ C & I\end{pmatrix} L C = ( I C 0 I ) とすると
L C T J L C = ( I C 0 I ) ( 0 I − I 0 ) ( I 0 C I ) = ( − C I − I 0 ) ( I 0 C I ) = ( 0 I − I 0 ) L_C^{\mathsf T}JL_C = \begin{pmatrix}I & C\\ 0 & I\end{pmatrix}\begin{pmatrix}0 & I\\ -I & 0\end{pmatrix}\begin{pmatrix}I & 0\\ C & I\end{pmatrix} = \begin{pmatrix}-C & I\\ -I & 0\end{pmatrix}\begin{pmatrix}I & 0\\ C & I\end{pmatrix} = \begin{pmatrix}0 & I\\ -I & 0\end{pmatrix} L C T J L C = ( I 0 C I ) ( 0 − I I 0 ) ( I C 0 I ) = ( − C − I I 0 ) ( I C 0 I ) = ( 0 − I I 0 ) で、同様に W B = ( I B 0 I ) W_B = \begin{pmatrix}I & B\\ 0 & I\end{pmatrix} W B = ( I 0 B I ) (B B B は対称)について W B T J W B = ( 0 I − I B ) ( I B 0 I ) = J W_B^{\mathsf T}JW_B = \begin{pmatrix}0 & I\\ -I & B\end{pmatrix}\begin{pmatrix}I & B\\ 0 & I\end{pmatrix} = J W B T J W B = ( 0 − I I B ) ( I 0 B I ) = J です。X T J X = J X^{\mathsf T}JX = J X T J X = J 、Y T J Y = J Y^{\mathsf T}JY = J Y T J Y = J なら ( X Y ) T J ( X Y ) = Y T J Y = J (XY)^{\mathsf T}J(XY) = Y^{\mathsf T}JY = J ( X Y ) T J ( X Y ) = Y T J Y = J なので、積 L W L LWL L W L もこの式を満たします。L L L と W W W は対角成分が 1 のブロック三角行列なので行列式は 1 です。L C − 1 = L − C L_C^{-1} = L_{-C} L C − 1 = L − C 、W B − 1 = W − B W_B^{-1} = W_{-B} W B − 1 = W − B なので、Δ t \Delta t Δ t を − Δ t -\Delta t − Δ t に替えた Φ − Δ t = L − 1 W − 1 L − 1 = ( L W L ) − 1 \Phi_{-\Delta t} = L^{-1}W^{-1}L^{-1} = (LWL)^{-1} Φ − Δ t = L − 1 W − 1 L − 1 = ( L W L ) − 1 です。
1 と 補題 3.2 の 1(μ = ω 2 Δ t 2 < 4 \mu = \omega^2\Delta t^2 \lt 4 μ = ω 2 Δ t 2 < 4 )から、q n q^n q n は cos n φ \cos n\varphi cos n φ と sin n φ \sin n\varphi sin n φ の 1 次結合で、cos φ = 1 − ω 2 Δ t 2 / 2 \cos\varphi = 1 - \omega^2\Delta t^2/2 cos φ = 1 − ω 2 Δ t 2 /2 です。1 − cos φ = 2 sin 2 ( φ / 2 ) 1 - \cos\varphi = 2\sin^2(\varphi/2) 1 − cos φ = 2 sin 2 ( φ /2 ) から sin ( φ / 2 ) = ω Δ t / 2 \sin(\varphi/2) = \omega\Delta t/2 sin ( φ /2 ) = ω Δ t /2 、φ = ω ~ Δ t \varphi = \tilde\omega\Delta t φ = ω ~ Δ t で、n φ = ω ~ t n n\varphi = \tilde\omega t_n n φ = ω ~ t n です。不変量: s = ω 2 Δ t 2 / 2 s = \omega^2\Delta t^2/2 s = ω 2 Δ t 2 /2 、κ = ω 2 ( 1 − s / 2 ) \kappa = \omega^2(1 - s/2) κ = ω 2 ( 1 − s /2 ) とおくと、定義から q ′ = ( 1 − s ) q + Δ t p q' = (1 - s)q + \Delta t\,p q ′ = ( 1 − s ) q + Δ t p 、p ′ = − Δ t κ q + ( 1 − s ) p p' = -\Delta t\,\kappa\,q + (1 - s)p p ′ = − Δ t κ q + ( 1 − s ) p で、
p ′ 2 + κ q ′ 2 = κ ( κ Δ t 2 + ( 1 − s ) 2 ) q 2 + ( ( 1 − s ) 2 + κ Δ t 2 ) p 2 p'^2 + \kappa q'^2 = \kappa\bigl(\kappa\Delta t^2 + (1-s)^2\bigr)q^2 + \bigl((1-s)^2 + \kappa\Delta t^2\bigr)p^2 p ′2 + κ q ′2 = κ ( κ Δ t 2 + ( 1 − s ) 2 ) q 2 + ( ( 1 − s ) 2 + κ Δ t 2 ) p 2 です(p q pq pq の項は p ′ 2 p'^2 p ′2 から − 2 Δ t κ ( 1 − s ) p q -2\Delta t\,\kappa(1-s)pq − 2Δ t κ ( 1 − s ) pq 、κ q ′ 2 \kappa q'^2 κ q ′2 から + 2 Δ t κ ( 1 − s ) p q +2\Delta t\,\kappa(1-s)pq + 2Δ t κ ( 1 − s ) pq が出て消える)。κ Δ t 2 = 2 s ( 1 − s / 2 ) = 2 s − s 2 \kappa\Delta t^2 = 2s(1 - s/2) = 2s - s^2 κ Δ t 2 = 2 s ( 1 − s /2 ) = 2 s − s 2 なので ( 1 − s ) 2 + κ Δ t 2 = 1 (1-s)^2 + \kappa\Delta t^2 = 1 ( 1 − s ) 2 + κ Δ t 2 = 1 で、右辺は κ q 2 + p 2 \kappa q^2 + p^2 κ q 2 + p 2 です。
∎
2 の Φ T J Φ = J \Phi^{\mathsf T}J\Phi = J Φ T J Φ = J は、相空間の正準 2 形式 ∑ j d q j ∧ d p j \sum_jdq_j\wedge dp_j ∑ j d q j ∧ d p j を保つことを意味します。連続の流れ(Hamilton 系の解)がもつ性質で、行列式が 1 であること(相空間の体積の保存。連続の場合は 定理 2.3[線形微分方程式系] )より強い条件です。3 は、leapfrog 法の数値解が「振動数を ω ~ = ω ( 1 + ω 2 Δ t 2 / 24 + ⋯ ) \tilde\omega = \omega(1 + \omega^2\Delta t^2/24 + \cdots) ω ~ = ω ( 1 + ω 2 Δ t 2 /24 + ⋯ ) に取り替えた調和振動子」の厳密解であることを言っています。誤差を「少し違う問題を厳密に解いている」と読む見方(後退誤差解析)の最も簡単な場合で、保存量 p 2 + ω 2 ( 1 − ω 2 Δ t 2 / 4 ) q 2 p^2 + \omega^2(1 - \omega^2\Delta t^2/4)q^2 p 2 + ω 2 ( 1 − ω 2 Δ t 2 /4 ) q 2 は修正されたエネルギーです。もとのエネルギー p 2 + ω 2 q 2 p^2 + \omega^2q^2 p 2 + ω 2 q 2 は保存されませんが、この不変量があるので O ( Δ t 2 ) O(\Delta t^2) O ( Δ t 2 ) の幅で振動するだけで、時間とともにずれていくことはありません。
定義 6.1 (Crank–Nicolson 法(Cayley 変換) ) ↗
半離散の Schrödinger 方程式に対し
ψ n + 1 = C Δ t ψ n , C Δ t = ( I + i Δ t 2 H ) − 1 ( I − i Δ t 2 H ) \psi^{n+1} = C_{\Delta t}\psi^n,\qquad C_{\Delta t} = \Bigl(I + \frac{i\Delta t}{2}H\Bigr)^{-1}\Bigl(I - \frac{i\Delta t}{2}H\Bigr) ψ n + 1 = C Δ t ψ n , C Δ t = ( I + 2 i Δ t H ) − 1 ( I − 2 i Δ t H ) で定まる方法を Crank–Nicolson 法 といい、C Δ t C_{\Delta t} C Δ t を H H H の Cayley 変換 という。ψ n + 1 = ( I − i Δ t H ) ψ n \psi^{n+1} = (I - i\Delta tH)\psi^n ψ n + 1 = ( I − i Δ t H ) ψ n を陽的 Euler 法 、ψ n + 1 = ( I + i Δ t H ) − 1 ψ n \psi^{n+1} = (I + i\Delta tH)^{-1}\psi^n ψ n + 1 = ( I + i Δ t H ) − 1 ψ n を陰的 Euler 法 という。
Crank–Nicolson 法は、i ( ψ n + 1 − ψ n ) / Δ t = H ( ψ n + 1 + ψ n ) / 2 i(\psi^{n+1} - \psi^n)/\Delta t = H(\psi^{n+1} + \psi^n)/2 i ( ψ n + 1 − ψ n ) /Δ t = H ( ψ n + 1 + ψ n ) /2 を ψ n + 1 \psi^{n+1} ψ n + 1 について解いたものです。熱方程式に対する θ = 1 / 2 \theta = 1/2 θ = 1/2 の θ \theta θ 法(定理 4.2[楕円型・放物型方程式の差分法] )と同じ形で、係数が純虚数になっています。H H H が三重対角なら、1 ステップは三重対角の連立方程式 1 回です。
補題 6.2 (Cayley 変換のスカラーの評価 ) ✓
実数 x x x について r ( x ) = 1 − i x / 2 1 + i x / 2 r(x) = \dfrac{1 - ix/2}{1 + ix/2} r ( x ) = 1 + i x /2 1 − i x /2 とおくと、∣ r ( x ) ∣ = 1 |r(x)| = 1 ∣ r ( x ) ∣ = 1 、r ( x ) = e − 2 i arctan ( x / 2 ) r(x) = e^{-2i\arctan(x/2)} r ( x ) = e − 2 i a r c t a n ( x /2 ) で、
∣ r ( x ) − e − i x ∣ ≤ ∣ x ∣ 3 12 \bigl|r(x) - e^{-ix}\bigr| \le \frac{|x|^3}{12} r ( x ) − e − i x ≤ 12 ∣ x ∣ 3 である。
証明(補題 6.2) 1 − i x / 2 = 1 + x 2 / 4 e − i arctan ( x / 2 ) 1 - ix/2 = \sqrt{1 + x^2/4}\,e^{-i\arctan(x/2)} 1 − i x /2 = 1 + x 2 /4 e − i a r c t a n ( x /2 ) で、1 + i x / 2 1 + ix/2 1 + i x /2 はその複素共役なので、r ( x ) = e − 2 i arctan ( x / 2 ) r(x) = e^{-2i\arctan(x/2)} r ( x ) = e − 2 i a r c t a n ( x /2 ) 、∣ r ( x ) ∣ = 1 |r(x)| = 1 ∣ r ( x ) ∣ = 1 です。実数 a , b a, b a , b について ∣ e − i a − e − i b ∣ = ∣ ∫ b a e − i s d s ∣ ≤ ∣ a − b ∣ |e^{-ia} - e^{-ib}| = \bigl|\int_b^ae^{-is}ds\bigr| \le |a - b| ∣ e − ia − e − ib ∣ = ∫ b a e − i s d s ≤ ∣ a − b ∣ なので、∣ r ( x ) − e − i x ∣ ≤ ∣ x − 2 arctan ( x / 2 ) ∣ |r(x) - e^{-ix}| \le |x - 2\arctan(x/2)| ∣ r ( x ) − e − i x ∣ ≤ ∣ x − 2 arctan ( x /2 ) ∣ です。f ( x ) = x − 2 arctan ( x / 2 ) f(x) = x - 2\arctan(x/2) f ( x ) = x − 2 arctan ( x /2 ) は f ( 0 ) = 0 f(0) = 0 f ( 0 ) = 0 、
f ′ ( x ) = 1 − 1 1 + x 2 / 4 = x 2 / 4 1 + x 2 / 4 ∈ [ 0 , x 2 4 ] f'(x) = 1 - \frac{1}{1 + x^2/4} = \frac{x^2/4}{1 + x^2/4} \in \Bigl[0, \frac{x^2}{4}\Bigr] f ′ ( x ) = 1 − 1 + x 2 /4 1 = 1 + x 2 /4 x 2 /4 ∈ [ 0 , 4 x 2 ] なので ∣ f ( x ) ∣ ≤ ∣ ∫ 0 x s 2 / 4 d s ∣ = ∣ x ∣ 3 / 12 |f(x)| \le \bigl|\int_0^xs^2/4\,ds\bigr| = |x|^3/12 ∣ f ( x ) ∣ ≤ ∫ 0 x s 2 /4 d s = ∣ x ∣ 3 /12 です。
∎
定理 6.3 (Crank–Nicolson 法のユニタリ性と誤差 ) ✓
H H H をエルミート行列、Δ t > 0 \Delta t \gt 0 Δ t > 0 とする。
C Δ t C_{\Delta t} C Δ t はユニタリで H H H と可換である。したがって ∥ ψ n ∥ = ∥ ψ 0 ∥ \|\psi^n\| = \|\psi_0\| ∥ ψ n ∥ = ∥ ψ 0 ∥ 、⟨ ψ n , H ψ n ⟩ = ⟨ ψ 0 , H ψ 0 ⟩ \langle\psi^n, H\psi^n\rangle = \langle\psi_0, H\psi_0\rangle ⟨ ψ n , H ψ n ⟩ = ⟨ ψ 0 , H ψ 0 ⟩ (すべての n n n )。
t n = n Δ t t_n = n\Delta t t n = n Δ t について
∥ ψ n − e − i t n H ψ 0 ∥ ≤ t n Δ t 2 12 ∥ H 3 ψ 0 ∥ . \bigl\|\psi^n - e^{-it_nH}\psi_0\bigr\| \le \frac{t_n\,\Delta t^2}{12}\,\|H^3\psi_0\|. ψ n − e − i t n H ψ 0 ≤ 12 t n Δ t 2 ∥ H 3 ψ 0 ∥.
証明(定理 6.3) H = U Λ U ∗ H = U\Lambda U^{*} H = U Λ U ∗ 、Λ = d i a g ( μ k ) \Lambda = \mathrm{diag}(\mu_k) Λ = diag ( μ k ) とします(定理 4.2[スペクトル定理] )。I ± i Δ t 2 H = U ( I ± i Δ t 2 Λ ) U ∗ I \pm \frac{i\Delta t}{2}H = U(I \pm \frac{i\Delta t}{2}\Lambda)U^{*} I ± 2 i Δ t H = U ( I ± 2 i Δ t Λ ) U ∗ で、1 + i Δ t μ k / 2 ≠ 0 1 + i\Delta t\mu_k/2 \ne 0 1 + i Δ t μ k /2 = 0 なので逆行列が存在し、C Δ t = U d i a g ( r ( Δ t μ k ) ) U ∗ C_{\Delta t} = U\,\mathrm{diag}\bigl(r(\Delta t\mu_k)\bigr)U^{*} C Δ t = U diag ( r ( Δ t μ k ) ) U ∗ です。
補題 6.2 から ∣ r ( Δ t μ k ) ∣ = 1 |r(\Delta t\mu_k)| = 1 ∣ r ( Δ t μ k ) ∣ = 1 なので C Δ t C_{\Delta t} C Δ t はユニタリです(定理 8.1[スペクトル定理] )。H H H と同じ U U U で対角化されるので可換で、⟨ C Δ t ψ , H C Δ t ψ ⟩ = ⟨ C Δ t ψ , C Δ t H ψ ⟩ = ⟨ ψ , H ψ ⟩ \langle C_{\Delta t}\psi, HC_{\Delta t}\psi\rangle = \langle C_{\Delta t}\psi, C_{\Delta t}H\psi\rangle = \langle\psi, H\psi\rangle ⟨ C Δ t ψ , H C Δ t ψ ⟩ = ⟨ C Δ t ψ , C Δ t H ψ ⟩ = ⟨ ψ , H ψ ⟩ (命題 3.2[スペクトル定理] )です。
ψ 0 = ∑ k c k q k \psi_0 = \sum_kc_kq_k ψ 0 = ∑ k c k q k (q k q_k q k は U U U の列)と展開すると、補題 2.2 から
ψ n − e − i t n H ψ 0 = ∑ k c k ( r ( Δ t μ k ) n − e − i n Δ t μ k ) q k \psi^n - e^{-it_nH}\psi_0 = \sum_kc_k\bigl(r(\Delta t\mu_k)^n - e^{-in\Delta t\mu_k}\bigr)q_k ψ n − e − i t n H ψ 0 = k ∑ c k ( r ( Δ t μ k ) n − e − in Δ t μ k ) q k です。絶対値 1 の複素数 a , b a, b a , b について ∣ a n − b n ∣ ≤ n ∣ a − b ∣ |a^n - b^n| \le n|a - b| ∣ a n − b n ∣ ≤ n ∣ a − b ∣ (補題 2.2 の最後の主張の 1 × 1 1\times1 1 × 1 の場合)なので、補題 6.2 から各係数の絶対値は ∣ c k ∣ n ∣ Δ t μ k ∣ 3 / 12 |c_k|\,n|\Delta t\mu_k|^3/12 ∣ c k ∣ n ∣Δ t μ k ∣ 3 /12 以下です。よって
∥ ψ n − e − i t n H ψ 0 ∥ 2 ≤ ( n Δ t 3 12 ) 2 ∑ k μ k 6 ∣ c k ∣ 2 = ( t n Δ t 2 12 ) 2 ∥ H 3 ψ 0 ∥ 2 \bigl\|\psi^n - e^{-it_nH}\psi_0\bigr\|^2 \le \Bigl(\frac{n\Delta t^3}{12}\Bigr)^2\sum_k\mu_k^6|c_k|^2 = \Bigl(\frac{t_n\Delta t^2}{12}\Bigr)^2\|H^3\psi_0\|^2 ψ n − e − i t n H ψ 0 2 ≤ ( 12 n Δ t 3 ) 2 k ∑ μ k 6 ∣ c k ∣ 2 = ( 12 t n Δ t 2 ) 2 ∥ H 3 ψ 0 ∥ 2 です。
∎
誤差の評価には ∥ H ∥ \|H\| ∥ H ∥ ではなく ∥ H 3 ψ 0 ∥ \|H^3\psi_0\| ∥ H 3 ψ 0 ∥ が現れます。H H H が微分作用素の離散化なら ∥ H ∥ = O ( h − 2 ) \|H\| = O(h^{-2}) ∥ H ∥ = O ( h − 2 ) ですが、ψ 0 \psi_0 ψ 0 が滑らかな関数の格子値なら ∥ H 3 ψ 0 ∥ \|H^3\psi_0\| ∥ H 3 ψ 0 ∥ は h h h によらず有界で(ψ 0 \psi_0 ψ 0 の 6 階までの導関数で抑えられる)、h h h と Δ t \Delta t Δ t を独立に小さくできます。安定性に刻み幅の条件がないこと(無条件安定)と合わせて、これが陰的な方法の利点です。一方、高い波数の成分については Δ t μ k \Delta t\mu_k Δ t μ k が大きく、r ( Δ t μ k ) → − 1 r(\Delta t\mu_k) \to -1 r ( Δ t μ k ) → − 1 となって位相がまったく合いません。Crank–Nicolson 法は高い波数の成分を減衰させず、間違った位相で保ち続けます(熱方程式の場合の 命題 5.1[楕円型・放物型方程式の差分法] と同じ現象です)。
命題 6.4 (陽的 Euler 法と陰的 Euler 法 ) ✓
H H H をエルミート行列、ϱ = max k ∣ μ k ∣ \varrho = \max_k|\mu_k| ϱ = max k ∣ μ k ∣ をそのスペクトル半径とする。
∥ ( I − i Δ t H ) n ∥ = ( 1 + Δ t 2 ϱ 2 ) n / 2 \|(I - i\Delta tH)^n\| = (1 + \Delta t^2\varrho^2)^{n/2} ∥ ( I − i Δ t H ) n ∥ = ( 1 + Δ t 2 ϱ 2 ) n /2 。H ≠ 0 H \ne 0 H = 0 なら、どんな Δ t > 0 \Delta t \gt 0 Δ t > 0 でも n → ∞ n \to \infty n → ∞ で発散する。n Δ t = t n\Delta t = t n Δ t = t を固定すると ( 1 + Δ t 2 ϱ 2 ) n / 2 ≤ e t Δ t ϱ 2 / 2 (1 + \Delta t^2\varrho^2)^{n/2} \le e^{t\Delta t\varrho^2/2} ( 1 + Δ t 2 ϱ 2 ) n /2 ≤ e t Δ t ϱ 2 /2 である。
∥ ( I + i Δ t H ) − n ψ ∥ ≤ ∥ ψ ∥ \|(I + i\Delta tH)^{-n}\psi\| \le \|\psi\| ∥ ( I + i Δ t H ) − n ψ ∥ ≤ ∥ ψ ∥ で、H ψ = μ ψ H\psi = \mu\psi H ψ = μ ψ (μ ≠ 0 \mu \ne 0 μ = 0 )なら ∥ ( I + i Δ t H ) − n ψ ∥ = ( 1 + Δ t 2 μ 2 ) − n / 2 ∥ ψ ∥ \|(I + i\Delta tH)^{-n}\psi\| = (1 + \Delta t^2\mu^2)^{-n/2}\|\psi\| ∥ ( I + i Δ t H ) − n ψ ∥ = ( 1 + Δ t 2 μ 2 ) − n /2 ∥ ψ ∥ である。
証明(命題 6.4) H = U Λ U ∗ H = U\Lambda U^{*} H = U Λ U ∗ から ( I − i Δ t H ) n = U d i a g ( ( 1 − i Δ t μ k ) n ) U ∗ (I - i\Delta tH)^n = U\,\mathrm{diag}\bigl((1 - i\Delta t\mu_k)^n\bigr)U^{*} ( I − i Δ t H ) n = U diag ( ( 1 − i Δ t μ k ) n ) U ∗ で、ユニタリ行列を掛けても 2 ノルムは変わらないので、ノルムは max k ∣ 1 − i Δ t μ k ∣ n = ( 1 + Δ t 2 ϱ 2 ) n / 2 \max_k|1 - i\Delta t\mu_k|^n = (1 + \Delta t^2\varrho^2)^{n/2} max k ∣1 − i Δ t μ k ∣ n = ( 1 + Δ t 2 ϱ 2 ) n /2 です。1 + y ≤ e y 1 + y \le e^y 1 + y ≤ e y から ( 1 + Δ t 2 ϱ 2 ) n / 2 ≤ e n Δ t 2 ϱ 2 / 2 = e t Δ t ϱ 2 / 2 (1 + \Delta t^2\varrho^2)^{n/2} \le e^{n\Delta t^2\varrho^2/2} = e^{t\Delta t\varrho^2/2} ( 1 + Δ t 2 ϱ 2 ) n /2 ≤ e n Δ t 2 ϱ 2 /2 = e t Δ t ϱ 2 /2 です。陰的 Euler 法では対角成分が ( 1 + i Δ t μ k ) − n (1 + i\Delta t\mu_k)^{-n} ( 1 + i Δ t μ k ) − n で、絶対値は ( 1 + Δ t 2 μ k 2 ) − n / 2 ≤ 1 (1 + \Delta t^2\mu_k^2)^{-n/2} \le 1 ( 1 + Δ t 2 μ k 2 ) − n /2 ≤ 1 です。
∎
陽的 Euler 法の増幅因子 1 − i Δ t μ 1 - i\Delta t\mu 1 − i Δ t μ は、単位円周上の点 e − i Δ t μ e^{-i\Delta t\mu} e − i Δ t μ を接線の方向に近似したもので、必ず円の外に出ます。ϱ = O ( h − 2 ) \varrho = O(h^{-2}) ϱ = O ( h − 2 ) なので、時刻 t t t までノルムの増大を抑えるには Δ t = O ( h 4 ) \Delta t = O(h^4) Δ t = O ( h 4 ) が要り、実用になりません。陰的 Euler 法は逆に円の内側に入り、ノルムが減ります。どちらも確率の保存を壊します。
単位円(絶対値 1) 実軸 虚軸 厳密 Crank–Nicolson 陰的 Euler 陽的 Euler
1 ステップの増幅因子(刻み幅と固有値の積が 1.5 の場合)。厳密な解は単位円周上に載り、Crank–Nicolson 法も円周上(位相だけがずれる)、陽的 Euler 法は円の外、陰的 Euler 法は円の内側に載る。
例 6.5 (2 準位系の Rabi 振動 )
H = Ω 2 ( 0 1 1 0 ) H = \frac\Omega2\begin{pmatrix}0 & 1\\ 1 & 0\end{pmatrix} H = 2 Ω ( 0 1 1 0 ) 、ψ 0 = ( 1 , 0 ) \psi_0 = (1, 0) ψ 0 = ( 1 , 0 ) とすると、固有値は ± Ω / 2 \pm\Omega/2 ± Ω/2 で、第 2 成分の確率は ∣ ψ 2 ( t ) ∣ 2 = sin 2 ( Ω t / 2 ) |\psi_2(t)|^2 = \sin^2(\Omega t/2) ∣ ψ 2 ( t ) ∣ 2 = sin 2 ( Ω t /2 ) (Rabi 振動)です。Ω = 1 \Omega = 1 Ω = 1 、T = 10 T = 10 T = 10 で 3 つの方法のノルムを比べます。
# Python 3.9.6 / NumPy 2.0.2
H = 0.5 * Omega * np. array ( [[ 0 , 1 ] , [ 1 , 0 ]], dtype = complex ) # 固有値 ±Omega/2
print ( " steps explicit Euler ||psi|| (1 + dt^2 Omega^2/4)^(n/2) implicit Euler ||psi|| Crank-Nicolson ||psi|| P_2 error (CN) " )
for steps in [ 100 , 1000 , 10000 ] :
pe = pi = pc = np. array ( [ 1.0 , 0.0 ], dtype = complex )
Mi = np.linalg. inv ( I + 1 j * dt * H )
Mc = np.linalg. solve ( I + 0.5 j * dt * H , I - 0.5 j * dt * H )
pe, pi, pc = pe - 1 j * dt * (H @ pe), Mi @ pi, Mc @ pc
print ( f " {steps :6d } {np.linalg. norm ( pe ) :.10f } {( 1 + dt ** 2 * Omega ** 2 / 4 ) ** (steps / 2 ) :.10f } "
f " {np.linalg. norm ( pi ) :.10f } {np.linalg. norm ( pc ) :.10f } "
f " { abs ( abs ( pc [ 1 ]) ** 2 - np. sin ( Omega * T / 2 ) ** 2 ) :.2e } " )
steps explicit Euler ||psi|| (1 + dt^2 Omega^2/4)^(n/2) implicit Euler ||psi|| Crank-Nicolson ||psi|| P_2 error (CN)
100 1.1329717069 1.1329717069 0.8826345741 1.0000000000 5.66e-04
1000 1.0125782933 1.0125782933 0.9875779548 1.0000000000 5.67e-06
10000 1.0012507814 1.0012507814 0.9987507811 1.0000000000 5.67e-08
この例では 2 つの固有値の絶対値が等しいので、陽的 Euler 法のノルムは 命題 6.4 の式 ( 1 + Δ t 2 Ω 2 / 4 ) n / 2 (1 + \Delta t^2\Omega^2/4)^{n/2} ( 1 + Δ t 2 Ω 2 /4 ) n /2 に一致します。ノルムのずれは Δ t \Delta t Δ t に比例して減るだけで、100 ステップでは確率の総和が 1.13 2 ≈ 1.28 1.13^2 \approx 1.28 1.1 3 2 ≈ 1.28 になります。Crank–Nicolson 法はノルムを保ち、確率 ∣ ψ 2 ∣ 2 |\psi_2|^2 ∣ ψ 2 ∣ 2 の誤差はステップ数を 10 倍にするごとに 1 / 100 1/100 1/100 です。
H = A + B H = A + B H = A + B で、e − i τ A e^{-i\tau A} e − i τ A と e − i τ B e^{-i\tau B} e − i τ B はそれぞれ安く計算できるが e − i τ ( A + B ) e^{-i\tau(A+B)} e − i τ ( A + B ) はそうでない、という状況がよくあります。典型は A A A が運動エネルギー(Fourier 変換で対角化される)、B B B がポテンシャル(位置の表示で対角)の場合です。
定義 7.1 (Lie–Trotter 分割と Strang 分割 ) ↗
エルミート行列 A , B A, B A , B と τ > 0 \tau \gt 0 τ > 0 について
S 1 ( τ ) = e − i τ A e − i τ B , S 2 ( τ ) = e − i τ B / 2 e − i τ A e − i τ B / 2 S_1(\tau) = e^{-i\tau A}e^{-i\tau B},\qquad S_2(\tau) = e^{-i\tau B/2}\,e^{-i\tau A}\,e^{-i\tau B/2} S 1 ( τ ) = e − i τ A e − i τ B , S 2 ( τ ) = e − i τ B /2 e − i τ A e − i τ B /2 を Lie–Trotter 分割 、Strang 分割 (対称分割)という。t = n τ t = n\tau t = n τ のとき、S 1 ( τ ) n S_1(\tau)^n S 1 ( τ ) n 、S 2 ( τ ) n S_2(\tau)^n S 2 ( τ ) n を e − i t ( A + B ) e^{-it(A+B)} e − i t ( A + B ) の近似とする。
S 1 ( τ ) S_1(\tau) S 1 ( τ ) と S 2 ( τ ) S_2(\tau) S 2 ( τ ) は、ユニタリ行列(補題 2.2 )の積なのでユニタリです。したがって、分割法はどんな τ \tau τ でもノルムを厳密に保存します。S 2 ( τ ) n S_2(\tau)^n S 2 ( τ ) n では隣り合う e − i τ B / 2 e^{-i\tau B/2} e − i τ B /2 がまとまって e − i τ B e^{-i\tau B} e − i τ B になるので、最初と最後の半ステップを除けば、1 ステップの手間は S 1 S_1 S 1 と同じです。
補題 7.2 (共役による変化と交換子 ) ✓
A A A をエルミート行列、X X X を同じ次数の行列、s s s を実数とすると
∥ e i s A X e − i s A − X ∥ ≤ ∣ s ∣ ∥ [ A , X ] ∥ \bigl\|e^{isA}Xe^{-isA} - X\bigr\| \le |s|\,\|[A, X]\| e i s A X e − i s A − X ≤ ∣ s ∣ ∥ [ A , X ] ∥ である。
証明(補題 7.2) Y ( s ) = e i s A X e − i s A Y(s) = e^{isA}Xe^{-isA} Y ( s ) = e i s A X e − i s A とおくと、命題 4.2[線形微分方程式系] の 3 から Y ′ ( s ) = e i s A ( i A X − i X A ) e − i s A = i e i s A [ A , X ] e − i s A Y'(s) = e^{isA}(iAX - iXA)e^{-isA} = i\,e^{isA}[A, X]e^{-isA} Y ′ ( s ) = e i s A ( i A X − i X A ) e − i s A = i e i s A [ A , X ] e − i s A です。e ± i s A e^{\pm isA} e ± i s A はユニタリなので ∥ Y ′ ( s ) ∥ = ∥ [ A , X ] ∥ \|Y'(s)\| = \|[A, X]\| ∥ Y ′ ( s ) ∥ = ∥ [ A , X ] ∥ で、Y ( s ) − X = ∫ 0 s Y ′ ( σ ) d σ Y(s) - X = \int_0^sY'(\sigma)\,d\sigma Y ( s ) − X = ∫ 0 s Y ′ ( σ ) d σ から主張が出ます。
∎
次の定理は、2 つの因子を交互に掛けたときの誤差を A A A と B B B の交換子で評価します。A A A と B B B が可換なら分割は厳密で、可換からのずれの大きさが誤差になる、というのが直感です。1 は誤差を積分で直接評価し、2 は経路積分 Monte Carlo 法 の章の定理に i A iA i A 、i B iB i B を代入して得ます。
定理 7.3 (ユニタリな分割の誤差 ) ✓
A , B A, B A , B を d d d 次のエルミート行列、t ≥ 0 t \ge 0 t ≥ 0 、n ≥ 1 n \ge 1 n ≥ 1 、τ = t / n \tau = t/n τ = t / n とする。
∥ S 1 ( τ ) n − e − i t ( A + B ) ∥ ≤ t τ 2 ∥ [ A , B ] ∥ \bigl\|S_1(\tau)^n - e^{-it(A+B)}\bigr\| \le \dfrac{t\,\tau}{2}\,\|[A, B]\| S 1 ( τ ) n − e − i t ( A + B ) ≤ 2 t τ ∥ [ A , B ] ∥ 。
∥ S 2 ( τ ) n − e − i t ( A + B ) ∥ ≤ t τ 2 ( ∥ [ A , [ A , B ] ] ∥ 12 + ∥ [ B , [ B , A ] ] ∥ 24 ) \bigl\|S_2(\tau)^n - e^{-it(A+B)}\bigr\| \le t\,\tau^2\Bigl(\dfrac{\|[A,[A,B]]\|}{12} + \dfrac{\|[B,[B,A]]\|}{24}\Bigr) S 2 ( τ ) n − e − i t ( A + B ) ≤ t τ 2 ( 12 ∥ [ A , [ A , B ]] ∥ + 24 ∥ [ B , [ B , A ]] ∥ ) 。
[ A , B ] = 0 [A, B] = 0 [ A , B ] = 0 なら S 1 ( τ ) n = S 2 ( τ ) n = e − i t ( A + B ) S_1(\tau)^n = S_2(\tau)^n = e^{-it(A+B)} S 1 ( τ ) n = S 2 ( τ ) n = e − i t ( A + B ) である。
証明(定理 7.3)
F ( s ) = e − i s A e − i s B F(s) = e^{-isA}e^{-isB} F ( s ) = e − i s A e − i s B とおきます。命題 4.2[線形微分方程式系] の 3 から
F ′ ( s ) = − i A F ( s ) − i e − i s A B e − i s B = − i ( A + B ) F ( s ) + R ( s ) , R ( s ) = i ( B e − i s A − e − i s A B ) e − i s B F'(s) = -iAF(s) - ie^{-isA}Be^{-isB} = -i(A + B)F(s) + R(s),\qquad R(s) = i\bigl(Be^{-isA} - e^{-isA}B\bigr)e^{-isB} F ′ ( s ) = − i A F ( s ) − i e − i s A B e − i s B = − i ( A + B ) F ( s ) + R ( s ) , R ( s ) = i ( B e − i s A − e − i s A B ) e − i s B です。F ( 0 ) = I F(0) = I F ( 0 ) = I なので、定数変化法(定理 3.1[線形微分方程式系] を各列に使う。基本解行列は e − i s ( A + B ) e^{-is(A+B)} e − i s ( A + B ) )から
F ( τ ) − e − i τ ( A + B ) = ∫ 0 τ e − i ( τ − s ) ( A + B ) R ( s ) d s F(\tau) - e^{-i\tau(A+B)} = \int_0^\tau e^{-i(\tau - s)(A+B)}R(s)\,ds F ( τ ) − e − i τ ( A + B ) = ∫ 0 τ e − i ( τ − s ) ( A + B ) R ( s ) d s です。ユニタリ行列を掛けてもノルムは変わらないので、補題 7.2 (X = B X = B X = B )から ∥ R ( s ) ∥ = ∥ B e − i s A − e − i s A B ∥ = ∥ e i s A B e − i s A − B ∥ ≤ s ∥ [ A , B ] ∥ \|R(s)\| = \|Be^{-isA} - e^{-isA}B\| = \|e^{isA}Be^{-isA} - B\| \le s\|[A, B]\| ∥ R ( s ) ∥ = ∥ B e − i s A − e − i s A B ∥ = ∥ e i s A B e − i s A − B ∥ ≤ s ∥ [ A , B ] ∥ で、
∥ S 1 ( τ ) − e − i τ ( A + B ) ∥ ≤ ∫ 0 τ s ∥ [ A , B ] ∥ d s = τ 2 2 ∥ [ A , B ] ∥ \bigl\|S_1(\tau) - e^{-i\tau(A+B)}\bigr\| \le \int_0^\tau s\,\|[A, B]\|\,ds = \frac{\tau^2}{2}\|[A, B]\| S 1 ( τ ) − e − i τ ( A + B ) ≤ ∫ 0 τ s ∥ [ A , B ] ∥ d s = 2 τ 2 ∥ [ A , B ] ∥ です。S 1 ( τ ) S_1(\tau) S 1 ( τ ) と e − i τ ( A + B ) e^{-i\tau(A+B)} e − i τ ( A + B ) はユニタリなので、補題 2.2 の最後の主張から ∥ S 1 ( τ ) n − e − i t ( A + B ) ∥ ≤ n τ 2 ∥ [ A , B ] ∥ / 2 = t τ ∥ [ A , B ] ∥ / 2 \|S_1(\tau)^n - e^{-it(A+B)}\| \le n\tau^2\|[A,B]\|/2 = t\tau\|[A,B]\|/2 ∥ S 1 ( τ ) n − e − i t ( A + B ) ∥ ≤ n τ 2 ∥ [ A , B ] ∥/2 = t τ ∥ [ A , B ] ∥/2 です。
定理 3.2[経路積分 Monte Carlo] の 1 を、その定理の A A A 、B B B 、β \beta β 、M M M として i B iB i B 、i A iA i A 、t t t 、n n n をとって使います(参照先の定理では外側に半ステップで置く行列が A A A なので、こちらで外側に置く B B B を向こうの A A A に対応させます)。i A iA i A 、i B iB i B 、i ( A + B ) i(A+B) i ( A + B ) は反エルミート行列で、e − s ( i A ) = e − i s A e^{-s(iA)} = e^{-isA} e − s ( i A ) = e − i s A などはユニタリなのでノルムは 1 です。したがって、その定理の仮定である 3 つの半群の縮小性 ∥ e − s ( i B ) ∥ ≤ 1 \|e^{-s(iB)}\| \le 1 ∥ e − s ( i B ) ∥ ≤ 1 、∥ e − s ( i A ) ∥ ≤ 1 \|e^{-s(iA)}\| \le 1 ∥ e − s ( i A ) ∥ ≤ 1 、∥ e − s ( i A + i B ) ∥ ≤ 1 \|e^{-s(iA + iB)}\| \le 1 ∥ e − s ( i A + i B ) ∥ ≤ 1 (s ≥ 0 s \ge 0 s ≥ 0 )が満たされます(補題 2.2[経路積分 Monte Carlo] の 2)。参照先の対称分割 e − τ ( i B ) / 2 e − τ ( i A ) e − τ ( i B ) / 2 e^{-\tau(iB)/2}e^{-\tau(iA)}e^{-\tau(iB)/2} e − τ ( i B ) /2 e − τ ( i A ) e − τ ( i B ) /2 は S 2 ( τ ) S_2(\tau) S 2 ( τ ) で、その n n n 乗が S 2 ( τ ) n S_2(\tau)^n S 2 ( τ ) n です。参照先の評価では外側の行列の二重交換子に 1 / 24 1/24 1/24 、内側の行列の二重交換子に 1 / 12 1/12 1/12 が付きます。交換子は [ i B , [ i B , i A ] ] = i 3 [ B , [ B , A ] ] [iB, [iB, iA]] = i^3[B,[B,A]] [ i B , [ i B , i A ]] = i 3 [ B , [ B , A ]] 、[ i A , [ i A , i B ] ] = i 3 [ A , [ A , B ] ] [iA,[iA,iB]] = i^3[A,[A,B]] [ i A , [ i A , i B ]] = i 3 [ A , [ A , B ]] なので、右辺は
t 3 n 2 ( ∥ [ B , [ B , A ] ] ∥ 24 + ∥ [ A , [ A , B ] ] ∥ 12 ) = t τ 2 ( ∥ [ A , [ A , B ] ] ∥ 12 + ∥ [ B , [ B , A ] ] ∥ 24 ) \frac{t^3}{n^2}\Bigl(\frac{\|[B,[B,A]]\|}{24} + \frac{\|[A,[A,B]]\|}{12}\Bigr) = t\,\tau^2\Bigl(\frac{\|[A,[A,B]]\|}{12} + \frac{\|[B,[B,A]]\|}{24}\Bigr) n 2 t 3 ( 24 ∥ [ B , [ B , A ]] ∥ + 12 ∥ [ A , [ A , B ]] ∥ ) = t τ 2 ( 12 ∥ [ A , [ A , B ]] ∥ + 24 ∥ [ B , [ B , A ]] ∥ ) です。
A A A と B B B が可換なら e − i τ ( A + B ) = e − i τ A e − i τ B e^{-i\tau(A+B)} = e^{-i\tau A}e^{-i\tau B} e − i τ ( A + B ) = e − i τ A e − i τ B (命題 4.2[線形微分方程式系] の 1)で、e − i τ B / 2 e^{-i\tau B/2} e − i τ B /2 は e − i τ A e^{-i\tau A} e − i τ A と可換(A A A と可換な B B B は A A A の冪級数 e − i τ A e^{-i\tau A} e − i τ A とも可換)なので S 2 ( τ ) = e − i τ A e − i τ B S_2(\tau) = e^{-i\tau A}e^{-i\tau B} S 2 ( τ ) = e − i τ A e − i τ B です。
∎
1 は参照先の定理の 2(対称でない分割。β 2 2 M ∥ [ A , B ] ∥ \frac{\beta^2}{2M}\|[A,B]\| 2 M β 2 ∥ [ A , B ] ∥ )に i A iA i A 、i B iB i B 、β = t \beta = t β = t 、M = n M = n M = n を入れたものと同じ評価で、上の証明はそれをユニタリな場合に直接書いたものです。2 では、半ステップで外側に置く B B B (分割演算子法ではポテンシャル)の二重交換子 [ B , [ B , A ] ] [B,[B,A]] [ B , [ B , A ]] に 1 / 24 1/24 1/24 、内側の A A A (運動項)の二重交換子 [ A , [ A , B ] ] [A,[A,B]] [ A , [ A , B ]] に 1 / 12 1/12 1/12 が付きます。誤差の定数が ∥ A ∥ \|A\| ∥ A ∥ 、∥ B ∥ \|B\| ∥ B ∥ ではなく交換子で書けることが重要です。A A A と B B B が「ほとんど可換」なら、それぞれのノルムが大きくても誤差は小さくなります。対称分割で誤差の次数が 1 つ上がるのは、S 2 ( − τ ) = S 2 ( τ ) − 1 S_2(-\tau) = S_2(\tau)^{-1} S 2 ( − τ ) = S 2 ( τ ) − 1 (時間反転対称。命題 5.2 の Φ Δ t = L W L \Phi_{\Delta t} = LWL Φ Δ t = L W L と同じ構造)のため、1 ステップの誤差の τ 2 \tau^2 τ 2 の項が消えるからです。実際、速度 Verlet 法は、q ′ = p q' = p q ′ = p と p ′ = − A q p' = -Aq p ′ = − A q のそれぞれの厳密な流れを Strang の順に合成したものです。
例 7.4 (分割の誤差と交換子による上界 )
乱数で作った 6 次のエルミート行列 A , B A, B A , B と、可換な組(B = A 2 − 2 A B = A^2 - 2A B = A 2 − 2 A )について、t = 1 t = 1 t = 1 での誤差を上界と比べます。参照は scipy.linalg.expm です。
# Python 3.9.6 / NumPy 2.0.2 / SciPy 1.13.1
from scipy.linalg import expm
rng = np.random. default_rng ( 1 )
X = rng. normal ( size = (n, n) ) + 1 j * rng. normal ( size = (n, n) )
return (X + X. conj ().T) / 2
comm = lambda X , Y : X @ Y - Y @ X
norm2 = lambda X : np.linalg. norm ( X , 2 )
exact = expm ( - 1 j * t * (A + B) )
c2 = norm2 ( comm ( A , comm ( A , B ))) / 12 + norm2 ( comm ( B , comm ( B , A ))) / 24
print ( " n Lie-Trotter bound t tau c1/2 Strang bound t tau^2 c2 " )
for n in [ 10 , 20 , 40 , 80 , 160 ] :
lie = np.linalg. matrix_power ( expm ( - 1 j * tau * A ) @ expm ( - 1 j * tau * B ) , n )
half = expm ( - 0.5 j * tau * B )
strang = np.linalg. matrix_power ( half @ expm ( - 1 j * tau * A ) @ half , n )
print ( f " {n :6d } { norm2 ( lie - exact ) :.3e } {t * tau * c1 / 2 :.3e } "
f " { norm2 ( strang - exact ) :.3e } {t * tau ** 2 * c2 :.3e } " )
A, B = hermitian ( 6 ), hermitian ( 6 )
print ( " random Hermitian A, B (6 x 6) " )
print ( " commuting case: B = A^2 - 2A " )
random Hermitian A, B (6 x 6)
n Lie-Trotter bound t tau c1/2 Strang bound t tau^2 c2
10 2.095e-01 4.804e-01 1.345e-02 4.802e-02
20 1.051e-01 2.402e-01 3.355e-03 1.200e-02
40 5.268e-02 1.201e-01 8.382e-04 3.001e-03
80 2.637e-02 6.005e-02 2.095e-04 7.503e-04
160 1.319e-02 3.002e-02 5.238e-05 1.876e-04
commuting case: B = A^2 - 2A
n Lie-Trotter bound t tau c1/2 Strang bound t tau^2 c2
10 2.214e-15 3.199e-16 2.919e-15 5.675e-17
20 3.928e-15 1.599e-16 3.692e-15 1.419e-17
40 4.076e-15 7.996e-17 6.807e-15 3.547e-18
80 5.594e-15 3.998e-17 1.138e-14 8.866e-19
160 2.686e-14 1.999e-17 3.370e-14 2.217e-19
誤差は上界の 1 / 2 1/2 1/2 〜1 / 4 1/4 1/4 程度で、n n n を 2 倍にすると Lie–Trotter は 1 / 2 1/2 1/2 、Strang は 1 / 4 1/4 1/4 になります。可換な場合は誤差が丸めの大きさです(上界の列も、交換子を浮動小数点数で計算した丸め誤差だけが残っています。誤差が上界より大きく見えるのは、行列指数関数と冪の計算の丸め誤差です)。
定義 7.5 (分割演算子 Fourier 法 ) ↗
区間 [ − L , L ) [-L, L) [ − L , L ) を周期的とみなし、N N N 点の格子 x j = − L + j Δ x x_j = -L + j\Delta x x j = − L + j Δ x (Δ x = 2 L / N \Delta x = 2L/N Δ x = 2 L / N 、j = 0 , … , N − 1 j = 0, \ldots, N-1 j = 0 , … , N − 1 )と波数 κ m = π m / L \kappa_m = \pi m/L κ m = π m / L (m m m は N N N 個の連続する整数。N N N が奇数なら ∣ m ∣ ≤ ( N − 1 ) / 2 |m| \le (N-1)/2 ∣ m ∣ ≤ ( N − 1 ) /2 )をとる。F F F を F m j = N − 1 / 2 e − i κ m x j F_{mj} = N^{-1/2}e^{-i\kappa_mx_j} F mj = N − 1/2 e − i κ m x j で定まる行列(離散 Fourier 変換)とし、
T N = F ∗ d i a g ( 1 2 κ m 2 ) F , V N = d i a g ( V ( x j ) ) T_N = F^{*}\,\mathrm{diag}\bigl(\tfrac12\kappa_m^2\bigr)\,F,\qquad V_N = \mathrm{diag}\bigl(V(x_j)\bigr) T N = F ∗ diag ( 2 1 κ m 2 ) F , V N = diag ( V ( x j ) ) とおく。i ψ t = − 1 2 ψ x x + V ( x ) ψ i\psi_t = -\frac12\psi_{xx} + V(x)\psi i ψ t = − 2 1 ψ xx + V ( x ) ψ の近似として i ψ ′ = ( T N + V N ) ψ i\psi' = (T_N + V_N)\psi i ψ ′ = ( T N + V N ) ψ を Strang 分割
ψ n + 1 = e − i τ V N / 2 F ∗ d i a g ( e − i τ κ m 2 / 2 ) F e − i τ V N / 2 ψ n \psi^{n+1} = e^{-i\tau V_N/2}\,F^{*}\,\mathrm{diag}\bigl(e^{-i\tau\kappa_m^2/2}\bigr)\,F\,e^{-i\tau V_N/2}\,\psi^n ψ n + 1 = e − i τ V N /2 F ∗ diag ( e − i τ κ m 2 /2 ) F e − i τ V N /2 ψ n で進める方法を分割演算子 Fourier 法 (split-step Fourier 法)という。
T N T_N T N は、スペクトル法 の 2 階のスペクトル微分行列(命題 5.2[スペクトル法] の 4。区間の長さを 2 π 2\pi 2 π から 2 L 2L 2 L に変えたもの)の − 1 2 -\frac12 − 2 1 倍です。空間の離散化の誤差は、その章の補間誤差の評価に従います。
命題 7.6 (分割演算子 Fourier 法の性質 ) ✓
定義 7.5 について次が成り立つ。
F F F はユニタリで、T N T_N T N はエルミート、e − i τ T N = F ∗ d i a g ( e − i τ κ m 2 / 2 ) F e^{-i\tau T_N} = F^{*}\mathrm{diag}(e^{-i\tau\kappa_m^2/2})F e − i τ T N = F ∗ diag ( e − i τ κ m 2 /2 ) F である。1 ステップの行列は S 2 ( τ ) S_2(\tau) S 2 ( τ ) (A = T N A = T_N A = T N 、B = V N B = V_N B = V N )で、ユニタリである。したがって ∥ ψ n ∥ = ∥ ψ 0 ∥ \|\psi^n\| = \|\psi^0\| ∥ ψ n ∥ = ∥ ψ 0 ∥ 。
t = n τ t = n\tau t = n τ について
∥ ψ n − e − i t ( T N + V N ) ψ 0 ∥ ≤ t τ 2 ( ∥ [ T N , [ T N , V N ] ] ∥ 12 + ∥ [ V N , [ V N , T N ] ] ∥ 24 ) ∥ ψ 0 ∥ . \bigl\|\psi^n - e^{-it(T_N + V_N)}\psi^0\bigr\| \le t\,\tau^2\Bigl(\frac{\|[T_N,[T_N,V_N]]\|}{12} + \frac{\|[V_N,[V_N,T_N]]\|}{24}\Bigr)\|\psi^0\|. ψ n − e − i t ( T N + V N ) ψ 0 ≤ t τ 2 ( 12 ∥ [ T N , [ T N , V N ]] ∥ + 24 ∥ [ V N , [ V N , T N ]] ∥ ) ∥ ψ 0 ∥.
連続の作用素 T = − 1 2 d 2 d x 2 T = -\frac12\frac{d^2}{dx^2} T = − 2 1 d x 2 d 2 と C 4 C^4 C 4 級の関数 V V V について、C 4 C^4 C 4 級の関数 ψ \psi ψ に対し
[ T , V ] ψ = − 1 2 V ′ ′ ψ − V ′ ψ ′ , [ V , [ V , T ] ] ψ = − ( V ′ ) 2 ψ [T, V]\psi = -\tfrac12V''\psi - V'\psi',\qquad [V,[V,T]]\psi = -(V')^2\psi [ T , V ] ψ = − 2 1 V ′′ ψ − V ′ ψ ′ , [ V , [ V , T ]] ψ = − ( V ′ ) 2 ψ
である。
証明(命題 7.6)
( F F ∗ ) m m ′ = 1 N ∑ j e − i ( κ m − κ m ′ ) x j = 1 N e i ( κ m − κ m ′ ) L ∑ j = 0 N − 1 e − 2 π i ( m − m ′ ) j / N (FF^{*})_{mm'} = \frac1N\sum_je^{-i(\kappa_m - \kappa_{m'})x_j} = \frac1Ne^{i(\kappa_m - \kappa_{m'})L}\sum_{j=0}^{N-1}e^{-2\pi i(m - m')j/N} ( F F ∗ ) m m ′ = N 1 ∑ j e − i ( κ m − κ m ′ ) x j = N 1 e i ( κ m − κ m ′ ) L ∑ j = 0 N − 1 e − 2 π i ( m − m ′ ) j / N で、m , m ′ m, m' m , m ′ は N N N 個の連続する整数の中にあるので m ≠ m ′ m \ne m' m = m ′ なら m − m ′ m - m' m − m ′ は N N N の倍数でなく、和は 0(等比数列の和の公式)、m = m ′ m = m' m = m ′ なら 1 です。よって F F F はユニタリです。T N T_N T N は実対角行列のユニタリ共役なのでエルミートで、補題 2.2 の証明と同じく e − i τ T N = F ∗ d i a g ( e − i τ κ m 2 / 2 ) F e^{-i\tau T_N} = F^{*}\mathrm{diag}(e^{-i\tau\kappa_m^2/2})F e − i τ T N = F ∗ diag ( e − i τ κ m 2 /2 ) F です。V N V_N V N は実対角行列で e − i τ V N / 2 = d i a g ( e − i τ V ( x j ) / 2 ) e^{-i\tau V_N/2} = \mathrm{diag}(e^{-i\tau V(x_j)/2}) e − i τ V N /2 = diag ( e − i τ V ( x j ) /2 ) なので、1 ステップの行列は e − i τ V N / 2 e − i τ T N e − i τ V N / 2 e^{-i\tau V_N/2}e^{-i\tau T_N}e^{-i\tau V_N/2} e − i τ V N /2 e − i τ T N e − i τ V N /2 です。
定理 7.3 の 2 です。
T ( V ψ ) = − 1 2 ( V ′ ′ ψ + 2 V ′ ψ ′ + V ψ ′ ′ ) T(V\psi) = -\frac12(V''\psi + 2V'\psi' + V\psi'') T ( V ψ ) = − 2 1 ( V ′′ ψ + 2 V ′ ψ ′ + V ψ ′′ ) 、V ( T ψ ) = − 1 2 V ψ ′ ′ V(T\psi) = -\frac12V\psi'' V ( T ψ ) = − 2 1 V ψ ′′ の差が最初の式です。[ V , T ] = − [ T , V ] [V, T] = -[T, V] [ V , T ] = − [ T , V ] なので [ V , T ] ψ = 1 2 V ′ ′ ψ + V ′ ψ ′ [V, T]\psi = \frac12V''\psi + V'\psi' [ V , T ] ψ = 2 1 V ′′ ψ + V ′ ψ ′ で、
[ V , [ V , T ] ] ψ = V ( 1 2 V ′ ′ ψ + V ′ ψ ′ ) − ( 1 2 V ′ ′ V ψ + V ′ ( V ψ ) ′ ) = V V ′ ψ ′ − V ′ ( V ′ ψ + V ψ ′ ) = − ( V ′ ) 2 ψ [V,[V,T]]\psi = V\bigl(\tfrac12V''\psi + V'\psi'\bigr) - \bigl(\tfrac12V''V\psi + V'(V\psi)'\bigr) = VV'\psi' - V'(V'\psi + V\psi') = -(V')^2\psi [ V , [ V , T ]] ψ = V ( 2 1 V ′′ ψ + V ′ ψ ′ ) − ( 2 1 V ′′ V ψ + V ′ ( V ψ ) ′ ) = V V ′ ψ ′ − V ′ ( V ′ ψ + V ψ ′ ) = − ( V ′ ) 2 ψ です。
∎
1 ステップの演算量は、離散 Fourier 変換 2 回(FFT で各 O ( N log N ) O(N\log N) O ( N log N ) )と、長さ N N N のベクトルの成分ごとの積 3 回です。行列を作る必要も連立方程式を解く必要もありません。
2 の右辺の交換子のノルムは、N N N を大きくすると増えます(∥ T N ∥ = O ( N 2 ) \|T_N\| = O(N^2) ∥ T N ∥ = O ( N 2 ) なので)。しかし 3 が示すように、交換子は「V V V の導関数 × 低階の微分作用素」で、[ V , [ V , T ] ] [V,[V,T]] [ V , [ V , T ]] は微分を含まない掛け算です。そのため、滑らかな V V V と滑らかな波動関数については、誤差は N N N によらず O ( τ 2 ) O(\tau^2) O ( τ 2 ) になります。これを作用素ノルムではなく ψ \psi ψ の滑らかさ(Sobolev ノルム)で評価する定理は、非有界作用素の分割についての Jahnke–Lubich の結果(参考文献 [4])で、証明には作用素の定義域の議論が要るので、ここでは定理環境にしません。次数のつかない収束だけなら、自己共役作用素の Trotter 積公式(定理 6.1[1 径数ユニタリ群と強連続半群] )と、行列の場合の Lie–Trotter の積公式(命題 2.2[行列 Lie 群と指数写像] )から従います。
次の例のコヒーレント状態は、形を変えずに古典的な粒子のように揺れる波束のことで、厳密解が分かっているので誤差を測るのに向いています。
例 7.7 (調和振動子のコヒーレント状態 )
H = − 1 2 d 2 d x 2 + 1 2 x 2 H = -\frac12\frac{d^2}{dx^2} + \frac12x^2 H = − 2 1 d x 2 d 2 + 2 1 x 2 の初期値 ψ 0 ( x ) = π − 1 / 4 e − ( x − x 0 ) 2 / 2 \psi_0(x) = \pi^{-1/4}e^{-(x - x_0)^2/2} ψ 0 ( x ) = π − 1/4 e − ( x − x 0 ) 2 /2 に対する解は
ψ ( x , t ) = π − 1 / 4 exp ( − 1 2 ( x − x 0 cos t ) 2 − i x 0 x sin t − i 2 t + i 4 x 0 2 sin 2 t ) \psi(x, t) = \pi^{-1/4}\exp\Bigl(-\tfrac12(x - x_0\cos t)^2 - ix_0x\sin t - \tfrac{i}{2}t + \tfrac{i}{4}x_0^2\sin2t\Bigr) ψ ( x , t ) = π − 1/4 exp ( − 2 1 ( x − x 0 cos t ) 2 − i x 0 x sin t − 2 i t + 4 i x 0 2 sin 2 t ) で、形を変えずに古典的な軌道 x 0 cos t x_0\cos t x 0 cos t の上を往復します(代入して確かめられます)。x 0 = 1 x_0 = 1 x 0 = 1 、T = 2 T = 2 T = 2 とし、(a) 3 点差分の H H H に対する Crank–Nicolson 法を、同じ行列 H H H の厳密な時間発展と比べ、(b) 分割演算子 Fourier 法を、上の厳密解と比べます。
# Python 3.9.6 / NumPy 2.0.2 / SciPy 1.13.1
from scipy.linalg import eigh_tridiagonal, solve_banded
""" H = -(1/2) d^2/dx^2 + x^2/2 のコヒーレント状態(t = 0 で中心 x0 の Gauss 関数)。 """
return np.pi ** - 0.25 * np. exp ( - 0.5 * (x - x0 * np. cos ( t ) ) ** 2 - 1 j * x0 * x * np. sin ( t )
- 0.5 j * t + 0.25 j * x0 ** 2 * np. sin ( 2 * t ))
# (a) Crank–Nicolson(3 点差分)。参照は同じ行列 H の厳密な時間発展(固有分解)。
x = - L + h * np. arange ( 1 , M )
d, e = 1.0 / h ** 2 + 0.5 * x ** 2 , - 0.5 / h ** 2 * np. ones ( M - 2 )
lam, U = eigh_tridiagonal ( d , e )
psi0 = coherent ( x , 0.0 ). astype ( complex )
ref = U @ (np. exp ( - 1 j * lam * T ) * (U.T @ psi0))
H = lambda v : d * v + np. concatenate ( ( [ 0 ] , e * v [ : - 1 ] ) ) + np. concatenate ( (e * v [ 1 : ] , [ 0 ] ) )
H3 = np. sqrt ( h ) * np.linalg. norm ( H ( H ( H ( psi0 ))))
norm = lambda v : np. sqrt ( h ) * np.linalg. norm ( v )
print ( " Crank-Nicolson: steps | ||psi|| - 1 | |<H> - <H>_0| error order bound T dt^2 ||H^3 psi_0|| / 12 " )
for steps in [ 100 , 200 , 400 , 800 ] :
ab = np. zeros ( ( 3 , M - 1 ) , dtype = complex ) # I + i dt H / 2 の帯行列
ab[ 0 , 1 :], ab[ 1 ], ab[ 2 , : - 1 ] = 0.5 j * dt * e, 1 + 0.5 j * dt * d, 0.5 j * dt * e
psi = solve_banded ( ( 1 , 1 ) , ab , psi - 0.5 j * dt * H ( psi ))
dE = abs ( h * np. vdot ( psi , H ( psi )) - h * np. vdot ( psi0 , H ( psi0 )))
print ( f " {steps :5d } { abs ( norm ( psi ) - norm ( psi0 )) :.1e } {dE :.1e } {err :.3e } "
+ ( " " if prev is None else f " {np. log2 ( prev / err ) :.2f } " ) + f " {T * dt ** 2 * H3 / 12 :.3e } " )
# (b) 分割演算子 Fourier 法(Strang)。参照は連続の厳密解。
x = - L + h * np. arange ( N )
k = 2 * np.pi * np.fft. fftfreq ( N , d = h )
print ( " split-operator: steps | ||psi|| - 1 | error order " )
for steps in [ 25 , 50 , 100 , 200 , 400 ] :
half, kin = np. exp ( - 0.5 j * dt * V ), np. exp ( - 0.5 j * dt * k ** 2 )
psi = coherent ( x , 0.0 ). astype ( complex )
psi = half * np.fft. ifft ( kin * np.fft. fft ( half * psi ))
err = np. sqrt ( h ) * np.linalg. norm ( psi - coherent ( x , T ))
print ( f " {steps :5d } { abs ( np. sqrt ( h ) * np.linalg. norm ( psi ) - 1 ) :.1e } {err :.3e } "
+ ( "" if prev is None else f " {np. log2 ( prev / err ) :.2f } " ) )
Crank-Nicolson: steps | ||psi|| - 1 | |<H> - <H>_0| error order bound T dt^2 ||H^3 psi_0|| / 12
100 5.8e-15 1.4e-14 5.325e-04 5.329e-04
200 1.3e-15 1.6e-15 1.332e-04 2.00 1.332e-04
400 4.3e-15 4.1e-15 3.331e-05 2.00 3.331e-05
800 6.9e-15 1.6e-14 8.327e-06 2.00 8.327e-06
split-operator: steps | ||psi|| - 1 | error order
50 1.6e-15 2.853e-04 2.00
100 3.8e-15 7.131e-05 2.00
200 6.9e-15 1.783e-05 2.00
400 1.6e-14 4.457e-06 2.00
どちらもノルムは丸めの大きさで保存され、誤差の次数は 2 です。Crank–Nicolson 法の誤差は 定理 6.3 の上界とほぼ一致しています。補題 6.2 の不等式は x → 0 x \to 0 x → 0 で等号に近づき(x − 2 arctan ( x / 2 ) = x 3 / 12 + O ( x 5 ) x - 2\arctan(x/2) = x^3/12 + O(x^5) x − 2 arctan ( x /2 ) = x 3 /12 + O ( x 5 ) )、この例では ψ 0 \psi_0 ψ 0 の主な成分が Δ t μ k ≪ 1 \Delta t\mu_k \ll 1 Δ t μ k ≪ 1 の範囲にあるからです。(a) は時間の誤差だけを見ています。連続の解との差には、これに 3 点差分の空間の誤差 O ( h 2 ) O(h^2) O ( h 2 ) が加わります。(b) は N = 128 N = 128 N = 128 点で空間の誤差が 10 − 6 10^{-6} 1 0 − 6 より十分小さいので、連続の解との差がそのまま時間の誤差になっています。同じステップ数で比べると、分割演算子法の誤差は Crank–Nicolson 法の約 1 / 7 1/7 1/7 です(100 ステップで 7.1 × 10 − 5 7.1\times10^{-5} 7.1 × 1 0 − 5 と 5.3 × 10 − 4 5.3\times10^{-4} 5.3 × 1 0 − 4 )。
全空間の問題を計算するには、有限の区間で打ち切ります。打ち切りの誤差は、波動関数が箱の端に届くまでは小さく、届いた分だけ生じます。
次の命題は、箱の中だけで計算した解と真の解の差が、箱の内側と外側をつなぐ項の時間積分で抑えられることを示します。P P P は箱の中の成分だけを残す直交射影 、Q = I − P Q = I - P Q = I − P は箱の外の成分だけを残す射影です。
命題 8.1 (箱による切断の誤差 ) ✓
H H H を d d d 次のエルミート行列、P P P を直交射影(P = P ∗ = P 2 P = P^{*} = P^2 P = P ∗ = P 2 )、Q = I − P Q = I - P Q = I − P とし、H P = P H P H_P = PHP H P = P H P とおく。ψ ( t ) = e − i t H ψ 0 \psi(t) = e^{-itH}\psi_0 ψ ( t ) = e − i t H ψ 0 、φ ( t ) = e − i t H P P ψ 0 \varphi(t) = e^{-itH_P}P\psi_0 φ ( t ) = e − i t H P P ψ 0 とすると、t ≥ 0 t \ge 0 t ≥ 0 について
∥ P ψ ( t ) − φ ( t ) ∥ ≤ ∫ 0 t ∥ P H Q ψ ( s ) ∥ d s , ∥ ψ ( t ) − φ ( t ) ∥ ≤ ∥ Q ψ ( t ) ∥ + ∫ 0 t ∥ P H Q ψ ( s ) ∥ d s \|P\psi(t) - \varphi(t)\| \le \int_0^t\|PHQ\,\psi(s)\|\,ds,\qquad \|\psi(t) - \varphi(t)\| \le \|Q\psi(t)\| + \int_0^t\|PHQ\,\psi(s)\|\,ds ∥ P ψ ( t ) − φ ( t ) ∥ ≤ ∫ 0 t ∥ P H Q ψ ( s ) ∥ d s , ∥ ψ ( t ) − φ ( t ) ∥ ≤ ∥ Q ψ ( t ) ∥ + ∫ 0 t ∥ P H Q ψ ( s ) ∥ d s が成り立つ。H = 1 2 h 2 t r i d i a g ( − 1 , 2 , − 1 ) + d i a g ( V j ) H = \frac{1}{2h^2}\mathrm{tridiag}(-1,2,-1) + \mathrm{diag}(V_j) H = 2 h 2 1 tridiag ( − 1 , 2 , − 1 ) + diag ( V j ) (格子点 j = − J ′ , … , J ′ j = -J', \ldots, J' j = − J ′ , … , J ′ )で、P P P が ∣ j ∣ ≤ J |j| \le J ∣ j ∣ ≤ J (J < J ′ J \lt J' J < J ′ )の成分への射影のとき、
∥ P H Q ψ ( s ) ∥ = 1 2 h 2 ( ∣ ψ J + 1 ( s ) ∣ 2 + ∣ ψ − J − 1 ( s ) ∣ 2 ) 1 / 2 \|PHQ\,\psi(s)\| = \frac{1}{2h^2}\bigl(|\psi_{J+1}(s)|^2 + |\psi_{-J-1}(s)|^2\bigr)^{1/2} ∥ P H Q ψ ( s ) ∥ = 2 h 2 1 ( ∣ ψ J + 1 ( s ) ∣ 2 + ∣ ψ − J − 1 ( s ) ∣ 2 ) 1/2 である。
証明(命題 8.1) H P H_P H P はエルミートで、P H P = H P P = H P PH_P = H_PP = H_P P H P = H P P = H P なので e − i t H P e^{-itH_P} e − i t H P は P P P と可換で、φ ( t ) = P φ ( t ) \varphi(t) = P\varphi(t) φ ( t ) = P φ ( t ) です。w ( t ) = P ψ ( t ) − φ ( t ) w(t) = P\psi(t) - \varphi(t) w ( t ) = P ψ ( t ) − φ ( t ) とおくと、ψ ′ = − i H ψ \psi' = -iH\psi ψ ′ = − i H ψ 、φ ′ = − i H P φ \varphi' = -iH_P\varphi φ ′ = − i H P φ 、I = P + Q I = P + Q I = P + Q から
w ′ = − i P H ( P + Q ) ψ + i H P φ = − i H P ( P ψ − φ ) − i P H Q ψ = − i H P w − i P H Q ψ , w ( 0 ) = 0 w' = -iPH(P + Q)\psi + iH_P\varphi = -iH_P(P\psi - \varphi) - iPHQ\psi = -iH_Pw - iPHQ\psi,\qquad w(0) = 0 w ′ = − i P H ( P + Q ) ψ + i H P φ = − i H P ( P ψ − φ ) − i P H Q ψ = − i H P w − i P H Q ψ , w ( 0 ) = 0 です(P H P ψ = H P P ψ PHP\psi = H_PP\psi P H P ψ = H P P ψ を使った)。定数変化法(定理 3.1[線形微分方程式系] )から w ( t ) = − i ∫ 0 t e − i ( t − s ) H P P H Q ψ ( s ) d s w(t) = -i\int_0^te^{-i(t-s)H_P}PHQ\psi(s)\,ds w ( t ) = − i ∫ 0 t e − i ( t − s ) H P P H Q ψ ( s ) d s で、e − i ( t − s ) H P e^{-i(t-s)H_P} e − i ( t − s ) H P はユニタリ(補題 2.2 )なので最初の不等式が出ます。2 番目は ψ − φ = Q ψ + w \psi - \varphi = Q\psi + w ψ − φ = Q ψ + w と三角不等式です。
三重対角の場合、( H Q ψ ) j = ∑ l H j l ( Q ψ ) l (HQ\psi)_j = \sum_lH_{jl}(Q\psi)_l ( H Q ψ ) j = ∑ l H j l ( Q ψ ) l で、∣ j ∣ ≤ J |j| \le J ∣ j ∣ ≤ J かつ ∣ l ∣ > J |l| \gt J ∣ l ∣ > J で H j l ≠ 0 H_{jl} \ne 0 H j l = 0 となるのは ( j , l ) = ( J , J + 1 ) , ( − J , − J − 1 ) (j, l) = (J, J+1), (-J, -J-1) ( j , l ) = ( J , J + 1 ) , ( − J , − J − 1 ) だけで、その値は − 1 / ( 2 h 2 ) -1/(2h^2) − 1/ ( 2 h 2 ) です。よって P H Q ψ PHQ\psi P H Q ψ の 0 でない成分は j = ± J j = \pm J j = ± J の − ψ ± ( J + 1 ) / ( 2 h 2 ) -\psi_{\pm(J+1)}/(2h^2) − ψ ± ( J + 1 ) / ( 2 h 2 ) だけです。
∎
φ \varphi φ は、箱の中だけで(箱の外を 0 とする Dirichlet 境界条件で)計算した解です。命題は、その誤差が、箱のすぐ外の格子点での真の解の大きさ ∣ ψ ± ( J + 1 ) ( s ) ∣ |\psi_{\pm(J+1)}(s)| ∣ ψ ± ( J + 1 ) ( s ) ∣ の時間積分で抑えられることを言っています。波動関数の裾が時刻 t t t まで箱の端で小さければ、切断の誤差は小さいままです。逆に、波束が端に届くと、Dirichlet 境界でも周期境界でも反射や回り込みが起こり、誤差は O ( 1 ) O(1) O ( 1 ) になります。散乱の計算で端に吸収ポテンシャルを置くのはこのためです。
例 8.2 (自由な Gauss 波束と箱の大きさ )
自由粒子(V = 0 V = 0 V = 0 )の初期値 ψ 0 ( x ) = ( 2 π σ 2 ) − 1 / 4 e − x 2 / ( 4 σ 2 ) + i k 0 x \psi_0(x) = (2\pi\sigma^2)^{-1/4}e^{-x^2/(4\sigma^2) + ik_0x} ψ 0 ( x ) = ( 2 π σ 2 ) − 1/4 e − x 2 / ( 4 σ 2 ) + i k 0 x に対する解は、確率密度が平均 k 0 t k_0t k 0 t 、分散 σ t 2 = σ 2 + t 2 / ( 4 σ 2 ) \sigma_t^2 = \sigma^2 + t^2/(4\sigma^2) σ t 2 = σ 2 + t 2 / ( 4 σ 2 ) の正規分布になります(Fourier 変換で ψ ^ ( ξ , t ) = e − i t ξ 2 / 2 ψ ^ 0 ( ξ ) \hat\psi(\xi, t) = e^{-it\xi^2/2}\hat\psi_0(\xi) ψ ^ ( ξ , t ) = e − i t ξ 2 /2 ψ ^ 0 ( ξ ) とし、Gauss 関数の Fourier 変換 命題 3.1[ℝⁿ 上のフーリエ変換] を使う。ノルムの保存は 定理 4.1[ℝⁿ 上のフーリエ変換] )。L > ∣ k 0 ∣ t L \gt |k_0|t L > ∣ k 0 ∣ t のとき、箱 [ − L , L ] [-L, L] [ − L , L ] の外にある確率は、正規分布の裾の評価から e − ( L − ∣ k 0 ∣ t ) 2 / ( 2 σ t 2 ) e^{-(L - |k_0|t)^2/(2\sigma_t^2)} e − ( L − ∣ k 0 ∣ t ) 2 / ( 2 σ t 2 ) 以下です。σ = 1 \sigma = 1 σ = 1 、k 0 = 2 k_0 = 2 k 0 = 2 、t = 3 t = 3 t = 3 で、周期境界の箱で(運動項だけなので時間の誤差なしに)計算した解と厳密解の差を、裾の確率の上界の平方根と比べます。
# Python 3.9.6 / NumPy 2.0.2
sigma, k0, T, steps = 1.0 , 2.0 , 3.0 , 600
""" 自由粒子(H = -(1/2) d^2/dx^2)の Gauss 波束。t = 0 で幅 sigma、平均運動量 k0。 """
return ( 2 * np.pi * sigma ** 2 ) ** - 0.25 * np. sqrt ( sigma ** 2 / s ) * np. exp (
- (x - k0 * t) ** 2 / ( 4 * s) + 1 j * k0 * x - 0.5 j * k0 ** 2 * t )
print ( " L N error at t = 3 sqrt of the tail bound exp(-(L - k0 t)^2 / (2 sigma_t^2)) " )
for L in [ 8.0 , 10.0 , 12.0 , 16.0 , 20.0 ] :
x = - L + h * np. arange ( N )
k = 2 * np.pi * np.fft. fftfreq ( N , d = h )
kin = np. exp ( - 0.5 j * (T / steps) * k ** 2 )
psi = np.fft. ifft ( kin * np.fft. fft ( psi )) # V = 0 なので運動項だけ(時間の誤差はない)
err = np. sqrt ( h ) * np.linalg. norm ( psi - packet ( x , T ))
st2 = sigma ** 2 + T ** 2 / ( 4 * sigma ** 2 )
print ( f " {L :4.1f } {N :4d } {err :.3e } {np. exp ( - (L - k0 * T) ** 2 / ( 4 * st2) ) :.3e } " )
L N error at t = 3 sqrt of the tail bound exp(-(L - k0 t)^2 / (2 sigma_t^2))
8.0 128 3.758e-01 7.351e-01
10.0 160 1.203e-01 2.921e-01
12.0 192 2.222e-02 6.271e-02
16.0 256 1.326e-04 4.563e-04
20.0 320 7.256e-08 2.833e-07
時刻 3 で波束の中心は x = 6 x = 6 x = 6 、幅は σ 3 ≈ 1.8 \sigma_3 \approx 1.8 σ 3 ≈ 1.8 です。L = 8 L = 8 L = 8 では裾が端を越えて反対側から回り込み、誤差は 0.38 0.38 0.38 です。L = 20 L = 20 L = 20 では 10 − 7 10^{-7} 1 0 − 7 です。誤差は裾の確率の平方根(振幅の大きさ)と同じ減り方をしています。必要な箱の大きさは、初期の幅ではなく、最終時刻での位置 ∣ k 0 ∣ t |k_0|t ∣ k 0 ∣ t と広がった幅 σ t \sigma_t σ t で決まります。
演習 9.1 易
調和振動子 q ′ ′ = − ω 2 q q'' = -\omega^2q q ′′ = − ω 2 q に leapfrog 法を ω Δ t = 1 \omega\Delta t = 1 ω Δ t = 1 で使う。数値解の振動数 ω ~ \tilde\omega ω ~ と、厳密な 1 周期 2 π / ω 2\pi/\omega 2 π / ω のあいだに生じる位相の誤差を求めよ。
解答 命題 5.2 の 3 から ω ~ = 2 Δ t arcsin 1 2 = 2 Δ t ⋅ π 6 = π 3 ω ≈ 1.0472 ω \tilde\omega = \frac{2}{\Delta t}\arcsin\frac12 = \frac{2}{\Delta t}\cdot\frac\pi6 = \frac{\pi}{3}\omega \approx 1.0472\,\omega ω ~ = Δ t 2 arcsin 2 1 = Δ t 2 ⋅ 6 π = 3 π ω ≈ 1.0472 ω です。1 周期 t = 2 π / ω t = 2\pi/\omega t = 2 π / ω のあいだの位相の誤差は ( ω ~ − ω ) t = 2 π ( π / 3 − 1 ) ≈ 0.297 (\tilde\omega - \omega)t = 2\pi(\pi/3 - 1) \approx 0.297 ( ω ~ − ω ) t = 2 π ( π /3 − 1 ) ≈ 0.297 ラジアン(約 17 度)で、数値解は進みすぎます。ω Δ t = 1 \omega\Delta t = 1 ω Δ t = 1 は安定条件 ω Δ t < 2 \omega\Delta t \lt 2 ω Δ t < 2 を十分に満たしていますが、1 周期あたり 2 π ≈ 6.3 2\pi \approx 6.3 2 π ≈ 6.3 ステップしかなく、位相の精度は低いです。先頭項の近似 ω 2 Δ t 2 / 24 = 1 / 24 ≈ 0.0417 \omega^2\Delta t^2/24 = 1/24 \approx 0.0417 ω 2 Δ t 2 /24 = 1/24 ≈ 0.0417 は、正確な相対誤差 0.0472 0.0472 0.0472 より少し小さい値を与えます。
演習 9.2 標準
Crank–Nicolson 法について、ψ n + 1 − ψ n \psi^{n+1} - \psi^n ψ n + 1 − ψ n と ψ n + 1 + ψ n \psi^{n+1} + \psi^n ψ n + 1 + ψ n の内積を使って、固有分解を使わずに ∥ ψ n + 1 ∥ = ∥ ψ n ∥ \|\psi^{n+1}\| = \|\psi^n\| ∥ ψ n + 1 ∥ = ∥ ψ n ∥ を示せ。同じ方法で、陰的 Euler 法では ∥ ψ n + 1 ∥ 2 = ∥ ψ n ∥ 2 − ∥ ψ n + 1 − ψ n ∥ 2 \|\psi^{n+1}\|^2 = \|\psi^n\|^2 - \|\psi^{n+1} - \psi^n\|^2 ∥ ψ n + 1 ∥ 2 = ∥ ψ n ∥ 2 − ∥ ψ n + 1 − ψ n ∥ 2 となることを示せ。
解答 Crank–Nicolson 法の式は ψ n + 1 − ψ n = − i Δ t 2 H ( ψ n + 1 + ψ n ) \psi^{n+1} - \psi^n = -\frac{i\Delta t}{2}H(\psi^{n+1} + \psi^n) ψ n + 1 − ψ n = − 2 i Δ t H ( ψ n + 1 + ψ n ) です。ϕ = ψ n + 1 + ψ n \phi = \psi^{n+1} + \psi^n ϕ = ψ n + 1 + ψ n との内積をとると ⟨ ϕ , ψ n + 1 − ψ n ⟩ = − i Δ t 2 ⟨ ϕ , H ϕ ⟩ \langle\phi, \psi^{n+1} - \psi^n\rangle = -\frac{i\Delta t}{2}\langle\phi, H\phi\rangle ⟨ ϕ , ψ n + 1 − ψ n ⟩ = − 2 i Δ t ⟨ ϕ , H ϕ ⟩ で、H H H がエルミートなので ⟨ ϕ , H ϕ ⟩ \langle\phi, H\phi\rangle ⟨ ϕ , H ϕ ⟩ は実数、右辺は純虚数です。左辺の実部は R e ⟨ ψ n + 1 + ψ n , ψ n + 1 − ψ n ⟩ = ∥ ψ n + 1 ∥ 2 − ∥ ψ n ∥ 2 \mathrm{Re}\langle\psi^{n+1} + \psi^n, \psi^{n+1} - \psi^n\rangle = \|\psi^{n+1}\|^2 - \|\psi^n\|^2 Re ⟨ ψ n + 1 + ψ n , ψ n + 1 − ψ n ⟩ = ∥ ψ n + 1 ∥ 2 − ∥ ψ n ∥ 2 (交差項 ⟨ ψ n , ψ n + 1 ⟩ − ⟨ ψ n + 1 , ψ n ⟩ \langle\psi^n, \psi^{n+1}\rangle - \langle\psi^{n+1}, \psi^n\rangle ⟨ ψ n , ψ n + 1 ⟩ − ⟨ ψ n + 1 , ψ n ⟩ は純虚数)なので、これが 0 です。
陰的 Euler 法は ψ n + 1 − ψ n = − i Δ t H ψ n + 1 \psi^{n+1} - \psi^n = -i\Delta tH\psi^{n+1} ψ n + 1 − ψ n = − i Δ t H ψ n + 1 です。ψ n + 1 \psi^{n+1} ψ n + 1 との内積の実部をとると R e ⟨ ψ n + 1 , ψ n + 1 − ψ n ⟩ = 0 \mathrm{Re}\langle\psi^{n+1}, \psi^{n+1} - \psi^n\rangle = 0 Re ⟨ ψ n + 1 , ψ n + 1 − ψ n ⟩ = 0 です。恒等式 2 R e ⟨ a , a − b ⟩ = ∥ a ∥ 2 − ∥ b ∥ 2 + ∥ a − b ∥ 2 2\mathrm{Re}\langle a, a - b\rangle = \|a\|^2 - \|b\|^2 + \|a - b\|^2 2 Re ⟨ a , a − b ⟩ = ∥ a ∥ 2 − ∥ b ∥ 2 + ∥ a − b ∥ 2 から ∥ ψ n + 1 ∥ 2 − ∥ ψ n ∥ 2 + ∥ ψ n + 1 − ψ n ∥ 2 = 0 \|\psi^{n+1}\|^2 - \|\psi^n\|^2 + \|\psi^{n+1} - \psi^n\|^2 = 0 ∥ ψ n + 1 ∥ 2 − ∥ ψ n ∥ 2 + ∥ ψ n + 1 − ψ n ∥ 2 = 0 です。このエネルギー法の議論は H H H が変数係数でも、時間に依存しても通ります(命題 5.2[楕円型・放物型方程式の差分法] と同じ考え方です)。
演習 9.3 標準
T = − 1 2 d 2 d x 2 T = -\frac12\frac{d^2}{dx^2} T = − 2 1 d x 2 d 2 、V = 1 2 x 2 V = \frac12x^2 V = 2 1 x 2 について、滑らかな関数に作用する作用素として [ T , [ T , V ] ] = − 2 T [T,[T,V]] = -2T [ T , [ T , V ]] = − 2 T 、[ V , [ V , T ] ] = − 2 V [V,[V,T]] = -2V [ V , [ V , T ]] = − 2 V を示せ。これから、調和振動子の分割演算子法の誤差の定数が、作用素のノルムではなく状態のエネルギーの大きさで決まることを説明せよ。
解答 命題 7.6 の 3 で V ′ = x V' = x V ′ = x 、V ′ ′ = 1 V'' = 1 V ′′ = 1 とすると [ T , V ] ψ = − 1 2 ψ − x ψ ′ [T, V]\psi = -\frac12\psi - x\psi' [ T , V ] ψ = − 2 1 ψ − x ψ ′ 、[ V , [ V , T ] ] ψ = − x 2 ψ = − 2 V ψ [V,[V,T]]\psi = -x^2\psi = -2V\psi [ V , [ V , T ]] ψ = − x 2 ψ = − 2 V ψ です。次に [ T , x d d x ] [T, x\frac{d}{dx}] [ T , x d x d ] を計算します。d 2 d x 2 ( x ψ ′ ) = 2 ψ ′ ′ + x ψ ′ ′ ′ \frac{d^2}{dx^2}(x\psi') = 2\psi'' + x\psi''' d x 2 d 2 ( x ψ ′ ) = 2 ψ ′′ + x ψ ′′′ 、x d d x ψ ′ ′ = x ψ ′ ′ ′ x\frac{d}{dx}\psi'' = x\psi''' x d x d ψ ′′ = x ψ ′′′ なので [ d 2 d x 2 , x d d x ] = 2 d 2 d x 2 [\frac{d^2}{dx^2}, x\frac{d}{dx}] = 2\frac{d^2}{dx^2} [ d x 2 d 2 , x d x d ] = 2 d x 2 d 2 、[ T , x d d x ] = − d 2 d x 2 = 2 T [T, x\frac{d}{dx}] = -\frac{d^2}{dx^2} = 2T [ T , x d x d ] = − d x 2 d 2 = 2 T です。定数 − 1 2 -\frac12 − 2 1 との交換子は 0 なので [ T , [ T , V ] ] = − [ T , x d d x ] = − 2 T [T,[T,V]] = -[T, x\frac{d}{dx}] = -2T [ T , [ T , V ]] = − [ T , x d x d ] = − 2 T です。
したがって 定理 7.3 の 2 の形の評価で交換子を状態 ψ \psi ψ に作用させたものは ∥ T ψ ∥ \|T\psi\| ∥ T ψ ∥ と ∥ V ψ ∥ \|V\psi\| ∥ V ψ ∥ の大きさで、どちらも ψ \psi ψ の運動エネルギーと位置エネルギーの程度です。例 7.7 のコヒーレント状態ではこれらは 1 の程度なので、誤差は t τ 2 × O ( 1 ) t\tau^2 \times O(1) t τ 2 × O ( 1 ) で、格子を細かくしても増えません。行列 T N T_N T N のノルムは O ( N 2 ) O(N^2) O ( N 2 ) ですが、それは波動関数がほとんど成分をもたない高い波数から来ています。
演習 9.4 難
定理 4.1 の離散エネルギーを、命題 5.2 の ( q n , p n ) (q^n, p^n) ( q n , p n ) を使って E n = 1 2 ∥ p n + 1 / 2 ∥ 2 + 1 2 ⟨ q n + 1 , A q n ⟩ E^n = \frac12\|p^{n+1/2}\|^2 + \frac12\langle q^{n+1}, Aq^n\rangle E n = 2 1 ∥ p n + 1/2 ∥ 2 + 2 1 ⟨ q n + 1 , A q n ⟩ と書く。A A A が Δ t 2 λ d < 4 \Delta t^2\lambda_d \lt 4 Δ t 2 λ d < 4 を満たすとき、E ~ ( q , p ) = 1 2 ∥ p ∥ 2 + 1 2 ⟨ q , A ( I − Δ t 2 4 A ) q ⟩ \tilde E(q, p) = \frac12\|p\|^2 + \frac12\langle q, A(I - \frac{\Delta t^2}{4}A)q\rangle E ~ ( q , p ) = 2 1 ∥ p ∥ 2 + 2 1 ⟨ q , A ( I − 4 Δ t 2 A ) q ⟩ が Φ Δ t \Phi_{\Delta t} Φ Δ t の不変量であることを、A A A の固有分解で 命題 5.2 の 3 に帰着させて示せ。また E ~ ( q n , p n ) = E n \tilde E(q^n, p^n) = E^n E ~ ( q n , p n ) = E n を確かめよ。
解答 A A A の正規直交固有基底 q k q_k q k (固有値 λ k = ω k 2 \lambda_k = \omega_k^2 λ k = ω k 2 )で q = ∑ k a k q k q = \sum_ka_kq_k q = ∑ k a k q k 、p = ∑ k b k q k p = \sum_kb_kq_k p = ∑ k b k q k と展開すると、Φ Δ t \Phi_{\Delta t} Φ Δ t は A A A とスカラー倍だけからなるので、各 k k k の成分 ( a k , b k ) (a_k, b_k) ( a k , b k ) に、d = 1 d = 1 d = 1 、A = ω k 2 A = \omega_k^2 A = ω k 2 の場合の写像として作用します。E ~ = ∑ k 1 2 ( b k 2 + ω k 2 ( 1 − ω k 2 Δ t 2 / 4 ) a k 2 ) \tilde E = \sum_k\frac12\bigl(b_k^2 + \omega_k^2(1 - \omega_k^2\Delta t^2/4)a_k^2\bigr) E ~ = ∑ k 2 1 ( b k 2 + ω k 2 ( 1 − ω k 2 Δ t 2 /4 ) a k 2 ) で、各項は 命題 5.2 の 3 の不変量の 1 / 2 1/2 1/2 倍です(その証明の計算は ω Δ t < 2 \omega\Delta t \lt 2 ω Δ t < 2 を使っていないので、κ \kappa κ の符号によらず成り立ちます)。
E n E^n E n との一致: p n + 1 / 2 = p n − Δ t 2 A q n p^{n+1/2} = p^n - \frac{\Delta t}{2}Aq^n p n + 1/2 = p n − 2 Δ t A q n 、q n + 1 = q n + Δ t p n + 1 / 2 = ( I − Δ t 2 2 A ) q n + Δ t p n q^{n+1} = q^n + \Delta t\,p^{n+1/2} = (I - \frac{\Delta t^2}{2}A)q^n + \Delta t\,p^n q n + 1 = q n + Δ t p n + 1/2 = ( I − 2 Δ t 2 A ) q n + Δ t p n を代入すると
1 2 ∥ p n + 1 / 2 ∥ 2 = 1 2 ∥ p n ∥ 2 − Δ t 2 ⟨ p n , A q n ⟩ + Δ t 2 8 ∥ A q n ∥ 2 , 1 2 ⟨ q n + 1 , A q n ⟩ = 1 2 ⟨ q n , A q n ⟩ − Δ t 2 4 ∥ A q n ∥ 2 + Δ t 2 ⟨ p n , A q n ⟩ \tfrac12\|p^{n+1/2}\|^2 = \tfrac12\|p^n\|^2 - \tfrac{\Delta t}{2}\langle p^n, Aq^n\rangle + \tfrac{\Delta t^2}{8}\|Aq^n\|^2,\qquad \tfrac12\langle q^{n+1}, Aq^n\rangle = \tfrac12\langle q^n, Aq^n\rangle - \tfrac{\Delta t^2}{4}\|Aq^n\|^2 + \tfrac{\Delta t}{2}\langle p^n, Aq^n\rangle 2 1 ∥ p n + 1/2 ∥ 2 = 2 1 ∥ p n ∥ 2 − 2 Δ t ⟨ p n , A q n ⟩ + 8 Δ t 2 ∥ A q n ∥ 2 , 2 1 ⟨ q n + 1 , A q n ⟩ = 2 1 ⟨ q n , A q n ⟩ − 4 Δ t 2 ∥ A q n ∥ 2 + 2 Δ t ⟨ p n , A q n ⟩ で、和は 1 2 ∥ p n ∥ 2 + 1 2 ⟨ q n , A q n ⟩ − Δ t 2 8 ∥ A q n ∥ 2 = E ~ ( q n , p n ) \frac12\|p^n\|^2 + \frac12\langle q^n, Aq^n\rangle - \frac{\Delta t^2}{8}\|Aq^n\|^2 = \tilde E(q^n, p^n) 2 1 ∥ p n ∥ 2 + 2 1 ⟨ q n , A q n ⟩ − 8 Δ t 2 ∥ A q n ∥ 2 = E ~ ( q n , p n ) です。Δ t 2 λ d < 4 \Delta t^2\lambda_d \lt 4 Δ t 2 λ d < 4 は A ( I − Δ t 2 4 A ) A(I - \frac{\Delta t^2}{4}A) A ( I − 4 Δ t 2 A ) が正定値である条件で、定理 4.1 の 2 の正定値性の条件と同じです。離散エネルギーは、時刻 t n t_n t n の位置と運動量で書くと、ポテンシャルを O ( Δ t 2 ) O(\Delta t^2) O ( Δ t 2 ) だけ修正したエネルギーになっています。
E. Hairer, C. Lubich, G. Wanner, Geometric Numerical Integration: Structure-Preserving Algorithms for Ordinary Differential Equations , 2nd ed., Springer, 2006 — Störmer–Verlet 法、シンプレクティック性、後退誤差解析(第 IX 章)。
C. Lubich, From Quantum to Classical Molecular Dynamics: Reduced Models and Numerical Analysis , European Mathematical Society, 2008 — Schrödinger 方程式の時間積分(分割法・Krylov 法・Chebyshev 法)。
R. J. LeVeque, Finite Difference Methods for Ordinary and Partial Differential Equations , SIAM, 2007 — 波動方程式の差分法、数値分散。
T. Jahnke, C. Lubich, “Error bounds for exponential operator splittings”, BIT Numerical Mathematics 40 (2000), 735–744.
M. Hochbruck, C. Lubich, “On Krylov subspace approximations to the matrix exponential operator”, SIAM Journal on Numerical Analysis 34 (1997), 1911–1925.
G. Strang, “On the construction and comparison of difference schemes”, SIAM Journal on Numerical Analysis 5 (1968), 506–517.
執筆: Claude Code(Opus 5.5)、Claude Code(Sonnet 5.5)・監査 2 回(Claude Code)・最終 2026-10-12