Runge - Kutta 型公式の計算例
本レジュメでは,「ホインの3次公式」と「古典的Runge - Kutta公式」1 )の2つの スキームを取り上げ,振動方程式を例にそれぞれのスキームの振る舞いを考察する.
振動方程式は次式のように表される.
dU
dt =iωU. (1)
ただし,初期値を
U(0) = 1 (2)
とし,ω =πとする. 計算時間は0≤t≤ 10である. なお, この条件で式(1)の解析 解を描画すると,図1のようになる.
図1: (1)の解析解. ω =π, U(0) = 1であり,0≤t≤10とした.
1 )それぞれの公式の詳細は「時間差分スキーム(5)」を参照のこと.
時間差分スキーム Runge - Kutta型公式の計算例 2
ホインの 3 次公式
ホインの 3次公式は「時間差分スキーム(5)」の式(9)で与えられる. 「時間差分
スキーム(5)」の式(9)を式(1)に当てはめ,実部と虚部に分けて書き下すと,
k1r =−∆tωUin, k1i = ∆tωUrn, k2r =−∆tω
Uin+ 1 3k1i
, k2i = ∆tω
Urn+ 1 3k1r
, k3r =−∆tω
Uin+ 2 3k2i
, k3i = ∆tω
Urn+ 2 3k2r
, Urn+1 =Urn+1
4(k1r+ 3k3r), Uin+1 =Uin+1
4(k1i+ 3k3i)
(3)
となる. ここで, 下つき添字のr, iはそれぞれ実部と虚部を表している. ∆tは時間 間隔である.
∆t = 0.01とし,実際に計算した結果を 図2に示す. 各時刻における解析解と数値 解の差の絶対値,すなわち絶対誤差を図示したものが 図3である.
荻原(2010)によれば,ホインの3次公式の増幅率λは,
λ= r
1 + 1
36(ω∆t)6− 1
12(ω∆t)4 (4)
である. いま,ω =πなのでλ≤1となるためには,∆tを−√
3/π≤∆t≤√ 3/πの 範囲でとる必要がある2 ).
例えば,0≤t≤4の範囲で,∆t= 0.5とした場合(図4)と∆t= 0.6とした場合(図 5)を比べると,増幅の度合いをみてとることができる.
図2: ホインの3次公式を用いて解いた式(1)の数値解. ω=π, U(0) = 1,∆t = 0.01, 0≤t≤10である.
図3: ホインの3次公式を用いて式(1)を解いた場合の絶対誤差.
時間差分スキーム Runge - Kutta型公式の計算例 4
図 4: ホインの 3次公式において, ∆t = 0.5 として式 (1)を解いた場合. ただし, 0≤t≤4である.
図 5: ホインの 3次公式において, ∆t = 0.6 として式 (1)を解いた場合. ただし,
古典的 Runge - Kutta 公式
古典的Runge - Kutta公式は「時間差分スキーム(5)」の式(11)で与えられる.「時
間差分スキーム(5)」の式(11)を式(1)に当てはめ,実部と虚部に分けて書き下すと,
k1r =−∆tωUin, k1i = ∆tωUrn, k2r =−∆tω
Uin+ 1 2k1i
, k2i = ∆tω
Urn+1 2k1r
, k3r =−∆tω
Uin+ 1 2k2i
, k3i = ∆tω
Urn+1 2k2r
, k4r =−∆tω(Uin+k3i), k4i = ∆tω(Urn+k3r), Urn+1 =Urn+1
6(k1r+ 2k2r+ 2k3r+k4r), Uin+1 =Uin+1
6(k1i+ 2k2i+ 2k3i+k4i)
(5)
となる. ∆t = 0.01とし,実際に計算した結果を 図6に示す. 各時刻における絶対 誤差を図示したものが 図7である.
荻原(2010)によれば,古典的Runge - Kutta公式の増幅率λは,
λ= r
1 + 1
576(ω∆t)8− 1
72(ω∆t)6 (6)
である. いま, ω = π であるから, λ ≤ 1 となるためには∆t を −2√
2/π ≤ ∆t ≤ 2√
2/πでとる必要がある3 ).
例えば,0≤t≤4の範囲で,∆t= 0.9とした場合(図8)と∆t= 1.0とした場合(図 9)を比べると,増幅の度合いを見てとることができる.
3 )2√
2/πの値はおよそ0.90である.
時間差分スキーム Runge - Kutta型公式の計算例 6
図6: 古典的Runge - Kutta公式を用いて解いた式(1)の解. ω=π, U(0) = 1,∆t= 0.01,0≤t ≤10である.
図7:古典的Runge - Kutta公式を用いて式(1)を解いた場合の絶対誤差.
図 8: 古典的Runge - Kutta公式において,∆t = 0.9として式(1)を解いた場合. た だし0≤t≤4である.
図 9: 古典的Runge - Kutta公式において,∆t = 1.0として式(1)を解いた場合. た
だし0≤t≤4である.
時間差分スキーム Runge - Kutta型公式の計算例 8
参考文献
• 荻原 弘尭, 2010 スペクトル法を用いた数値計算 一次元線形移流方程式の場合
• 伊理 正夫,藤野 和建, 1985 数値計算の常識,共立出版株式会社, 174pp
• 石岡 圭一, 2004 スペクトル法による数値計算入門,東京大学出版, 63–66