神ツール Excel は当然シミュレーションだって出来る。(シミュレーション入門)【Agent Grow Advent Calendar 2017:21日目】

Agent Grow Advent Calendar 2017 21日目は私、江嵜が担当いたします!

Excel でシミュレーションをしてみよう!

皆さん、シミュレーションしてますか?

シミュレーションというと、なんだか専用のソフトで大学の専門家がやるものなイメージがありますよね。

しかし、専門のソフトや知識がなくても、簡単にやってみることができるのです。

今回はほとんどの PC に入っていながら何でもできる神ツール Excel さんに、シミュレーションをやってもらいましょう!

シミュレーションを書いてみる

モンキーハンティング

今回は簡単なネタとして、モンキーハンティングを取り上げてみましょう。
詳しい説明は google 先生に任せますが、マイルドに説明しますと、
「木の上にいるサルめがけてボールを投げると同時に、サルが手を離して落下しはじめました。ボールの速さがどれくらいであれば、ボールはサルに当たるでしょうか?」という問題です。

モンキーハンティング

先にネタを明かしてしまえば、答えは「ボールの速さによらず必ず当たる」なのですが、
今回はそれが本当かどうかをシミュレーションで実験してみましょう!

今回のシミュレーションの考え方

シミュレーションとは即ち、試したいことに出来るだけ似た環境を用意して、その中で実際にその挙動を見ることです。

今回は落ちるサルや飛んでいくボールの動きを数式で再現し、それを Excel に計算させて様子を見てみましょう。
(今回は高校物理で学習する内容・式が登場します。そちらの解説を行うともう一本記事が書けてしまうので興味がある方は各々調べてみてくださいね。)

式を作る

今回必要な公式とその使い方

今回数式を作る上で必要なのが、移動する物体の速度と位置を計算するための公式です。

上の式において (1) が速度を、 (2) が位置を表す公式となっています。
文字について軽く説明すると、
– t: 移動時間
– v: 移動速度 (v0 は 最初の速度)
– x: 移動距離
– a: 加速度 (1秒間にどれだけ速度が速くなるか)
を表しています。

この式は物理の問題で例えば、
「高いところからボールを落とした時、5秒後の速度と移動距離を求めなさい」
(重力の運動では大体 a = 9.8)
であれば、

となって、5 秒後には速度が 49 m/s で、122.5 m 落ちた場所にあることが分かる、といったことが分かるのですね。

上の式では 5 秒後を計算しましたが、シミュレーションではこれを 0.1 秒、 0.01 秒、あるいはもっと短い時間ずつの計算を繰り返し行い、その結果をパラパラ漫画のようにつなげて見せているのです。

サルの動きを考える

ではサルが落ちる動きを式として考えてみましょう!
…とは言っても、実はすでにほとんど上の説明で出来上がっているのですね。

サルは今回落ちるだけですので、横方向の動きは無し(考えなくて良い)ですね。
縦方向についても、重力に従って落ちるだけですので、ほぼ上の例題と同じ内容になります。

t のところは 0.1 と固定して計算してしまいましょう。
さらに、v0 に一つ前の v の値を入れるようにして見ます。

こうして出来た式をグラフに書くとどんな感じになるかと言いますと…

サルの軌跡

…これだけではよくわからないですね。
ではこれをパラパラ漫画として、一点ずつ取り出して動画にしてみましょう。

点が下に向かって落ちていきます!
これがサルが落ちていく時の動きと同じということですね!

ボールの動きを考える

サルのシミュレーションができたら、ボールもほぼ同じように考えることができます。

サルと違うところは

  • 最初からスピードを持っている
  • 縦だけでなく横にも動いている

の二点ですが、

  • 最初の速度は v0 に入れたらよい
  • 縦と横の速度は別物として分割して考えてよい

と考えることができます。
二つ目は物理の考え方なので、そんなルールがあるんだな…くらいに思ってください。

速度の分割には三角関数をつかうのですが、この辺りは興味ある方が各自しらべてもらうとして、
実際にシミュレーションしてみると…

こんな感じ。
ボールが飛んでいくような感じの動きが見えていますね!

いざ実行!

これで落ちるサルとボールの動きをシミュレーションできました。

この二つを同時に重ねて動かして、本当にぶつかるかどうか見てみましょう!

…ぶつかっているぽいですね!

このシミュレーションの面白いところは、サルとボールの距離や速度などを変えても、必ずどこかでぶつかる様子をみることができます。

また、もっと分かりやすくするためには

  • 各計算の時間間隔を 0.1 s よりもっと短くする
  • 衝突したときの処理を入れる

などありますが、そのあたりは皆様自身に Excel でシミュレーションを試してみてください。

まとめ

今回駆け足で Excel シミュレーションをやってみましたがいかがでしょうか?

途中数式なんかも出て、ちょっと見た目難しいところもありますが、
実はその内容は一つずつ紐解いていけばそんなに難しい物ではありません。

皆さんの中で、一人でもシミュレーションに興味を持ってくださった方が
いらっしゃいましたら幸いです。

さてさて、ついにアドベントカレンダーも残すところ 4 日分!

どんなネタが飛び出すのか楽しみですね!

江嵜からは以上です!

Takato Ezaki

Takato Ezaki小中高の塾講師からエンジニア

投稿者プロフィール

福岡で Web 系のエンジニアをしています。

中高の理科教師免許を取り、起業に 2 年間トライした後エンジニアの道へ入りました。

化学反応の中では Belousov-Zhabotinsky 反応が大好きです。

この著者の最新の記事

関連記事

コメントは利用できません。

募集中!(o゜▽゜)o

エンジャパン
求む、社長!
follow us in feedly

コッチもヨロシク!





最近のネタ!

  1. 2018-10-18

    第9回テーブル部(ボードゲーム)~少人数でまったり~

    2018年8月25日に第9回となるテーブル部活動を開催しました! この日もいつも通り「ボードゲーム…
  2. 2018-10-17

    2018年10月度・第28回 福岡社員総会 & 懇親会

    はじめに 早いものでもうすっかり秋模様ですね🍁 のちほどお伝えする総会&懇親会の様子を見ていただ…
  3. 2018-10-15

    2018年9月度社員総会&懇親会@Tokyo 〜良い表情がいっぱいだね(o゜▽゜)o〜

    遅くなってしまったけれども…… 2018年10月度の社員総会&懇親会@Tokyoが今週末に控えてい…
  4. 2018-10-15

    第7回ボルダリング部 ~いざ! 大根おろしチャレンジ!~

    2018/10/7(土)にボルダリング部の活動がございました! どういう活動内容だったのかご紹介い…
  5. 2018-10-15

    JS で Canvas を操作するときは Konva が結構便利に使えます!

    HTML5 の canvas 使ってますか? こんにちは! 江嵜です。 みなさん、html5 の…
ページ上部へ戻る