
はじめに
一様な磁界の中に斜めに電荷を持つ粒子を発射すると円運動と等速直線運動を合わせた運動であるらせん運動をすることが知られている。今回は、そのことについて各時間ごとに微分方程式を解くことにより粒子の運動をシミュレーション可能かを考察する。具体的には、微分という操作を差分と置き換えて解く。(今回のプログラムはシミュレーションなので計算量が比較的多い。ゆえに、実行する場合は注意したい。)
今回やること
今回は一つの荷電子の運動の様子を以下のアルゴリズムを実行することによりシミュレーションすることを試みる。
1.運動方程式から、時刻tのときの加速度aを求める
2.微小時間⊿t経過後の速度vと位置xを求める
3.1と2を繰り返し行うことによって時刻t=0から時刻t=tまでの運動の様子を再現する
問題設定
一様な磁場がかかっている空間に粒子を磁場に対して斜め方向に発射させるとする。ただし、磁束密度はBである。
まず、粒子に働く力つまり、ローレンツ力に対する運動方程式を以下に示す。(質量はm,電荷はqとした)
ゆえに、加速度は以下のように表せる。
次に、時刻tにおいてΔtだけ経過したときの粒子の位置と速度は、以下のように表せる。
(ただし、微小区間では、速度と加速度の変化は無視できるほど小さいものとする)
位置の変化
速度の変化
これを目的の時刻tになるまで繰り返すことによって粒子の運動をシミュレーションすることができるはずである。
シミュレーション
それでは、シミュレーションをしてみる。以下のPythonプログラムを実行する。
今回は、t=0からt=10まで0.01ステップごとに微分方程式を解き粒子の位置をプロットしていく。
import numpy as np import matplotlib.pyplot as plt #パラメータ B=np.array([0,0,1]) q=1.0 m=1.0 #初期条件 (x,v,a)=(位置,速度,加速度) x=np.array([1,0,0]) #斜め上に発射 v=np.array([0,1,1]) a=np.array([-1,0,0]) #3次元のグラフ(散布図)を描くための設定 fig = plt.figure() ax = fig.add_subplot(projection='3d') #初期時間 t=0 #微小時間の時間間隔(小さくするほど精度は上がるが計算時間が比例して増大する) delta_t=0.01 while(t<10): #速度の微小変化 v=v+a*delta_t #位置の微小変化 x=x+v*delta_t #ローレンツ力によって生じる加速度,cross(v,B)はvとBの外積である a=-(q/m)*np.cross(v, B) #時間の更新 t=t+delta_t #print(x) #粒子の位置を記録 ax.scatter(x[0], x[1], x[2], color='blue') #グラフを保存する plt.savefig("rasen.png") #グラフの表示 plt.show()
出力される画像は以下の通りである。
このように、粒子の軌跡は磁場の方向を軸としたらせん運動をすることが分かる。
まとめ
ローレンツ力が粒子に働くと、その粒子は円運動、もしくはらせん運動をする。これは、ローレンツ力が向心力となるからである。電験1,2種理論では、らせん運動をすることを運動方程式から示すことができなければ高得点は望めない。というのも、このテーマは電子理論の問題として頻出中の頻出だからである。なので、今回のテーマを受け入れてアルゴリズムをじっくり味わって欲しい。このような微小区間を扱う問題は電験理論でもレベルが高いが出題はされている。なので、試験に余裕のある方はぜひとも実際にプログラムをいじって自分のものにしていただけたら幸いである。このような1つの粒子のらせん運動でさえ数分の計算時間を要するのだから、実際の分子や原子同士の相互作用を調べるシミュレーションは大変むずかしそうである。
コメント