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 としたサンプルプログラムを与える。
《演習》
- Euler法のサンプルプログラムを参考にして、Leap-Frog法、Runge-Kutta法、Predictor-Corrector法、Symplectic法 で調和振動子の時間発展を求めよ。それぞれの方法のサンプルプログラムを参考にしてもよい。
- 各種方法による結果を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)の円であることに注意)
- Symplectic法による結果の特徴を考察せよ。影のハミルトニアン
H' = H + dt/2 pq
が(十分正確に)保存していることを確認せよ。
- 4次のRunge-Kutta法、及び1次のSymplectic法を用いて以下の非調和振動子の時間発展を求めよ。
H = p2/2 + q4/4
初期条件 [p0, q0] = [2n, 0], n=0,1,2,3,... として結果を考察せよ。
- (アドバンストな自習問題)電場(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] として結果を考察せよ。