

コンピュータシミュレーションとは、現実世界または物理システムの挙動や結果を表すように設計された数学モデルをコンピュータ上で実行することです。一部の数学モデルの信頼性は、その結果を予測しようとしている現実世界の成果と比較することによって判断できます。コンピュータシミュレーションは、物理学(計算物理学)、天体物理学、気候学、化学、生物学、製造業における多くの自然システム、および経済学、心理学、社会科学、医療、工学における人間システムの数学的モデリングのための有用なツールとなっています。システムのシミュレーションは、システムのモデルを実行することとして表されます。これは、新しい技術を探求して新たな洞察を得たり、解析的解法では複雑すぎるシステムの性能を推定したりするために使用できます。[ 1 ]
コンピュータシミュレーションは、小型デバイスでほぼ瞬時に実行される小規模なプログラム、またはネットワークベースのコンピュータグループで数時間または数日かけて実行される大規模なプログラムのいずれかを実行することによって実現されます。コンピュータシミュレーションによってシミュレートされるイベントの規模は、従来の紙と鉛筆による数学的モデリングを使用して可能であったもの(あるいは想像できたもの)をはるかに超えています。1997年には、ある勢力が別の勢力に侵攻する砂漠戦のシミュレーションで、国防総省高性能コンピュータ近代化プログラムの複数のスーパーコンピュータを使用して、クウェート周辺の模擬地形上で66,239台の戦車、トラック、その他の車両をモデル化しました。[ 2 ] 他の例としては、10億個の原子からなる材料変形モデル、[ 3 ] 2005年に作成されたすべての生物の複雑なタンパク質生成オルガネラであるリボソームの264万個の原子からなるモデル、 [ 4 ] 2012年に作成されたマイコプラズマ・ジェニタリウム のライフサイクルの完全なシミュレーションなどがあります。また、スイスのEPFLで2005年5月に開始されたBlue Brainプロジェクトは、分子レベルまで含めた人間の脳全体の初のコンピュータシミュレーションを作成することを目的としています。[ 5 ]
シミュレーションの計算コストが高いため、不確実性定量化などの推論を実行するためにコンピュータ実験が使用される。[ 6 ]
モデルとは、システムの挙動を捉えるために使用される方程式の集合です。一方、コンピュータシミュレーションとは、それらの方程式を解くアルゴリズムを実行するプログラムを実際に実行することであり、多くの場合、近似的な方法で解かれます。したがって、シミュレーションとはモデルを実行するプロセスです。そのため、「シミュレーションを構築する」のではなく、「モデル(またはシミュレータ)を構築する」と言い、その後「モデルを実行する」か、あるいは同等に「シミュレーションを実行する」と言うことになります。
コンピュータシミュレーションは、第二次世界大戦中のマンハッタン計画で核爆発の過程をモデル化するために初めて大規模に導入された後、コンピュータの急速な発展と並行して発展しました。これはモンテカルロアルゴリズムを使用した12個の硬球のシミュレーションでした。コンピュータシミュレーションは、単純な閉形式の解析解が不可能なモデリングシステムの補助または代替としてよく使用されます。コンピュータシミュレーションには多くの種類がありますが、共通の特徴は、モデルのすべての可能な状態を完全に列挙することが不可能または不可能なモデルの代表的なシナリオのサンプルを生成しようとすることです。[ 7 ]
シミュレーションやモデルに必要な外部データ量は多岐にわたる。入力が数個の数値だけで済むもの(例えば、電線上の交流電流の波形シミュレーション)もあれば、テラバイト規模の情報が必要となるもの(例えば、気象モデルや気候モデル)もある。
入力ソースも多岐にわたる。
最後に、データが入手可能になる時期は様々です。
こうした多様性、そして多様なシミュレーションシステムに共通する要素が多いことから、数多くの専門的なシミュレーション言語が存在する。最もよく知られているのはSimulaだろう。現在では他にも多くの言語が存在する。
外部ソースからデータを受け入れるシステムは、受信するデータの内容について非常に注意を払う必要があります。コンピュータがテキストファイルやバイナリファイルから値を読み込むのは簡単ですが、はるかに難しいのは、値の精度(測定分解能や精度と比較して)を知ることです。多くの場合、値は「誤差範囲」として表され、真の値が存在すると予想される値の範囲からの最小偏差と最大偏差を示します。デジタルコンピュータの数学は完璧ではないため、丸め誤差や切り捨て誤差によってこの誤差が増幅されます。そのため、シミュレーションによって出力される値が依然として有用な精度であることを確認するために、 「誤差解析」 [ 8 ]を実行することが有効です。
コンピュータシミュレーションに使用されるモデルは、以下のようないくつかの独立した属性の組み合わせに基づいて分類できます。
モデルを分類するもう一つの方法は、基となるデータ構造に着目することです。時間ステップシミュレーションの場合、主に2つのクラスがあります。
定常状態シミュレーションでは、方程式によってモデル化されたシステムの要素間の関係が定義され、システムが平衡状態にある状態を見つけようとします。このようなモデルは、動的シミュレーションを行う前のより単純なモデル化ケースとして、物理システムのシミュレーションによく用いられます。
かつて、コンピュータシミュレーションの出力データは、シミュレーションパラメータの様々な変更がデータにどのような影響を与えるかを示す表やマトリックス形式で表示されることがありました。マトリックス形式の使用は、数学モデルにおけるマトリックス概念の伝統的な使用法に関連していました。しかし、心理学者らは、人間はグラフや、コンピュータグラフィックス(CGI)アニメーションで表示されるようなデータから生成された動画や映像を見ることで、傾向を素早く把握できることを指摘しました。観察者は必ずしも数字を読み上げたり、数式を引用したりすることはできませんでしたが、動く天気図を見ることで、雨雲の座標表をスキャンするよりもはるかに速く事象を予測し(「雨が近づいていることに気づく」)ことができました。このような、数字や数式の世界を超越した視覚的な表示は、数値データ表示からかけ離れすぎているかのように、座標グリッドが欠落していたり、タイムスタンプが省略されていたりする出力につながることもありました。今日では、天気予報モデルは、動く雨雲や雪雲の視覚情報と、事象の数値座標と数値タイムスタンプを用いた地図とのバランスを取る傾向があります。
同様に、 CTスキャンのCGIコンピュータシミュレーションでは、長期間の治療中に腫瘍がどのように縮小または変化するかをシミュレートすることができ、腫瘍の変化に伴い、目に見える人間の頭部が回転する様子として時間の経過を表現することができる。
CGIコンピュータシミュレーションの他の応用例としては、シミュレーション実行中に発生する変化に応じて、大量のデータを動的なグラフィックで表示するためのものが開発されている。

