モデル化とシミュレーション

コンピュータを用いて問題解決を図る際の一つの手法として、「モデル化」と「シミュレーション」があります。

モデル化」:物事の本質的な部分だけを残して、単純化抽象化すること。単純化・抽象化されたものを「モデル」と呼びます。
シミュレーション」:「モデル」を用いて行う実験のこと

モデルの種類

モデルには様々な種類があります。

物理モデル」:実物を模したモデル。実際の形を目にしたり利用することで、問題解決の一助とします。
 (例)
 ・モデルルーム(実物モデル:実物そのものを作成するモデル。実物大の模型と考えると理解しやすいかもしれません。
 ・分子模型(拡大モデル:実物を拡大したモデル。
 ・ミニカー(縮小モデル:実物を小さく表現したモデル。 
論理モデル」:数式や論理式、さらには図などで現象や手続き等を表現したモデル。
 (例)
 ・数式モデル:理想気体の状態方程式 PV = nRT など事象を数式で表したモデル。
 ・図的モデル: 列車の路線図など、要素の関係を図で表したモデル。

さらに、時間に対しての関係性で以下の分類もできます。

静的モデル」:時間の経過がほかの要素に影響を与えないモデル
 (例)列車の路線図など
動的モデル」:時間の経過がほかの要素に影響を与えるモデル
 (例)放物運動など

そして、確率的な要素が関係するかどうかで、以下のような分類もあります。

確定的モデル」:変動する要素がなく、結果が1つになるモデル
 (例)例えば、金融において預金金利が5%である場合の、5年後の預金額など
確率的モデル」:変動する要素があり、結果が複数得られる可能性があるモデル
 (例)複数回サイコロを振って、出る目の数の回数など

シミュレーション

 上述のような、色々なモデルを用いて行う実験が「シミュレーション」です。
その、「シミュレーション」では「乱数」とよばれるものを使用することがあります。

乱数」:値が一定の範囲内で、不規則かつ、等確率で出現する数字の列

この乱数は、多くのプログラミング言語では専用の命令分を持っています。例えば python では、

random.randint(1, 6)

のように記述すれば、1から6までの範囲から、数値を1つ返してくれます。
一定の範囲内であるということが特徴で、例えばサイコロの出目をシミュレートする際、一般的には、1から6の値に収まって欲しいですよね。
よって、コンピュータで使用する「乱数」は「疑似乱数」と呼ばれたりします。

この「乱数」を用いたシミュレーションは、サイコロの出目の出現率のように、まさに確率をシミュレートする例は直感的に分かりやすいかと思います。その他に「乱数」を用いるシミュレーションの例として、円周率を求めるものを以下に紹介します。

下の図のように、半径 r の円と、その円に外接する1辺 2r の正方形があるとします。

その正方形の中に入る範囲で、無数に点を打っていくと「打った点の数(= 正方形の中に打った点の数)」と「円の中に打たれた点の数」はそれぞれの面積に比例すると考えられるので、
「円の中に打たれた点の数」/「正方形の中に打った点の数」 = πr2 / ( 2r x 2r ) π / 4
となります。
その式より、「円の中に打たれた点の数」「正方形の中に打った点の数」をそれぞれ数え、その比をとり、4倍すれば 円周率π(の近似値)が計算できることになりますね。このような手法を「モンテカルロ法」と呼びます。

その他に、例えば数式を使用しないシミュレーションの例としては、
家の部屋の平面図に対して、サイズが既知の家具を配置してみるもの、などがありますね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です