力学の例題

発射体の運動(空気抵抗あり)

空気抵抗を無視した場合に対して、 空気抵抗を考慮した場合の発射体の運動を表示してみる!
空気抵抗として\( - \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, を用いて描画します。
\( v_{x,0} \) :
\( v_{y,0} \) :
\( \beta' \) :

後記

どうも、指数関数の計算のところがおかしな挙動を示す。この問題は未解決。(2020/04/20 記)
上記のバグは、プログラムを作った際は数値であることを念頭にしていた変数が、数値として扱われていなかったことが原因と判明。 やはりバグ取りの基本はwrite文! こういうバグは数値計算でよくある。 fortran でいうところの implicit none のような宣言文ってないのかな?(2020/04/21 最終更新)

Copyright © Wataru Izumida, All Rights Reserved.