理想気体の状態方程式 $pV = nRT$ は、熱力学で最も頻繁に使われる関係式です。この式は、ボイル・シャルル・アボガドロの法則を統合したものであり、また気体分子運動論から微視的にも導出できます。
本記事では、経験法則からの帰納的な導出と、分子運動論からの演繹的な導出の両方を解説し、さらに実在気体への拡張(ファンデルワールス方程式)との比較を行います。
本記事の内容
- ボイル・シャルル・アボガドロの法則
- 理想気体の状態方程式 $pV = nRT$ の導出
- 気体分子運動論からの微視的導出
- 実在気体とファンデルワールス方程式
- Pythonでの比較と可視化
前提知識
この記事を読む前に、以下の記事を読んでおくと理解が深まります。
経験法則
ボイルの法則(1662年)
温度一定のとき、気体の圧力と体積は反比例します。
$$ pV = \text{const} \quad (T = \text{const}) $$
シャルルの法則(1787年)
圧力一定のとき、気体の体積は絶対温度に比例します。
$$ \frac{V}{T} = \text{const} \quad (p = \text{const}) $$
アボガドロの法則(1811年)
同温同圧のとき、同体積の気体には同数の分子が含まれます。
$$ \frac{V}{n} = \text{const} \quad (T, p = \text{const}) $$
状態方程式の導出
3つの法則を統合します。
ボイルの法則より $V \propto \frac{1}{p}$($T$, $n$ 一定)。
シャルルの法則より $V \propto T$($p$, $n$ 一定)。
アボガドロの法則より $V \propto n$($T$, $p$ 一定)。
これらをまとめると:
$$ V \propto \frac{nT}{p} $$
比例定数を $R$(気体定数)とおくと:
$$ V = \frac{nRT}{p} $$
$$ \boxed{pV = nRT} $$
ここで $R = 8.314$ J/(mol·K) は普遍気体定数です。
1 mol の理想気体は標準状態($T = 273.15$ K, $p = 101325$ Pa)で体積 $V_m = 22.414$ L を占めます。
$$ R = \frac{pV_m}{T} = \frac{101325 \times 0.022414}{273.15} = 8.314 \text{ J/(mol·K)} $$
気体分子運動論からの導出
より根本的な立場として、分子の運動から圧力を計算して状態方程式を導出します。
仮定
- 気体は多数の同一分子からなる
- 分子の大きさは容器に比べて十分小さい(点粒子)
- 分子間に引力・斥力は働かない(衝突時を除く)
- 容器壁との衝突は完全弾性衝突
- 分子の運動はランダムで等方的
圧力の導出
一辺 $L$ の立方体容器を考えます。質量 $m$ の分子が $x$ 方向に速度 $v_x$ で壁に衝突すると、運動量変化は:
$$ \Delta p_x = 2m v_x $$
壁と壁の間を往復する時間は $\Delta t = \frac{2L}{v_x}$ なので、1分子が壁に及ぼす力は:
$$ F_1 = \frac{\Delta p_x}{\Delta t} = \frac{2m v_x}{2L / v_x} = \frac{m v_x^2}{L} $$
$N$ 分子の寄与を合計し、面積 $A = L^2$ で割ると圧力になります。
$$ p = \frac{1}{A} \sum_{i=1}^{N} \frac{m v_{x,i}^2}{L} = \frac{Nm}{L^3} \langle v_x^2 \rangle = \frac{Nm}{V} \langle v_x^2 \rangle $$
等方性より $\langle v_x^2 \rangle = \langle v_y^2 \rangle = \langle v_z^2 \rangle = \frac{1}{3}\langle v^2 \rangle$ なので:
$$ p = \frac{Nm}{3V} \langle v^2 \rangle = \frac{N}{3V} m \langle v^2 \rangle $$
$$ \boxed{pV = \frac{1}{3}Nm\langle v^2 \rangle = \frac{2}{3}N \left\langle \frac{1}{2}mv^2 \right\rangle = \frac{2}{3}N\langle E_k \rangle} $$
温度との関係
理想気体の状態方程式 $pV = nRT = Nk_BT$ と比較すると:
$$ \frac{2}{3}N\langle E_k \rangle = Nk_BT $$
$$ \boxed{\langle E_k \rangle = \frac{1}{2}m\langle v^2 \rangle = \frac{3}{2}k_BT} $$
この式は、温度は分子の平均運動エネルギーの尺度であるという微視的な解釈を与えます。
二乗平均速度は:
$$ v_{\text{rms}} = \sqrt{\langle v^2 \rangle} = \sqrt{\frac{3k_BT}{m}} = \sqrt{\frac{3RT}{M}} $$
ここで $M$ はモル質量です。
実在気体とファンデルワールス方程式
実在気体は理想気体からずれます。主な原因は以下の2つです。
- 分子間引力: 分子同士が引き合い、壁を押す力が減少する
- 分子自身の体積: 分子が有限の大きさを持ち、自由に動ける体積が減少する
ファンデルワールスは、これらの補正を加えた状態方程式を提案しました。
$$ \boxed{\left(p + \frac{a}{V_m^2}\right)(V_m – b) = RT} $$
ここで $V_m = V/n$ はモル体積、$a$ は分子間引力の補正定数、$b$ は分子の排除体積です。
| 気体 | $a$ [Pa·m$^6$/mol$^2$] | $b$ [m$^3$/mol] |
|---|---|---|
| He | 0.003457 | 2.370e-5 |
| $N_2$ | 0.1408 | 3.913e-5 |
| $CO_2$ | 0.3640 | 4.267e-5 |
| $H_2O$ | 0.5536 | 3.049e-5 |
Pythonでの実装
import numpy as np
import matplotlib.pyplot as plt
R = 8.314 # 気体定数 [J/(mol·K)]
fig, axes = plt.subplots(1, 3, figsize=(16, 5))
# --- (1) ボイル・シャルル・アボガドロの法則 ---
# ボイルの法則: pV = const (T固定)
V = np.linspace(0.5, 5, 200)
temperatures = [200, 300, 400, 500]
n = 1.0
for T in temperatures:
p = n * R * T / V # 圧力 [Pa](Vはリットル相当にスケーリング)
axes[0].plot(V, p, linewidth=2, label=f'$T = {T}$ K')
axes[0].set_xlabel('Volume $V$ [arb. units]')
axes[0].set_ylabel('Pressure $p$ [arb. units]')
axes[0].set_title("Boyle's Law: $pV = nRT$")
axes[0].legend()
axes[0].grid(True, alpha=0.3)
axes[0].set_xlim(0.5, 5)
axes[0].set_ylim(0, 8000)
# --- (2) 理想気体 vs ファンデルワールス気体 (CO2) ---
a_CO2 = 0.3640 # Pa·m^6/mol^2
b_CO2 = 4.267e-5 # m^3/mol
T_list = [250, 304.2, 400] # 304.2 Kは臨界温度
colors_vdw = ['blue', 'red', 'green']
Vm = np.linspace(8e-5, 5e-4, 500) # モル体積 [m^3/mol]
for T, color in zip(T_list, colors_vdw):
# 理想気体
p_ideal = R * T / Vm
# ファンデルワールス
p_vdw = R * T / (Vm - b_CO2) - a_CO2 / Vm**2
axes[1].plot(Vm * 1e6, p_ideal / 1e6, color=color, linestyle='--', alpha=0.5)
axes[1].plot(Vm * 1e6, p_vdw / 1e6, color=color, linewidth=2,
label=f'$T = {T}$ K')
axes[1].set_xlabel('Molar Volume $V_m$ [cm$^3$/mol]')
axes[1].set_ylabel('Pressure $p$ [MPa]')
axes[1].set_title('Ideal Gas (dashed) vs van der Waals ($CO_2$)')
axes[1].legend()
axes[1].grid(True, alpha=0.3)
axes[1].set_ylim(0, 20)
# 臨界点の計算
Vc = 3 * b_CO2
pc = a_CO2 / (27 * b_CO2**2)
Tc = 8 * a_CO2 / (27 * R * b_CO2)
axes[1].plot(Vc * 1e6, pc / 1e6, 'ko', markersize=8, zorder=5)
axes[1].annotate(f'臨界点\n$T_c={Tc:.1f}$ K', (Vc * 1e6, pc / 1e6),
textcoords="offset points", xytext=(30, -10), fontsize=9,
arrowprops=dict(arrowstyle='->', color='black'))
# --- (3) 分子速度分布(マクスウェル-ボルツマン分布) ---
kB = 1.381e-23 # ボルツマン定数
def maxwell_boltzmann(v, m, T):
"""マクスウェル-ボルツマン速度分布"""
return 4 * np.pi * (m / (2 * np.pi * kB * T))**1.5 * v**2 * np.exp(-m * v**2 / (2 * kB * T))
gases = {
'He ($M=4$)': {'M': 4e-3, 'color': 'blue'},
'$N_2$ ($M=28$)': {'M': 28e-3, 'color': 'red'},
'$CO_2$ ($M=44$)': {'M': 44e-3, 'color': 'green'},
}
v = np.linspace(0, 2500, 500)
T = 300 # K
for name, props in gases.items():
m = props['M'] / 6.022e23 # 1分子の質量
f_v = maxwell_boltzmann(v, m, T)
v_rms = np.sqrt(3 * kB * T / m)
axes[2].plot(v, f_v * 1e3, color=props['color'], linewidth=2, label=name)
axes[2].axvline(x=v_rms, color=props['color'], linestyle='--', alpha=0.5)
axes[2].set_xlabel('Speed $v$ [m/s]')
axes[2].set_ylabel('Probability density $f(v)$ [×10$^{-3}$]')
axes[2].set_title(f'Maxwell-Boltzmann Distribution ($T = {T}$ K)')
axes[2].legend()
axes[2].grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('ideal_gas_equation.png', dpi=150, bbox_inches='tight')
plt.show()
# 数値結果
print("=== 臨界点(CO2、ファンデルワールス方程式から) ===")
print(f"臨界温度 Tc = {Tc:.1f} K(実測値: 304.2 K)")
print(f"臨界圧力 pc = {pc/1e6:.2f} MPa(実測値: 7.38 MPa)")
print(f"臨界モル体積 Vc = {Vc*1e6:.1f} cm³/mol")
print("\n=== 二乗平均速度 (T = 300 K) ===")
for name, props in gases.items():
v_rms = np.sqrt(3 * R * T / props['M'])
print(f"{name}: v_rms = {v_rms:.1f} m/s")
まとめ
本記事では、理想気体の状態方程式について解説しました。
- 経験法則: ボイル($pV = \text{const}$)、シャルル($V/T = \text{const}$)、アボガドロ($V/n = \text{const}$)の統合
- 理想気体の状態方程式: $pV = nRT$($R = 8.314$ J/(mol·K))
- 気体分子運動論: $pV = \frac{2}{3}N\langle E_k \rangle$、温度は分子の平均運動エネルギーの尺度
- ファンデルワールス方程式: $(p + a/V_m^2)(V_m – b) = RT$(分子間引力と排除体積を補正)
- 実在気体は高圧・低温で理想気体からの乖離が大きくなる
次のステップとして、以下の記事も参考にしてください。