動的システムシミュレーションとは、コンピュータプログラムを用いて動的システムの時間変動挙動をモデル化することです。システムは通常、常微分方程式または偏微分方程式で記述されます。シミュレーションを実行すると、状態方程式系を解いて、指定された期間における状態変数の挙動を求めます。方程式は数値積分法によって解かれ、状態変数の過渡的な挙動が生成されます。動的システムのシミュレーションでは、モデルシステムの状態変数の値が過去の状態値によって決定されるため、その値を予測します。この関係は、システムのモデルを作成することによって得られます。[ 1 ]
シミュレーションモデルは、連続時間数学モデルの離散時間近似から得られるのが一般的です。[ 2 ]数学モデル にギアのバックラッシュや急停止からの反発などの現実世界の制約が組み込まれると、方程式は非線形になります。そのため、方程式を解くには数値的手法が必要になります。[ 3 ]
数値シミュレーションは、時間間隔を順に進めながら、導関数の積分を数値積分によって計算することで行われます。時間間隔を固定する手法もあれば、許容誤差を維持するために自動的に時間間隔を縮小または拡大できる適応型時間間隔を用いる手法もあります。また、シミュレーションモデルの異なる部分で異なる時間間隔を用いる手法もあります。
シミュレーション対象となるシステムモデルには、差分方程式モデルと微分方程式モデルの2種類があります。古典物理学は通常、微分方程式モデルに基づいています。そのため、古いシミュレーションプログラムのほとんどは単に微分方程式ソルバーであり、差分方程式の解法は「手続き型プログラムセグメント」に委任しています。一部の動的システムは、暗黙的な形式でしか表現できない微分方程式でモデル化されます。これらの微分代数方程式系では、シミュレーションに特別な数学的手法が必要です。[ 2 ]
複雑なシステムの中には、初期条件に非常に敏感な挙動を示すものがあり、正しい値から大きな誤差が生じる可能性があります。このような誤差を回避するために、任意の精度まで値を計算できるアルゴリズムを見つける厳密なアプローチを適用することができます。例えば、定数eは、任意の精度まで定数を生成できるアルゴリズムが存在するため、計算可能な数値です。[ 4 ]
動的システムのコンピュータシミュレーションの最初の応用は航空宇宙産業でした。[ 5 ]動的シミュレーションの商業用途は多岐にわたり、原子力発電、蒸気タービン、6自由度車両モデリング、電気モーター、計量経済モデル、生物システム、ロボットアーム、質量-ばね-ダンパーシステム、油圧システム、人体を通る薬剤投与量の移行など、ほんの一例を挙げただけでもこれだけあります。これらのモデルは多くの場合、リアルタイムで実行して、実際のシステムに近い仮想応答を得ることができます。これは、プロセス制御やメカトロニクスシステムにおいて、自動制御システムを実際のシステムに接続する前に調整したり、実際のシステムを制御する前に人間を訓練したりするのに役立ちます。
シミュレーションはコンピュータゲームやアニメーションでも使用されており、物理エンジンを使用することで高速化できます。物理エンジンは、 3ds Max、Maya、Lightwaveなど、多くの強力なコンピュータグラフィックスソフトウェアプログラムで使用されている技術で、物理的な特性をシミュレートします。コンピュータアニメーションでは、髪の毛、布、液体、炎、粒子などを簡単にモデル化できますが、人間のアニメーターはより単純なオブジェクトをアニメーション化します。コンピュータベースの動的アニメーションは、1989年のピクサー短編映画「ニックナック」で、スノードーム内の偽の雪や水槽内の小石を動かすという非常にシンプルなレベルで初めて使用されました。