シミュレーション

シミュレーション

執筆済 科学計算

現実の系を数式で表し、計算機の上で時間を進めて挙動を調べる。

理論では解けず、実験では費用や危険が大きい場合の第三の手段。

主な種類#

種類 対象
常微分方程式 力学系、回路、化学反応
偏微分方程式 流体、熱、電磁場、波動関数
モンテカルロ 確率的な系、高次元の積分
分子動力学 原子・分子の運動
エージェントベース 個体の相互作用から集団の挙動

離散化#

連続な現象を有限の点で近似する。

時間: t_0, t_0+Δt, t_0+2Δt, ...
空間: 格子、要素、粒子

Δt を小さくすると精度は上がるが計算量が増える。 どこで折り合うかが設計の中心。

数値解法#

手法 精度 性質
陽的 Euler 1 次 単純。不安定になりやすい
Runge-Kutta 4 4 次 汎用。よく使われる
陰的手法 硬い問題に必要。各段で方程式を解く
シンプレクティック法 保存量を長時間保つ

保存量を見る#

物理系のシミュレーションでは、 エネルギーや運動量が保存されるはず。

数値解でこれが徐々にずれていくなら、 解法か Δt が不適切という診断になる。

シンプレクティック積分法(Verlet 法など)は エネルギーの誤差が増大せず振動に留まるので、 惑星軌道や分子動力学のような長時間計算で使われる。

検証#

検証 内容
解析解と比較 単純な条件で厳密解と一致するか
収束次数の確認 Δt を半分にして誤差が理論どおり減るか
保存量の確認 エネルギー、質量、電荷
極限の確認 既知の近似解に一致するか

「それらしい絵が出た」は検証ではない。 数値誤差と物理現象は見分けがつかないことがある。

参考文献#

ノート一覧を閉じる