ルンゲ゠クッタ法
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/07/18 03:25 UTC 版)
「ルンゲ=クッタ法」の記事における「ルンゲ゠クッタ法」の解説
前述の RK4 の一般化として、以下の形式を持つ s 段のルンゲ゠クッタ法を構成することができる。整数 s をそのルンゲ゠クッタ法の段数 (stage) という。 y n + 1 = y n + h ∑ i = 1 s b i k i , {\displaystyle y_{n+1}=y_{n}+h\sum _{i=1}^{s}b_{i}k_{i},} 但し、 k i = f ( t n + h c i , y n + h ∑ j = 1 s a i j k j ) , i = 1 , … , s . {\displaystyle k_{i}=f\left(t_{n}+hc_{i},y_{n}+h\sum _{j=1}^{s}a_{ij}k_{j}\right),\quad i=1,\ldots ,s.} (文献によって、等価であるが上と異なる定義の仕方をしているものがあることに注意する)。 具体的なルンゲ゠クッタ公式は、解ができるだけ高い精度持つように適切に選ばれた係数 aij (ルンゲ゠クッタ行列)、bi (重み)、cj (節点) で指定される ( i , j ≤ s {\displaystyle i,j\leq s} )。特に i ≤ j {\displaystyle i\leq j} に対して a i j = 0 {\displaystyle a_{ij}=0} を満たす方法が広く用いられ、総称して 陽的ルンゲ゠クッタ法 (ERK、英: explicit Runge–Kutta methods) と呼ぶ。そうでないものを 陰的ルンゲ゠クッタ法 (IRK、英: implicit Runge–Kutta methods) と呼ぶ。 近似値 yn を yn+1 から計算するときに発生する誤差の大きさが O ( h p + 1 ) {\displaystyle O(h^{p+1})} のとき、そのルンゲ゠クッタ公式は p 次精度を持つといい、p を次数 (または位数) と呼ぶ。p 次のルンゲ゠クッタ公式は、誤差の大きさの条件に誤差の表式を代入し、係数の条件を求めることによって得られる。例えば、2段の陽的方法が2次精度を持つための係数に対する条件は、 b 1 + b 2 = 1 {\displaystyle b_{1}+b_{2}=1} , b 2 c 2 = 1 / 2 {\displaystyle b_{2}c_{2}=1/2} , かつ b 2 a 21 = 1 / 2 {\displaystyle b_{2}a_{21}=1/2} である。この条件を満たす範囲内で様々な方法を考え得る。 これらの係数を分かりやすく表記する方法として、以下のような形式のブッチャー配列 (Butcher tableau) が知られている: c 1 a 11 a 12 ⋯ a 1 s c 2 a 21 a 22 ⋯ a 2 s ⋮ ⋮ ⋮ ⋱ ⋮ c s a s 1 a s 2 ⋯ a s s b 1 b 2 ⋯ b s = c A b T {\displaystyle {\begin{aligned}{\begin{array}{c|ccccc}c_{1}&a_{11}&a_{12}&\cdots &a_{1s}\\c_{2}&a_{21}&a_{22}&\cdots &a_{2s}\\\vdots &\vdots &\vdots &\ddots &\vdots \\c_{s}&a_{s1}&a_{s2}&\cdots &a_{ss}\\\hline &b_{1}&b_{2}&\cdots &b_{s}\end{array}}&={\begin{array}{c|c}\mathbf {c} &A\\\hline &\mathbf {b} ^{\mathrm {T} }\end{array}}\end{aligned}}} 実際には、それぞれのルンゲ゠クッタ法について各要素に具体的な値を入れて用いる。陽的な方法ではルンゲ゠クッタ行列の上三角成分は常に 0 になるので表記を省略する。例えば RK4 はブッチャー配列を用いて以下のように表現される。 0 1 / 2 1 / 2 1 / 2 0 1 / 2 1 0 0 1 1 / 6 1 / 3 1 / 3 1 / 6 {\displaystyle {\begin{aligned}{\begin{array}{c|ccccc}0&\\1/2&1/2\\1/2&0&1/2\\1&0&0&1\\\hline &1/6&1/3&1/3&1/6\end{array}}\end{aligned}}} ルンゲ゠クッタ法が一貫しているためには、次の条件が満たされている必要がある。 ∑ j = 1 s a i j = c i , i = 1 , … , s . {\displaystyle \sum _{j=1}^{s}a_{ij}=c_{i},\;i=1,\ldots ,s.}
※この「ルンゲ゠クッタ法」の解説は、「ルンゲ=クッタ法」の解説の一部です。
「ルンゲ゠クッタ法」を含む「ルンゲ=クッタ法」の記事については、「ルンゲ=クッタ法」の概要を参照ください。
- ルンゲ゠クッタ法のページへのリンク