運動方程式の簡単な数値計算

 物体に働く力がどのようなものかわかれば運動方程式によって、その物体の加速度を求めることができる。 たとえば、その運動が等加速度運動であれば、等加速度運動の式を使って、物体の速度や位置を計算することもできる。 したがって、基本的には加速度がわかれば物体の運動がわかったと考えてよい。 しかし、実際には加速度が少し複雑な形をしていると、加速度の式から運動状態を直感的にとらえるのは難しくなる。(解析的に解くことができない場合もある。) このようなとき、数値的に運動の様子を計算することも行われる。 ここでは、もっとも簡単な方法で運動を数値的に計算してみることにする。

【目的】

 物体の加速度は物体の1秒あたりの速度変化を表わしている。 したがって、ごく短い時間Δt秒の間加速度はほぼ一定と考えられるとすれば、この間の物体の速度変化はであり、現在の速度がわかれば、Δt秒後の物体の速度は、と近似できる。

 同じように、速度は物体の1秒あたりの位置の変化を表わすので、ごく短い時間Δt秒の間速度がほぼ一定と考えられるとすれば、この間の位置の変化はである。 したがって、現在の物体の位置にをたせば、Δt秒後の物体の位置が求まる。

【方法】

 図のように物体がA点からB点まで動いたとする。

このとき、A点での物体の速度を、B点での速度をとすると物体の変位はそのどちらでもなく、中間の速度(中央時刻の速度と呼ぶことにする)に時間をかけたものに近いと考えられる。 そこで、A点での加速度を求め、それから中央時刻の速度を求め、それを使って物体をB点に動かし、B点での加速度を求める… というプログラムを使うことにする。 計算機はベクトルをそのまま計算することはできないので、実際はx成分とy成分に分けて計算する。 ここではx成分について説明する。

 具体的には、プログラムでは(どの言語でも基本的には同じ)

@運動方程式(物理法則)から加速度のx成分を求め、axに代入する。

ax=(物理法則から計算した加速度のx成分)

A現在の速度のx成分axにaxと時間間隔DTとかけたものをたして、その結果をもとのvxに代入する。(等加速度運動と近似して計算する。)

vx = ax * DT + vx; 注、一般に、*は×を表わす。

このとき、最初だけDTを半分(例えば計算に使う時間間隔dtをdt=0.01にするとすれば、DT = 0.005)にしておき、速度の時間を半分だけずらす。

B現在の位置xにvxとdt(例えば0.01)をかけたものをたして、その結果をxに代入する。

x = vx * dt + x;

vxが最初半分ずれた時刻で計算してあるので、速度は常に中央時刻の速度になる。

C現在の時刻tにdtをたしたものをtに代入する。(時刻をdtすすめる)

t += dt;  注、t = t + dtをこのように書く。

D計算結果を表示して、最初に既に半分ずれているので、DT = dt; とし、これ以上ずれないようにした上で、@に戻る。

という手順で計算をすすめる。