#概要
気体分子運動論から導かれる分布にマクスウェルの速度分布があります.
今回はその温度依存性および,質量依存性を確かめるグラフを描画してみました.
#動作環境
- Windows10(64bit)
- Python 3.7.2
マクスウェルの速度分布
マクスウェルの速度分布は以下の式で表されます.
P(v) = 4\pi v^2(\frac{m}{2\pi kT})^\frac{3}{2}\exp{-\frac{mv^2}{2kT}}
これより以下の様々な量が計算できます.
- 最確速さ
v_{mp} = \sqrt{\frac{2kT}{m}}
- 平均速度
<v> = \sqrt{\frac{8kT}{\pi m}} = \frac{2}{\sqrt{\pi}}v_{mp}
- 根二乗平均速度
v_{rms} = \sqrt{<v^2>} = \sqrt{\frac{3kT}{m}} = \sqrt{\frac{3}{2}}v_{mp}
#温度依存性
MVF_temperature.py
"""マクスウェルの速度分布の温度依存性を描画するプログラム"""
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
m = 1.67 * 10**-27 # 中性子の質量 [kg]
k = 1.38 * 10**-23 # ボルツマン定数 [J/K]
def Maxwell(a):
return (2/np.pi)**(1/2) * (v**2*np.exp(-v**2/(2*a**2))/a**3)
fig, ax = plt.subplots()
T = np.array([100*i for i in range(0,11)]) #温度Tの設定
T = T.reshape(1, T.size) #一次元配列はreshape()してから
T = T.T #転置する
v = np.linspace(0, 10000, 10000)
a_ = (k*T/m)**(1/2)
p = Maxwell(a_)
ax.set_xlabel(r'$v$')
ax.set_ylabel(r'$p(v)$')
ax.set_title('Maxwell velocity distribution')
ax.grid()
for i in range(0,T.size):
l = str(T[i]) #T[i]はnumpy.ndarray型なので文字列型に変換
l = l[1:-1] + "K" #T[i]は[hoge]となっているのでhogeだけ取り出す
ax.plot(v, p[i], color=cm.jet(i/T.size), label=l) #jet()の引数は0から1の実数
ax.legend(loc=0)
fig.tight_layout()
plt.show()
実行結果は以下のようになります.温度が高い方が,分子はエネルギーをたくさん持っており,元気に飛び回っているので,速度分布も速度方向に広がりが大きくなることがわかりますね.
質量依存性
MVF_mass.py
"""マクスウェルの速度分布の温度依存性を描画するプログラム"""
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
m_p = 1.67 * 10**-27 # 中性子の質量 [kg]
k = 1.38 * 10**-23 # ボルツマン定数 [J/K]
T = 300 # 温度[K]
def Maxwell(a):
return (2/np.pi)**(1/2) * (v**2*np.exp(-v**2/(2*a**2))/a**3)
fig, ax = plt.subplots()
m = np.array([i*m_p for i in range(1,11)]) #温度Tの設定
m = m.reshape(1, m.size) #一次元配列はreshape()してから
m = m.T #転置する
v = np.linspace(0, 5000, 10000)
a_ = (k*T/m)**(1/2)
p = Maxwell(a_)
ax.set_xlabel(r'$v$')
ax.set_ylabel(r'$p(v)$')
ax.set_title('Maxwell velocity distribution')
ax.grid()
for i in range(0,m.size):
l = str(int(m[i]/m_p))
l = l + r'$m_p$' +'kg'
ax.plot(v, p[i], color=cm.jet(i/m.size), label=l) #jet()の引数は0から1の実数
ax.legend(loc=0)
fig.tight_layout()
plt.show()
実行結果は以下のようになります.質量が小さい方が,分子は身軽なので運動しやすく,速度分布も速度方向に広がりが大きくなることがわかりますね.
#まとめ
いかがだったでしょうか?今回は,マクスウェルの速度分布の温度依存性と質量依存性を描画して確認してみました.
式を追うだけでなく,実際にグラフを書いてみることで発見することや理解が深まることもありますよね.
コードに関して何か建設的なフィードバックなどあればコメントいただけると助かります.