神ツール 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. 2019-1-23

    2019年1月度・第30回 福岡社員総会&懇親会

    今年初の社員総会! 2019年、明けましておめでとうございます。 前回の福岡社員総会をレポートさ…
  2. 2019-1-22

    第17回社員総会&懇親会@Osaka 〜年明け一発目!〜

    2019年1月11日(金)、大阪社員総会&懇親会が開催されました! その様子をお届けします! 社員…
  3. 2019-1-21

    GitHub の Pull Request はマージ方法が 3 パターンあるって知ってました?

    こんにちは、江嵜です。 GitHub の Pull Request つかってますか? みなさん、…
  4. 2019-1-14

    目を酷使するお仕事だから…個人的に使い続けている、目をいたわるアイテム BEST 3

    目を労わってますか? こんにちは、江嵜です。 みなさん、目を労わってますか? 昔は「テレビ見す…
  5. 2019-1-11

    2018年12月度社員総会&懇親会@Tokyo ~たくさんのポーズいただきました!~

    第4期が始まりました! 2018年12月21日(金)に東京オフィスの「12月度 社員総会&…
ページ上部へ戻る