常微分方程式の数値解法

常微分方程式の数値解法 (じょうびぶんほうていしきのすうちかいほう、) は、数値解析において常微分方程式を数値的に解く技術の総称である。
数値解法の必要性.
これまで様々な自然現象 (物理現象など) を記述するために多くの常微分方程式が作られ、多くの数学者たちがその解法を探求してきたが、フックス型微分方程式などを除いて、手計算だけで厳密に解ける常微分方程式は多くない。そのため多くの研究者たちが常微分方程式を数値的に解く技術について研究をしてきた。最も標準的な手法はルンゲ・クッタ法であり、MATLABにはode45として搭載されている。しかしこれは万能なソルバーとは言えない。例えばパンルヴェ方程式やリッカチ方程式などは非線形性によって精度の良い計算ができず、数値実験結果だけを見ていると間違った結論 (幻影解) にたどり着く危険がある。、
などの新しい解法に関する研究が進められている。
初期値問題.
formula_1 個の変数 formula_2 に関する1階常微分方程式、すなわち formula_3 （またはその開集合）で定義されたベクトル値連続関数 formula_4 により定まる次の方程式
について考える。その初期値問題 (initial-value problem) とは、初期条件 formula_5 を満たす関数 formula_6 を求めることである。関数 formula_7 が第2引数についてリプシッツ連続であるとき、すなわち定数 formula_8 が存在し
（formula_9 は formula_10 のノルム）を満たすとき、その初期値問題には解が一意に存在する（ピカール・リンデレフの定理）。本節では常微分方程式の初期値問題を数値的に解くことについて議論する。
初期値問題の例.
例として、電気回路の研究から導かれたファン・デル・ポール振動子について考える。その運動方程式は
であり、これは2階の常微分方程式であるものの、formula_11 とおくと
という上述の形に帰着できる。
一段法.
区間 formula_12 の厳密解を formula_6 とする。一段法として知られるクラスの数値解法では、離散化した時刻 formula_14 (formula_15) での厳密解 formula_16 の近似値 formula_17 を
という漸化式によって定める。関数 formula_18 の選択が数値積分スキームを選択することに対応する。離散化した時刻の差分 formula_19 を刻み幅あるいはステップサイズと呼ぶ。なお、ここでは時間ステップ formula_19 は一定としたが、これを動的に決定するという手法もある。
厳密解 formula_6 から差分商
を導入するとき、数値積分スキーム formula_18 の局所離散化誤差 (local discretization error) は
により定義される。整合性のために formula_23 の極限で局所離散化誤差（厳密にはその上限）は 0 に収束することが要求される。さらに、この極限で局所離散化誤差が
formula_24
を満足するとき、この積分スキーム formula_18 は formula_26 次精度であるという。
一方、formula_27 を固定して formula_28 とするとき、大域離散化誤差 (global discretization error)
が 0 に収束するならば、その積分スキームは収束するという。formula_26 次精度 (formula_30) の1段法を十分に滑らかな関数 formula_7 に適用するとき、そのスキームは収束し大域離散化誤差は
のように振る舞うことが保証されている、すなわち大域離散化誤差のオーダーは局所離散化誤差のオーダーに等しい。この結果はすべての整合的な一段法が formula_23 で漸近的に安定であることを意味するものの、ただし現実的に可能な formula_33 で1段法が安定であることは必ずしも保証されない（#安定性節を参照）。
積分スキーム formula_18 としては以下のものが知られている。
このうち古典的ルンゲ＝クッタ法は適用可能範囲の広さやプログラミングの容易さのために広く用いられている（ただし Press らは著書において計算速度の観点から古典的ルンゲ＝クッタ法に否定的に言及している）。
多段法.
一段法は formula_39 の値を formula_17 だけから定めるものであったが、より多くのステップでの値 formula_41, ..., formula_42 を使う積分スキームは多段法 (multistep method) と呼ばれる。この場合、最初の formula_43, ..., formula_44 はこのスキームでは定めることができず、1段法などの他の方法を用いる必要がある。多段法としてはアダムス・バッシュフォース法や、それを応用する予測子修正子法などがある（これはどちらも formula_39 が formula_42, ..., formula_47 の線型関数として定まるため、線型多段法と呼ばれる）。
安定性.
数値積分スキームの安定性はしばしばそれを初期値問題
（formula_48 は複素数の定数）に適用することで定量化される。問題のスキームを一定の刻み幅 formula_33 で適用することで得られる数列 formula_50 について、それが極限 formula_28 で 0 に収束するような formula_52 がなす複素平面上の領域を絶対安定領域と呼ぶ。もとの初期値問題の厳密解は formula_53 であり、これは formula_54 のとき formula_55 で 0 に収束する。そこである積分スキームの絶対安定領域が左半平面を含むとき、そのスキームはA-安定 (A-stable) であるという。
関数 formula_56 が大きな値を取り積分スキームによっては極端に時間刻み幅 formula_33 を小さくする必要がある場合、その常微分方程式は硬い方程式と呼ばれる。この場合には十分に安定なスキームを用いる必要が生じる。これはしばしば formula_58 を陰関数的に formula_59 等から定める陰解法によって実現される。
幾何学的解法.
解析対象となる微分方程式が何らかの特別な性質を持つとき、汎用の数値積分法ではなく、その性質を尊重するように構成された数値解法を用いることがあり、そのような手法は構造保存型解法または幾何学的数値解法と呼ばれる。例えば古典力学（ハミルトン力学）において時間発展はシンプレクティック写像であり、エネルギー（ハミルトニアン）等の保存量が存在する。この場合にはシンプレクティック数値積分法というハミルトン系にのみ適用可能な数値解法が存在し、良好な性質を持つことが知られている。
境界値問題.
常微分方程式
の解 formula_60 で, formula_61 に対する境界条件
を満足するものを求める問題を境界値問題 (boundary-value problem) と呼ぶ。初期値問題と異なり、境界値問題では複数の解が存在すること、あるいは解が存在しないことがあり得る。また、スツルム＝リウヴィル型微分方程式のように常微分方程式にパラメータ formula_48 が含まれ、境界値問題に解が存在するようにパラメータ formula_48 を同時に定める問題もある。
これらの問題を数値的に解く最も単純な方法が狙い撃ち法 (shooting method) である。一方の端点（例えば formula_64）において初期条件 formula_65 を適当に定めて微分方程式をもう一方の端点 formula_66 まで解き、境界条件を満たすように未定の初期条件（および固有値）を適切に選ぶ。これはニュートン法などの関数の根を求めるアルゴリズム（これはしばしば逐次反復を伴う）を常微分方程式の数値解法と組み合わせることを意味する。ただし初期条件によっては区間 formula_67 全体で定義された解が存在しないことがあり、そのために改良された手法がある。あるいは有限要素法 (finite element method) などの手法も用いられる。
解の存在検証.
高精度に解く技術が追求されている一方で、「計算機で解の存在を検証する」という研究もおこなわれている。このような研究が必要となるのは、近似解が求まったとしてもそれが幻影解である危険性があるからである。偏微分方程式ではすでに幻影解が報告されているので、常微分方程式でも警戒が必要である。偏微分方程式の時と同様に関数解析学的な手法も考えられるが、関数解析学に頼らない手法 (例えば狙い撃ち法、スペクトル法やアフィン演算など) に基づく研究が主流であり、欧米などの海外のみならず日本国内でも研究されている。また、爆発解 () に特化した精度保証付き解法も探求されている。