2022年12月28日水曜日

第129回 打球速度シミュレーター ver.1 -弾性衝突-

 


お久しぶりです。


打球速度を計算

今回は、新しいシミュレーターを作成します。

エクセルで投球をバットで打ち返した時の打球速度を計算する、"打球速度シミュレーター"です。

こちらも軌道シミュレーターと同じくマクロは使わずに、普通の数式だけで作成していきます。



弾性衝突

まず手始めにver.1として、一直線上を動く、2つの質点の、弾性衝突モデルを考えます。

弾性衝突というのは、衝突の前後で運動エネルギーの散逸がなく、保存される衝突のことです。
バットとボールが持っていた運動エネルギーは全部運動エネルギーのままで、振動や熱や音などほかの形態のエネルギーに変化して逃げていかないと仮定します。
(細かいことを言うと、振動や熱や音も分子レベルのミクロでみれば運動エネルギーですが。)

このように計算の簡略化や現象の理解のために条件を限定することを、物理学では「理想化」と言います。



計算式

それでは数式化します。

下図のように物体1をボール、物体2をバットとします。
mは重量、vは衝突前(打つ前)の速度、uは衝突後(打った後)の速度です。






保存則
衝突後の打球速度u1は、2つの保存式から導かれます。
運動量保存則と、運動エネルギー保存則です。






運動量は物体の重量(質量)と速度の積で、運動の勢いを表す値です。
運動量保存則は作用反作用の法則に起因するもので、衝突現象においては常に成り立ちます。ミクロ世界の素粒子同士の衝突現象においてさえ成り立ちます。



打球速度u1

①をu2について整理して、②に代入し、u1について整理すると、





となります。

③はu1の二次方程式です。中学数学でおなじみの解の公式



を使うと、

となります。

④式は±がついていおり、2つの解を持ちます。

打球速度の値は1つですが、計算結果は2つ出てきます。

さて、これは物理的にどういう意味を持っているのでしょうか?



2つの打球速度u1

それぞれ計算してみます。

 +の解
+の方を計算してみると、




となります。

⑤は衝突の前後で球速が全く同じ、ということを意味しています。

何のことはありません。
+の方の解は衝突が起こらなかった場合、つまり「空振りした場合」の解です。

(数学的に言うならば、1次元の世界ではボールとバットが同一直線上を動いているよう見えるが、2次元以上で見れば平行な別々の直線上を動いている場合の解、という感じです。)



-の解
-の方の解が、バットに当たって打ち返されたときの打球速度になります。

計算すると、



を得ます。



バット速度u2

さて、もう一つの未知数、衝突後のバット速度u2です。

これもu1と同じ手順を踏めば計算式を得られますが、もっと簡単な方法があります。

大元の保存式①、②は物体1,2に対して、完全に対称な形をしています。

そのため、上記⑥式の添え字1と2をそっくり入れ替えてやれば、そのままu2を求める式になります。




これで計算式は完成です。



行列形式

行列形式で、上記⑥、⑦式を一つにまとめて表します。

衝突前の速度{v}={v1,v2}を、衝突後の速度{u}={u1,u2}に変換する行列[A]を導入すると、{u}=[A]{v}の形式で下記のように1つの式で記述することができます。

   



{}はベクトルを、[]は行列を表す数学記号です。ここでの速度ベクトル{v},{u}は空間の各座標軸、あるいは自由度、の成分を表すものではなく、複数あるものをひとまとめにして扱うためのものです。

これで準備が整いました。



エクセルへ数式入力

では、エクセルへ入力していきます。


インプット値
まずインプット値を入力。
ボールとバットの衝突前速度v1,v2および、重量m1,m2を下図のようにC列に記入します。

打った後の打球が飛んでいく方向(ホーム→センター方向)をプラス方向と定義します。そのため、反対向きの投球速度v1はマイナスをつけて入力します。


衝突後速度u1,u2のアウトプット値を表示する場所も用意しておきます。


衝突計算
次に、⑧式の衝突計算を行う部分を作成します。

衝突前速度{v}

下図のようにL列に、C列のインプット値v1,v2を参照します。

 かっことイコールは、⑧式との対応が分かりやすいようオートシェイプで描きました。なくても計算できます。


衝突行列[A]
衝突前の速度{v}を、衝突後の速度{u}に変換する行列[A]の成分を入力していきます。
便宜上ここでは行列[A]を以降、衝突行列と呼びます。

[A]の左上成分a11の計算式を、J4セルに、下図のように入力します。
これは投球速度v1が打球速度u1に寄与する割合を表します。


[A]の右上成分a12の計算式を、K4セルに、下図のように入力します。
これはバット速度v2が打球速度u1に寄与する割合を表します。


[A]の左下成分a21の計算式を、J5セルに、下図のように入力します。


[A]の右下成分a22の計算式を、K5セルに、下図のように入力します。


衝突後速度{u}

衝突後速度{u}の行列計算を行う数式を、H4セルに、下図のように入力します。
Enterキーを押すと下のH5セルにも計算式が自動入力されます。


エクセルのバージョンによっては上記操作がうまくいかないかもしれません。
その時は、H4セルをマウス左クリックで選択→Shiftキーを押しながらH5セルも選択→上記数式を入力→Shift+Ctrl+Enterキー、で同じことができます。


アウトプット値

最後に、用意しておいたアウトプット用のセルC13,C14に、H4,H5の計算結果を参照してきます。



これで、


入力完了です。


 


エクセルグラフ化

計算された数字だけ見ても味気ないので、グラフ機能で視覚的に表示します。

エクセルの横向き棒グラフを使いました。上が衝突前、下が衝突後です。


これでも十分ですが、もう少し装飾を。




計算対象が速度なので、矢印で表示してやります。

この操作はオートシェイプの矢印図形をいったんエクセルのどこかに出し、それをコピー(Ctrl+C)して、棒グラフの要素をマウス左ボタンで選択し、ペースト(Ctrl+V)するとできます。
意外と知られていない裏技です。




さらに、棒グラフの要素の間隔を500%にして矢印を細くし、選手とボールの絵を貼りつけました。

なかなか良い感じです。

向きや時系列が分かりやすくなりました。




これで、打球速度シミュレータver.1の、


完成です。



130km/hの球を120km/hのバット速度で打ち返すと、「打球速度は301km/h」になる。

...これは、...ありえないですね。



大谷翔平選手の最速打球が191km/h、メジャー史上最速が197km/hです。

実際のバッティングは弾性衝突ではなく、エネルギーの散逸を伴うためver.1の結果よりも遅くなります。


次回、ver.2ではこの点を改良します。





それでは、また。