第一回 Excel VBA によるシミュレーション初体験

本講義では、 Excel VBA を用いて微分方程式を数値的に解くシミュレーションを皆さんに体験してもらう。
対象とする微分方程式には、物理や機械力学などで用いる運動方程式も含む。

様々な研究室の学生が受講する講義であるのでプログラミングの能力を必須とはしないが、
作成済みのプログラムに対して定数を変更したり定数を追加したり、と言う程度の記述は行う。
それらは本ページの解説に従うことで十分に対応できる。

今回はガイダンスとして、簡単な単振動のシミュレーションを体験してもらおう。

単振動のシミュレーション

本講義では、運動方程式などの微分方程式を Excel のマクロで数値的に解くシミュレーションを行う。
Excel のマクロとは、Visual Basic for Applications (VBA) で書かれたプログラムのことである。

上のリンクは、単振動 (摩擦なしの床上で質量 m のおもりがばね定数 k ばねと接続されたときの運動) をシミュレーションするための Excel マクロである。
おもりと異なる側のばねの端は壁に固定されているものとする。
SpringDynamics.xlsm をダウンロードした後、ダブルクリックして開こう。

下図のように「保護ビュー」が開いたら「編集を有効にする」をクリックしよう。



すると、下図のように「セキュリティーの警告」が開くことが多い。その場合、「コンテンツの有効化」をクリックする。
このように、マクロを含む Excel ファイルを開こうとすると警告が出るが、そこでそのマクロを有効にしないと本講義のプログラムは機能しないので注意。



最終的に、警告のない下記のようなExcelシートが開かれる。



ただし、下図のように「セキュリティリスク このファイルのソースが信頼できないため、Microsot によりマクロの実行がブロックされました」という
赤い警告が出た場合は、ボタンをクリックするだけではファイルを正しく開けない。



このように赤い警告が出た場合は、下図のようにファイルのプロパティをまず開く。



そして、最下部の「セリュリティ」の項目で「許可する」にチェックを入れれば良い。



うまく開ければ下図のような状態となる。



ここで「データ作成」ボタンをクリックすると、ばねにつながれたおもりの運動方程式がシミュレーションにより数値的に解かれる。
その結果、以下のような数字が現れる。いずれ解説するが、「データx」はおもりの位置 (ばねののび)、「データy」はおもりの速度である。



ここで、「データx」をグラフに表示してみよう。以下のようにA列とB列を同時選択する。
マウスで「A」という文字から「B」という文字までをマウスでドラッグすれば良いだろう。
あるいは、マウスで1回「A」という文字をクリックしてから、キーボードのCtrlキーを押しながら「B」という文字をクリック、でも良い。



その後、下記のように「挿入」タブ→散布図の直線を選択すれば、グラフがあらわれる。
これはおもりの位置 (ばねののび) の時間変化を表すが、これが単振動であることは皆さんご存知のはず。



一応、ここでこのシミュレーションを実現している VBA のプログラムを見てみよう。
大学の PC ではプログラムを簡単にみるための設定がなされているが、
それを自宅で行うためには、「開発」タブと呼ばれるものを表示する設定をあらかじめ行っておかねばならない。

まず、左端の「ファイル」タブから下図のように「オプション」を選択する。



現れたウインドウで、下図のように「リボンのユーザー設定」→「開発」にチェック、を行う。
なお、リボンとは Office ソフト上部のボタンが集められた領域のことを言う。

なお、macOS でこの画面にたどり着くには、メニューから「Excel」→「環境設定」→「リボンとツールバー」とたどること。



そうすると、下図のように「開発」タブが現れるので、左端の「Visual Basic」ボタンをクリックしてみよう。



そうすると、下図のように運動方程式を解くためのプログラムが現れる。



上図のプログラムを理解する必要はないが、下記の行が「ばね定数 k を定義して値を 1 に設定していること」や
「質量 m を定義して値を 1 に設定していること」は想像できるであろう。
Const k As Double = 1   ' ばね定数
Const m As Double = 1   ' 質量
以上を確認したら、Visual Basic や Excel のウインドウを全て閉じて構わない。



課題→

Excel VBA で微分方程式をシミュレーションしように戻る