力学の例題

発射体の運動(空気抵抗なし):差分法により数値的に解く

発射体の運動(空気抵抗なし) の問題に関しては解析解が得られているが、 ここでは、数値的に微分方程式を解くことで粒子の運動を記述することも出来ることに触れたい。

運動方程式 \[ m \frac{d^2x}{dt^2} = 0, ~~~~ m \frac{d^2y}{dt^2} = - m g, \] に対して、初期条件 \( \overrightarrow{r} = ( 0, 0 ), \overrightarrow{v} = ( v_{x,0}, v_{y0} ) \) のもとでの運動を考える。

以下では、水平方向の運動は等速運動であるので、解析解 \[ x(t) = v_{x, 0} t, ~~~~ \] を用いる。 一方の鉛直方向の運動に関しては、以下の様にEuler法により数値的に求める。 微分方程式を1階の微分方程式に分解する。 \[ \frac{dv_y}{dt} = - g, ~~~~ \frac{dy}{dt} = v_y, \] これら連立1階常微分方程式を以下の様にEuler法により取り扱う。 初期値として、変数に \[ t = 0, ~~~~ y_\mathrm{Euler} = 0, ~~~~ v_{y, \mathrm{Euler}} = v_{y,0}, \] を代入し、その後、上記変数を、 \[ t = t + \Delta t, ~~~~ y_\mathrm{Euler, new} = y_\mathrm{Euler} + v_{y, \mathrm{Euler}} \Delta t, ~~~~ v_{y, \mathrm{Euler, new}} = v_{y, \mathrm{Euler}} - g \Delta t, ~~~~ \] \[ y_\mathrm{Euler} = y_{\mathrm{Euler, new}}, ~~~~ v_{y, \mathrm{Euler}} = v_{y, \mathrm{Euler, new}}, \] と更新を \( N \) 回繰り返すことで \( 0 \le t \le N \Delta t \) における運動の時間発展を求める。

以下では、上記Euler法を用いて求めた粒子の運動を描画する。 青い軌跡が解析解、緑がEuler法により求めた数値解になる。 \( \Delta t \) を小さくすると解析解と数値解がほぼ一致する様子がわかる。
\( v_{x,0} \) :
\( v_{y,0} \) :
\( \Delta t \) :
\( N \) :

後記

力学の授業では、従来は、解析的な取扱が出来る場合のみを取り扱うことが多かったかと思います。 ですが、解析解を得ることが難しい場合においても、数値的に解析を行うことは、 今日の物理学の研究では広く行われていることです。 ですので、授業でも、数値的な解析方法に触れておくことは有益と考えました。
なお微分方程式の数値的解法には、ここで扱ったEuler法(差分法)のほかにも、 Runge–Kutta法など様々知られています。 ですが、ここでは、微積分の概念が直接的に反映されているという点で、 最もシンプルかつ教育的な差分法に触れるにとどめておきます。 (2020/04/28 記)

Copyright © Wataru Izumida, All Rights Reserved.