いわゆる相図 phase diagram と呼ばれるものです。
横軸が x 位置、縦軸 v が速度をあらわしています。
[start] ボタンを押すと(
右方向への速度を正 プラスと表現しているので)、
右回りの渦巻き状に原点に落ち込みます。
落ち込む点(この場合は原点)のことをアトラクタ attractor といいます。
矢嶋信男著「常微分方程式」p.174 によれば…
物体の運動を考える場合、ある時刻 t での位置 x(t) と速度 v(t) を指定す
れば,その運動の状態は完全に決まる。そこで、この位置と速度を座標とする
空間、すなわち (x,v) 空間を考えて相空間 phase space という。
運動の状態は、物体がこの相空間に占める点の座標として表される。
物体が運動するにつれて、この点は相空間内を時間とともに移動して曲線を描
く。
この曲線を解軌道 trajectory もしくは orbit とよぶ。
初期条件を与えることは、相空間内の一点を指定することである。
したがって、初期値問題はこの点を通る解軌道を求めることに相当する。
すなわち下の java applet は t=0 の時の初期値と 2 つのパラメータによって解軌道がどのように変化するかを示す デモンストレーションになっています。
一般にバネなどの運動方程式は
のようになっています。ここで m は 重りの質量, k はバネ定数です。
両辺を m で割ることにより、
となります。ここで、
であるから(位置の時間変化が速度だから)、上記の 2 階微分方程式を
1 階連立方程式に書き直すことができます。
実際の java の program では、上式の両辺に dt を掛けたかたち
を使って、漸化式に代入し順番に drawLine で線を引いています。
該当部分を示すと
while ( T <= tt ) { aw2px(A, x, v); dx = ( alpha * v) * dt; dv = - beta * ( x + v) * dt; x += dx; v += dv; aw2px(B, x, v); g.drawLine(A.x, A.y, B.x, B.y); T += dt; }のようになります。applet 中の alpha は (4) 式右辺、 beta は (5) 式右辺にかかる係数です。