見出し画像

角速度が変化する正弦波を再現!Excelで学ぶ数理モデル化の基礎

前回の記事では、時間とともに角速度が変化するときの正弦波を、次のような基本式で表しました。

$${Y_{(t)} = A\sin\theta_{(t)}}$$
$${\theta_{(t)} = \int \omega_{(t)}\,dt + \phi}$$
・$${A}$$: 振幅 (-)
・$${\theta_{(t)}}$$: 角度 (rad)
・$${\omega_{(t)}}$$: 角速度 (rad/s)
・$${t}$$: 時間 (s)
・$${\phi}$$: 位相 (rad)

※前回の記事: 角速度が変わると正弦波はどうなる?公式の取り扱い説明書

この基本式にある積分は、Excelを使えば簡単に計算することができます。マクロは使いません。セルだけで、近似的に求められます。

角速度が変わると正弦波はどう変わるのか。

理屈で終わらせず、その答えをグラフで描いてみませんか?この過程には、数理モデル化の基礎が詰まっています。

そこで、今回のテーマは…
この 正弦波の基本式を、Excelで再現して可視化する ことです!

✔︎ 全体の設計図

Excelで正弦波を作り始める前に、まずやっておきたいのが 全体の設計図を描くこと です。

ここでいう設計図とは、

  • 何を入出力とするのか

  • どのような順番で計算するのか

  • どういった要素に分けるのか

  • どのように求めるのか

を整理したものです。

分かりやすければ、どんな描き方をしても大丈夫です。
ここで扱う正弦波モデルの場合、私なら次のように設計図を作成します。

(ちょっとお茶目にしました)

この設計図について、順を追って確認してみましょう。

▶ 何を入出力とするのか

  • 入力: 角速度 $${\omega_{(t)}}$$
        ※ 任意に変えられること

  • 出力: 正弦波 $${Y_{(t)}}$$

これにより、角速度 $${\omega_{(t)}}$$ が時間とともに変化するときの正弦波 $${Y_{(t)}}$$ を可視化できます。

▶ どのような順番で計算するのか

  1. 角速度 $${\omega_{(t)}}$$ を入力する。

  2. 入力した $${\omega_{(t)}}$$ を時間積分し、角度 $${\theta_{(t)}}$$ を求める。

  3. 求めた角度 $${\theta_{(t)}}$$ から、正弦波 $${Y(t)}$$ を計算して出力する。

▶ どういった要素に分けるのか

他でも使いまわせるように、汎用性を考えて次の3つの要素に分けることにしました。

  1. シート[ω(t) →]
    角速度 $${\omega_{(t)}}$$ の値を入力する。

  2. シート[θ(t)=∫ω(t)dt+φ →]
    角速度 $${\omega_{(t)}}$$ を参照して、角度 $${\theta_{(t)}}$$ を求める。

  3. シート[Y(t)=Asinθ(t)]
    角度 $${\theta_{(t)}}$$ を参照して、正弦波 $${Y_{(t)}}$$ を求める。

▶ どのように求めるのか

今回は、入力値と各設定値を次のようにしました。

  • 角速度: $${\omega_{(t)}=t\,(rad/s)}$$

  • 時間刻み: $${dt=0.001\,(s)}$$

  • 位相: $${\phi=0\,(rad)}$$

  • 振幅: $${A=1\,(-)}$$

また角度 $${\theta_{(t)}}$$ は、角速度 $${\omega_{(t)}}$$ を時間積分して求めます。具体的には、下図のように時間刻み $${dt}$$ ごとに台形近似して面積を計算し、その総和を求めます。この総和が、角度 $${\theta_{(t)}}$$ に相当します。

最後に、求めた角度 $${\theta_{(t)}}$$ を使って、正弦波 $${Y_{(t)}}$$ を出力します。


