2−6.常微分方程式のまとめと演習

Hamiltonianが

H = (p2+q2)/2        (a1)

で与えられる1次元調和振動子を数値的に解いてみよう。

運動方程式は

dq/dt - p = 0           (a2)

dp/dt + q = 0           (a3)

        と2つの連立1次常微分方程式で表される。

        それぞれの数値計算アルゴリズムを以下にまとめ、初期条件 [p0, q0] = [1, 0]、 dt=0.1 としたサンプルプログラムを与える。

        《演習》

  1. Euler法のサンプルプログラムを参考にして、Leap-Frog法、Runge-Kutta法、Predictor-Corrector法、Symplectic法 で調和振動子の時間発展を求めよ。それぞれの方法のサンプルプログラムを参考にしてもよい。
     
  2. 各種方法による結果をgnuplotを使ってグラフ化し、比較考察せよ。

    gnuplot
    .....
    gnuplot> set data style lines
    gnuplot> plot 'fort.10' u 1:2           t - p(t) のプロット
    gnuplot> plot 'fort.10' u 1:3           t - q(t) のプロット
    gnuplot> plot 'fort.10' u 1:4           t - e(t) のプロット(eは全エネルギー=保存すべき量であることに注意)
    gnuplot> plot 'fort.10' u 2:3           p(t) - q(t) のパラメトリックプロット(厳密解は(p2+q2)/2=e(0)の円であることに注意)
     
  3. Symplectic法による結果の特徴を考察せよ。影のハミルトニアン

    H' = H + dt/2 pq

    が(十分正確に)保存していることを確認せよ。

     
  4. 4次のRunge-Kutta法、及び1次のSymplectic法を用いて以下の非調和振動子の時間発展を求めよ。

    H = p2/2 + q4/4

    初期条件 [p0, q0] = [2n, 0], n=0,1,2,3,... として結果を考察せよ。
     
  5. (アドバンストな自習問題)電場(E)磁場(B)中での電子(質量m、電荷-q)の運動を考える。適当な摩擦(係数g)を取り入れた運動方程式は

    dx/dt = v
    m dv/dt = qv x B - gv + qE

    で与えられる。
    B
    = [0, 0, 1], E = [cos(t), 0, 0], m = q = g = 1
    初期条件 x0 = [0,0,0], v0 = [v0, 0, 0], [0, v0, 0] として結果を考察せよ。