Trajectory of a projectile with air resistance
力学の例題
発射体の運動(空気抵抗あり)
空気抵抗を無視した場合に対して、
空気抵抗を考慮した場合の発射体の運動を表示してみる!
空気抵抗として\( - \beta \overrightarrow{v} \)と速度に比例する力を受けるとする。
\( \beta \)は比例定数。
運動方程式は
\[
m \frac{d^2x}{dt^2} = - \beta \frac{dx}{dt}, ~~~~
m \frac{d^2y}{dt^2} = - \beta \frac{dy}{dt} - m g,
\]
と書かれる。これを解くことで、時々刻々変化する粒子の位置は、初期条件を
\(
\overrightarrow{r} = ( x_0, y_0 ), \overrightarrow{v} = ( v_{x,0}, v_{y0} )
\)
として、
\[
x(t) = x_0 + \frac{v_{x, 0}}{\beta'} ( 1 - e^{-\beta' t} ), ~~~~
y(t) = y_0 - \frac{g}{\beta'} t + \frac{1}{\beta'} ( v_{y, 0} + \frac{g}{\beta'} ) ( 1 - e^{-\beta' t} ), ~~~~
\beta' = \frac{\beta}{m},
\]
と与えられる。
以下では、時刻 \( t=0 \) において粒子は原点\( \overrightarrow{r} = 0 \)
にあったとして、初速度\( \overrightarrow{v} \)
を与えたときの粒子の運動を、
javascript, canvas, を用いて描画します。
後記
どうも、指数関数の計算のところがおかしな挙動を示す。この問題は未解決。(2020/04/20 記)
上記のバグは、プログラムを作った際は数値であることを念頭にしていた変数が、数値として扱われていなかったことが原因と判明。
やはりバグ取りの基本はwrite文!
こういうバグは数値計算でよくある。
fortran でいうところの implicit none のような宣言文ってないのかな?(2020/04/21 最終更新)
Copyright © Wataru Izumida, All Rights Reserved.