明示的なルンゲ=クッタ法
📂数値解析明示的なルンゲ=クッタ法
概要
微分方程式ソルバー、ルンゲ=クッタ法を紹介する。よく使われる 4次ルンゲ=クッタ法 RK4についての詳しい説明は、別記事にて発表されている。
ビルドアップ
次のように与えられる常微分方程式を考える。yはtに対する函数であり、′はtに対する微分を意味する。
y′=f(t,y),t≥t0,y(t0)=y0
これをtnからtn+1=tn+hまで積分すると(混乱を避けるため積分変数をtの代わりにτにしよう)、
∫tntn+1y′dτ=∫tntn+1f(τ,y)dτ
左辺を整理してτ≡tn+hτに置き換えると次の式を得る。
[y(τ)]tntn+1=∫tntn+1f(τ,y)dτ
⇓y(tn+1)=y(tn)+∫tntn+1f(τ,y)dτ=y(tn)+h∫01f(tn+hτ,y(tn+hτ))dτ
今、後置きの積分を和として近似して次の式を得る。
y(tn+1)=y(tn)+hj=1∑νbjf(tn+cjh,y(tn+cjh)),n=0,1,2,⋯(1)
これは、yn=y(tn)を知っているとき、yn+1=y(tn+1)を知ることができる近似式である。もちろん、右辺には未知数であるy(tn+cjh)が含まれているので、これも近似する必要がある。式が複雑なので、次のようにj=1,2,…,νについて表記しよう。
ξj=y(tn+cjh)
まずc1=0としておこう。するとξ1=ynなので、既知の値である。ここで多段階法を適用してξjたちを次のように逐次的に近似するとしよう。
ξ2ξ3ξν=y(tn+c2h)=yn+ha2,1f(tn+c1h,yn+c1h)=yn+ha2,1f(tn,yn)=yn+ha2,1f(tn,ξ1)=y(tn+c3h)=yn+ha3,1f(tn+c1h,yn+c1h)+ha3,2f(tn+c2h,yn+c2h)=yn+ha3,1f(tn,ξ1)+ha3,2f(tn+c2h,ξ2)⋮=yn+hj=1∑n−1aν,jf(tn+cjh,ξj)(∵c1=0)(∵ξ1=yn)
これで(1)の右辺の値yn、f(tn,ξ1)、f(tn+c2h,ξ2)、…、f(tn+cj−1h,ξj−1)全てを求めたことになる。明示的ルンゲ=クッタexplicit Runge-Kutta, ERKメソッドとは、yn+1の値をyn、f(tn,ξ1)、f(tn+c2h,ξ2)、…、f(tn+cj−1h,ξj−1)の線形結合として近似して得る方法を言う。
定義
明示的ルンゲ=クッタ法とは、与えられたynに対してyn+1を次のように近似する方法である。
yn+1=yn+hj=1∑νbjf(tn+cjh,ξj),n=0,1,2,⋯(2)
ここで、各ξjは、
ξ1ξ2ξ3⋮ξν=yn=yn+ha2,1f(tn,ξ1)=yn+ha3,1f(tn,ξ1)+ha3,2f(tn+c2h,ξ2)=yn+hi=1∑ν−1aν,if(tn+cih,ξi)
この時ν×ν 行列 A=[aj,i]をルンゲ=クッタ行列RK matrixと言う。式の中で空いている成分は0である。
A=[aj,i]=a2,1a3,1⋮aν,1a3,2aν,2⋯aν,ν−1
また、以下のbとcをそれぞれRKウェイトRK weights、RKノードRK nodesと言う。
b=b1b2⋮bνandc=c1c2⋮cν
また、(2)が**ν ステージ**ν stagesを持つと言い、このような方法をνステージ(またはν次)ルンゲ=クッタ法と言う。
説明
定義により、RK行列は明らかに下三角行列である。
上記の方法に従って、ξjはξ1からξνまで逐次的に計算することができる。結果として(2)を計算でき、yn+1が得られる。これを繰り返して、次のステップでのyの値yn+2、yn+3、…を求めることができる。
RK法では、係数aj,i、bj、cjは求めるものではなく、選んで使用するものである。係数はcAbtのような形で表記され、これをRKテーブルRK tableauxと言う。よく使われるRK4のRKテーブルは次のようである。
021211002100612103113161
参考