いわゆる相図 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) 式右辺にかかる係数です。

source