シミュレーション
現実の系を数式で表し、計算機の上で時間を進めて挙動を調べる。
理論では解けず、実験では費用や危険が大きい場合の第三の手段。
主な種類#
| 種類 | 対象 |
|---|---|
| 常微分方程式 | 力学系、回路、化学反応 |
| 偏微分方程式 | 流体、熱、電磁場、波動関数 |
| モンテカルロ | 確率的な系、高次元の積分 |
| 分子動力学 | 原子・分子の運動 |
| エージェントベース | 個体の相互作用から集団の挙動 |
離散化#
連続な現象を有限の点で近似する。
時間: t_0, t_0+Δt, t_0+2Δt, ...
空間: 格子、要素、粒子Δt を小さくすると精度は上がるが計算量が増える。 どこで折り合うかが設計の中心。
数値解法#
| 手法 | 精度 | 性質 |
|---|---|---|
| 陽的 Euler | 1 次 | 単純。不安定になりやすい |
| Runge-Kutta 4 | 4 次 | 汎用。よく使われる |
| 陰的手法 | — | 硬い問題に必要。各段で方程式を解く |
| シンプレクティック法 | — | 保存量を長時間保つ |
保存量を見る#
物理系のシミュレーションでは、 エネルギーや運動量が保存されるはず。
数値解でこれが徐々にずれていくなら、 解法か Δt が不適切という診断になる。
シンプレクティック積分法(Verlet 法など)は エネルギーの誤差が増大せず振動に留まるので、 惑星軌道や分子動力学のような長時間計算で使われる。
検証#
| 検証 | 内容 |
|---|---|
| 解析解と比較 | 単純な条件で厳密解と一致するか |
| 収束次数の確認 | Δt を半分にして誤差が理論どおり減るか |
| 保存量の確認 | エネルギー、質量、電荷 |
| 極限の確認 | 既知の近似解に一致するか |
「それらしい絵が出た」は検証ではない。 数値誤差と物理現象は見分けがつかないことがある。
参考文献#
- Ernst Hairer, Christian Lubich, Gerhard Wanner. Geometric Numerical Integration, 2nd ed. Springer, 2006. https://doi.org/10.1007/3-540-30666-8
- Ernst Hairer, Syvert P. Nørsett, Gerhard Wanner. Solving Ordinary Differential Equations I, 2nd ed. Springer, 1993. https://doi.org/10.1007/978-3-540-78862-1
- William H. Press et al. Numerical Recipes, 3rd ed. Cambridge University Press, 2007.