科学におけるコンピュータシミュレーションの一般的な例(基礎となる数学的記述から導き出されるもの):
コンピュータシミュレーションの具体的な例としては、以下のようなものがある。
科学で使用されている注目すべき、そして時には物議を醸すコンピュータシミュレーションには、ドネラ・メドウズの『成長の限界』で使用されたWorld3、ジェームズ・ラブロックのDaisyworld、トーマス・レイのTierraなどがある。
社会科学では、コンピュータシミュレーションは、データ浸透法によって促進される分析の 5 つの角度の不可欠な構成要素であり、定性的および定量的方法、文献のレビュー (学術的なものを含む)、専門家へのインタビューも含まれ、データ三角測量の拡張を形成します。もちろん、他の科学的方法と同様に、再現は計算モデリングの重要な部分です[ 13 ]。
コンピュータシミュレーションは、以下のような幅広い実用的な場面で利用されています。
コンピュータシミュレーションの信頼性と、人々がそれに抱く信頼は、シミュレーションモデルの妥当性に依存するため、検証と妥当性確認はコンピュータシミュレーションの開発において極めて重要です。コンピュータシミュレーションのもう1つの重要な側面は、結果の再現性です。つまり、シミュレーションモデルは実行ごとに異なる結果を出力してはなりません。これは当然のことのように思えるかもしれませんが、確率的シミュレーションでは特に注意すべき点です。確率的シミュレーションでは、乱数は実際には半乱数であるべきです。再現性の例外は、フライトシミュレーションやコンピュータゲームなどの人間参加型シミュレーションです。これらのシミュレーションでは、人間がシミュレーションの一部となり、結果に影響を与えるため、完全に再現することは困難、あるいは不可能です。
自動車メーカーは、新しい設計の安全機能をテストするためにコンピュータシミュレーションを利用しています。物理シミュレーション環境で車のコピーを作成することで、独自のプロトタイプを作成してテストするのに必要となる数十万ドルを節約できます。エンジニアは、シミュレーションをミリ秒単位で進めて、プロトタイプの各セクションにかかる正確な応力を特定できます。[ 15 ]
コンピュータグラフィックスは、コンピュータシミュレーションの結果を表示するために使用できます。アニメーションは、例えばトレーニングシミュレーションのように、シミュレーションをリアルタイムで体験するために使用できます。場合によっては、アニメーションはリアルタイムよりも速いモード、あるいはリアルタイムよりも遅いモードでも役立つことがあります。例えば、リアルタイムよりも速いアニメーションは、建物から避難する人間のシミュレーションにおける行列の発生を視覚化するのに役立ちます。さらに、シミュレーション結果は、さまざまな科学的可視化手法を用いて静止画像に集約されることがよくあります。
デバッグにおいて、テスト対象プログラムの実行を(ネイティブに実行するのではなく)シミュレートすることで、ハードウェア自体が検出できるよりもはるかに多くのエラーを検出できるだけでなく、命令トレース、メモリ変更、命令数といった有用なデバッグ情報をログに記録することも可能です。この手法は、バッファオーバーフローなどの「検出が困難な」エラーを検出できるだけでなく、パフォーマンス情報やチューニングデータも生成できます。
コンピュータシミュレーションでは見落とされがちですが、結果の精度を正しく理解するためには、感度分析を行うことが非常に重要です。例えば、油田探査プログラムの成功を左右する要因の確率的リスク分析では、モンテカルロ法を用いて様々な統計分布からサンプルを組み合わせます。例えば、重要なパラメータの一つ(例えば、油層の総比率)が有効数字1桁までしか分からない場合、シミュレーションの結果は有効数字1桁以上の精度ではない可能性があり、あたかも有効数字4桁であるかのように(誤解を招く形で)表示されるかもしれません。