シミュレーションの作り方 16


その16 繰り返し動作を効率よく表現するには


 流れ続ける粒子など同じ動作を繰り返す様子を表示させるときなどそのまま大量のDATAを作成したのでは容量が増えて大変です。そんな時Mod関数を利用して最小のDATAで効率よく表現します。以下の手順で解説します。 

 

 手順1.X=0~10の範囲で水平方向に等速で運動する粒子を作り数を増やします。(スピンボタンで動かす)

 手順2.粒子がX>10の瞬間X=0に現れ同じように運動するようにします。(反復運動)

 手順3.少しずれながら同じように運動する粒子をつくります。これを繰り返し多数の粒子が同時に反復運動を繰り返すようにします。

 

手順1・X=0~10の範囲で水平方向に等速で運動する粒子を作り数を増やします。

 

カウンターの設置

 

 L2にカウント数を表示できるようスピンボタンを準備します。

 左画面のように「開発」→「挿入」→「AxtiveXコントロールのスピン」をクリックし、L2の横に貼り付けます。

 

 ついでにL5にΔtの値を入れておきます。(画面では

0.02)また左画像では見えませんがL8には粒子の速さVの値を入れておきます。(4を入れておきました。)

 

※「開発」タブが出ていない時は ここ を見てください。

 

 スピンボタン上で「右クリック」→「プロパティ」を表示

 

させ、「LinkedCell」にL2 と記載し、「Max」を

 

10000位にしておきます。

 

 これで手動カウンターの設置は完了です。リセットはL2に0を記載します。

   移動粒子の時刻ごとの位置(X)の一覧表作成

 

 左画像のようにA26~A226までには0~200までの連続数を記載しておきます。 

 B列には時刻を記載します。1カウントで進める時間⊿tはL5に記載した値なのでまずB26セルに、「=$L$5*A26」と記載します。(L5ではなく列と行の前に$をつけること)

 C列にはその時刻の粒子の位置(X)を表す式を記載します。速さはL8に記載した値なのでまずC26セルには「=$L$8*B26」と記載します。

 続いて、B26とC26を226行までコピーします。これで一覧表は完成です。

   5個の粒子の位置座標を表示させる

 

 y=0、1、2、3、4の高さを並行して動くように5個の粒子の位置座標を表示させられるよう右画像のように準備する。

 ここで一番大切な部分は L14セル内に記載する

「VLOOKUP(L12,$A$26:$C$226,3)」で作成している一覧表の中からL12に表示されているカウントのXの値を読み取ってきます。M14せるには0を入力しておきます。

 粒子1~粒子4はまとめて作成します。N14セルに「=$L14 」と記載しP14、R14、T14に貼り付けます。次にO14セルに「=M14+1 」と記載しQ14、S14、U14に貼り付けます。

 これで5個の粒子の位置座標の表示はおわりです。次にこれをグラフ上に粒子として表示させます。

グラフ上に粒子を表示させる

 

 左画像のように、「挿入」→「散布図」→「散布」をクリックしグラフを表示させます。

 

 次にグラフ上で、右クリック→「データの選択」を押します。

データソースの選択ダイアログで「追加」ボタンを押し、出てくる「系列の編集」で系列名には(粒子0)と書かれているM12セルを指定し、系列Xの値にはL14を指定し、系列Yの値にはM14を指定します。

 以下同様の手順で粒子1~粒子4まで系列の編集作業をします。

 データソースの選択ダイアログで「OK」を押すとグラフ上に5つのマークが出てきます。

   X軸の最大値最小値を固定します。

 

 このままでは動かすとグラフの目盛が自動的に変化してしまい粒子の運動が観察できませんので右画面のようにX軸の最大値と最小値を固定化します。

 まずグラフのX軸目盛上で右クリックし出てくるダイアログから「軸の書式設定」を選択しさらに出てくる「軸の書式設定」の最小値を0に、最大値を10に設定します。

 これでX目盛の変化しないグラフになりました。

スピンボタンを押すと5つの粒子が一斉に右に動きます。(動かない時は「デザインモード」になっている可能性があるので「開発」を押しそれを解消します。)

 

 5つの粒子は色々なマークで表示されていると思います。このマークを●などに変更する方法は省略します。

分からない人は、作業実習2の追加作業その1などを参考にして下さい。

 

 

 手順2・粒子がX>10の瞬間X=0に現れ同じように運動するようにします。

 

繰り返し表示させる方法

 

 この5つの粒子はX>10になるとグラフには表示されなくなってしまいます。10を過ぎたらまた0に戻るようにするには「MOD関数」を利用します。

 

 MOD関数は「余り」を表示させる関数です。そこでX=0からX=10に着くまでのカウント周期を出し、カウントをそのカウント周期で割ったときの余りのカウントを使ってVLOOK関数で読み取らせればいつも画面には粒子が繰り返し運動するはずです。

 

 

 

 手順3・少しずれながら同じように運動する粒子をつくります。

 

4列の粒子(20個)が常連続反復するようにする

 

 まず、L12:U14の範囲をコピーし左画面のように

L16,L20,L24に貼り付け粒子NOを変更しておきます。

 次に、繰り返しカウント周期はL12またはC24セルに表示されているのでこれを使い(どちらでも良い)、カウント周期の1/4づつずらしたカウンターを作ります。(n列の場合は1/n)

 まず、L16セルに =MOD(L12+$L$11/4、$L$11) と記述します。$L$11はカウンター周期のセルです。

 次にこれをコピーしてL20L24に貼り付けます。これで4列で表示される粒子列の位置座標が出来上がりました。

 最後にデータソースの選択ダイアログで「追加」ボタンを押し、出てくる「系列の編集」で追加ボタンを押しながら粒子5~粒子19を設定します。設定をし終えると上画像のように20粒子がグラフ上に現れます。

 

   以上で解説は終わります。サンプルファイルは「サンプル16」からDownLoadできます。   2020.2.3