一段法
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/07/06 18:27 UTC 版)
「常微分方程式の数値解法」の記事における「一段法」の解説
区間 [ t 0 , t ] {\displaystyle [t_{0},t]} の厳密解を y ( t ) {\displaystyle y(t)} とする。一段法として知られるクラスの数値解法では、離散化した時刻 t i = t 0 + i h {\displaystyle t_{i}=t_{0}+ih} ( h = ( t − t 0 ) / n {\displaystyle h=(t-t_{0})/n} ) での厳密解 y ( t i ) {\displaystyle y(t_{i})} の近似値 η i {\displaystyle \eta _{i}} を η i + 1 = η i + h Φ ( t i , η i ; h ) {\displaystyle \eta _{i+1}=\eta _{i}+h\Phi (t_{i},\eta _{i};h)} という漸化式によって定める。関数 Φ {\displaystyle \Phi } の選択が数値積分スキームを選択することに対応する。離散化した時刻の差分 h = t i + 1 − t i {\displaystyle h=t_{i+1}-t_{i}} を刻み幅あるいはステップサイズと呼ぶ。なお、ここでは時間ステップ h = t i + 1 − t i {\displaystyle h=t_{i+1}-t_{i}} は一定としたが、これを動的に決定する適応刻み(英語版)という手法もある。 厳密解 y ( t ) {\displaystyle y(t)} から差分商 Δ ( t , η ; h ) = { y ( t + h ) − η h h ≠ 0 f ( t , η ) h = 0 {\displaystyle \Delta (t,\eta ;h)={\begin{cases}{\frac {y(t+h)-\eta }{h}}&h\neq 0\\f(t,\eta )&h=0\end{cases}}} を導入するとき、数値積分スキーム Φ {\displaystyle \Phi } の局所離散化誤差 (local discretization error) は Δ ( t , η ; h ) − Φ ( t , η ; h ) {\displaystyle \Delta (t,\eta ;h)-\Phi (t,\eta ;h)} により定義される。整合性のために h → 0 {\displaystyle h\to 0} の極限で局所離散化誤差(厳密にはその上限)は 0 に収束することが要求される。さらに、この極限で局所離散化誤差が Δ ( t , η ; h ) − Φ ( t , η ; h ) = O ( h p ) {\displaystyle \Delta (t,\eta ;h)-\Phi (t,\eta ;h)=O(h^{p})} を満足するとき、この積分スキーム Φ {\displaystyle \Phi } は p {\displaystyle p} 次精度であるという。 一方、 t {\displaystyle t} を固定して n → ∞ {\displaystyle n\to \infty } とするとき、大域離散化誤差 (global discretization error) e ( t ; h n ) = η ( t ; h n ) − y ( t ) , h n = t − t 0 n {\displaystyle e(t;h_{n})=\eta (t;h_{n})-y(t),\ \ h_{n}={\frac {t-t_{0}}{n}}} が 0 に収束するならば、その積分スキームは収束するという。 p {\displaystyle p} 次精度 ( p > 0 {\displaystyle p>0} ) の1段法を十分に滑らかな関数 f {\displaystyle f} に適用するとき、そのスキームは収束し大域離散化誤差は e ( t ; h n ) = O ( h n p ) {\displaystyle e(t;h_{n})=O(h_{n}^{p})} のように振る舞うことが保証されている、すなわち大域離散化誤差のオーダーは局所離散化誤差のオーダーに等しい。この結果はすべての整合的な一段法が h → 0 {\displaystyle h\to 0} で漸近的に安定であることを意味するものの、ただし現実的に可能な h {\displaystyle h} で1段法が安定であることは必ずしも保証されない(#安定性節を参照)。 オイラー法、ホイン法、古典的ルンゲ=クッタ法 (RK4) の相対誤差の比較。初期値 y ( 0 ) = 0 {\displaystyle y(0)=0} のもとでの常微分方程式 d y d t = cos ( y ) {\displaystyle {\frac {dy}{dt}}=\cos(y)} の数値解の t = 1 {\displaystyle t=1} での値をステップサイズの関数として対数プロットした。各手法がそれぞれ1次精度、2次精度、4次精度であることに対応して、傾き 1, 2, 4 で誤差が減少している。 積分スキーム Φ {\displaystyle \Phi } としては以下のものが知られている。 オイラー法: Φ ( t , η ; h ) = f ( t , η ) {\displaystyle \Phi (t,\eta ;h)=f(t,\eta )} とするもの。これは1次精度のスキームである。 ホイン法(英語版): Φ ( t , η ; h ) = [ f ( t , η ) + f ( t + h , η + h f ( t , η ) ) ] / 2 {\displaystyle \Phi (t,\eta ;h)=[f(t,\eta )+f(t+h,\eta +hf(t,\eta ))]/2} とするもの。これは2次精度のスキームであり、関数 f {\displaystyle f} の評価を2回必要とする。 古典的ルンゲ=クッタ法: これは4次精度のスキームであり、関数 f {\displaystyle f} の評価を4回必要とする。 このうち古典的ルンゲ=クッタ法は適用可能範囲の広さやプログラミングの容易さのために広く用いられている(ただし Press らは著書において計算速度の観点から古典的ルンゲ=クッタ法に否定的に言及している)。 「ルンゲ=クッタ法」も参照
※この「一段法」の解説は、「常微分方程式の数値解法」の解説の一部です。
「一段法」を含む「常微分方程式の数値解法」の記事については、「常微分方程式の数値解法」の概要を参照ください。
- 一段法のページへのリンク