あらかじめ設計図を描いておくことには、次のようなメリットがあります。

  • 全体を俯瞰して見ることができる。

  • どこで何を計算しているのかがすぐに分かる。

  • 数式ミスやセル参照の混乱を防げる。

  • 他の人に構造を説明しやすくなる。

  • 他の人でも間違いに気づける。 など

Excelはあくまで計算ツールであり、この設計図こそが主役です。

✔︎ Excelで再現して可視化

先ほどの設計図をもとにして、正弦波をExcelで再現しました。

※マクロは使っていません。

▶ シート[ω(t) →]

角速度 $${\omega_{(t)}}$$ を時間の関数として入力するシートです。

A列には、時間 $${t}$$ の値を時間刻み $${dt}$$ で入力してあります。
B列には、その時間に対応する角速度 $${\omega_{(t)}}$$ を入力します。

任意の角速度を入力できますが、
$${\frac{2\pi}{\omega_{(t)}} \gg dt\times2}$$
となるようにしてください。

※この理由は、機会があれば別記事で解説します

角速度 $${\omega_{(t)}}$$ を変えたら正弦波 $${Y(t)=A\sin\theta(t)}$$ がどのように変わるのかを確認できるように、グラフを添付してあります。

グラフの変化を見ながら、角速度をいろいろ変えてみると理解が深まります。

▶ シート[θ(t)=∫ω(t)dt+φ →]

角速度 $${\omega_{(t)}}$$ を時間積分して角度 $${\theta_{(t)}}$$ を求めるシートです。

A列は、先ほどのシート[ω(t) →]の時間 $${t}$$ を参照しています。
B列は、先ほどのシート[ω(t) →]の角速度 $${\omega_{(t)}}$$ を参照して時間積分し、角度 $${\theta_{(t)}}$$ を求めています。

時間積分した値は、次の台形近似の式をB列に入力し、1行ごとに積み上げ計算することで求めています。

$$
\theta_{t} = \theta_{t-dt} + \frac{(\omega_{t} + \omega_{t-dt})\times dt}{2}\\
$$

ただし、$${\theta_{t=0}=\phi=0}$$

▶ シート[Y(t)=Asinθ(t)]

角度 $${\theta_{(t)}}$$ をもとに正弦波 $${Y(t)}$$ を求めるシートです。

A列は、先ほどのシート[θ(t)=∫ω(t)dt+φ →]の時間 $${t}$$ を参照しています。
B列は、先ほどのシート[θ(t)=∫ω(t)dt+φ →]の角度 $${\theta_{(t)}}$$ を参照して、正弦波 $${Y(t)=A\sin\theta(t)}$$ を求めています。(ただし、$${A=1}$$)

角速度を変えれば、波の周期や形状も変化します。


こんなの、何に使うの?って思いましたか?

たとえば、この正弦波モデルを使えば『ド〜レ〜ミ〜ファ〜ソ〜』といった波形の主成分を再現できます。そのため、楽器の共鳴現象をシミュレーションするときの入力波として利用できます。

このように、シミュレーションの世界では『入力波』としてよく使われています。

✔︎ おわりに

今回のテーマはExcelで正弦波を再現することでしたが、本当の主役は『設計図』でした。設計図を描くことで、Excelで正弦波を再現するときの『入力→処理→出力』の構造が明確になったはずです。

計算ツールを立ち上げる前に、まず『設計図』を描く。

それだけで、思考が整理され、ミスが減り、信頼性が増します。

たとえAIが代わりにプログラミングしてくれる時代になっても、設計図を描く力、すなわち構造をつくる力は、これからの時代も必要になるはずです!
 


🔗 続けて読みたい記事

小学校で競うように覚えた円周率 3.14・・・
もし、自分で求められる としたら、やってみたいですよね?


少しでも参考になったと思ったら、
スキやフォローしていただけると、
次の記事を作成する励みになります!



いいなと思ったら応援しよう!

数理モデル屋 もし具体的に何かのお役に立てたなら、チップで応援していただけると励みになります! いただいたチップは、今後の活動に使わせていただきます😊

この記事が参加している募集