内部エネルギーとエンタルピーは熱力学における最も基本的な状態量です。内部エネルギーは系の持つミクロなエネルギーの総和であり、エンタルピーは定圧過程を自然に記述するために導入される量です。
本記事では、両者の定義、物理的意味、比熱との関係を導出し、理想気体における具体的な計算を行います。
本記事の内容
- 内部エネルギー $U$ の定義と微視的解釈
- エンタルピー $H = U + pV$ の導入と意味
- 定容比熱 $c_v$ と定圧比熱 $c_p$
- 理想気体での $U$ と $H$ の性質
- Pythonでの計算と可視化
前提知識
この記事を読む前に、以下の記事を読んでおくと理解が深まります。
内部エネルギー $U$
定義
内部エネルギー $U$ は、系を構成するすべての分子の運動エネルギーとポテンシャルエネルギーの総和です。
$$ U = \sum_i \left( \frac{1}{2}m_i v_i^2 + \phi_i \right) $$
ここで $m_i$ は分子 $i$ の質量、$v_i$ はその速さ、$\phi_i$ は分子間相互作用のポテンシャルエネルギーです。
巨視的な運動エネルギー(系全体の並進・回転)やマクロな外部ポテンシャル(重力場中の位置エネルギーなど)は含みません。
微視的解釈
分子の運動エネルギーには以下の寄与があります。
| 運動モード | エネルギー(1分子あたり) | 自由度 |
|---|---|---|
| 並進運動(3方向) | $\frac{3}{2}k_BT$ | 3 |
| 回転運動(直線分子: 2軸) | $k_BT$ | 2 |
| 振動モード(1モード) | $k_BT$(高温) | 2 |
等分配の法則より、各自由度あたり $\frac{1}{2}k_BT$ のエネルギーが配分されます。自由度 $f$ の理想気体分子 $N$ 個の内部エネルギーは:
$$ U = N \cdot \frac{f}{2}k_BT = n \cdot \frac{f}{2}RT $$
ここで $n$ はモル数、$R = N_A k_B$ は気体定数です。
状態量としての性質
$U$ は状態量であるため:
$$ \oint dU = 0 $$
理想気体では $U$ は温度のみの関数です。
$$ U = U(T) \quad \text{(理想気体)} $$
これはジュールの自由膨張実験で確認されました。真空中へ自由膨張した理想気体は温度が変化しません($\Delta T = 0$, $W = 0$, $Q = 0$ より $\Delta U = 0$)。
エンタルピー $H$
定義
エンタルピーは次のように定義されます。
$$ \boxed{H = U + pV} $$
$U$, $p$, $V$ がすべて状態量であるため、$H$ も状態量です。
エンタルピーの微分
$H = U + pV$ の全微分を取ると:
$$ \begin{align} dH &= dU + d(pV) \\ &= dU + p\,dV + V\,dp \end{align} $$
第1法則 $dU = \delta Q – p\,dV$(準静的過程)を代入すると:
$$ \begin{align} dH &= (\delta Q – p\,dV) + p\,dV + V\,dp \\ &= \delta Q + V\,dp \end{align} $$
$$ \boxed{dH = \delta Q + V\,dp} $$
定圧過程での意味
定圧過程($dp = 0$)では:
$$ dH = \delta Q_p $$
$$ \Delta H = Q_p $$
つまり、定圧過程で系に加えた熱はエンタルピーの変化に等しい。これがエンタルピーの最も重要な物理的意味です。
化学反応や相変化は多くの場合、大気圧(定圧)下で起こるため、エンタルピーは化学熱力学で特に重要な役割を果たします。
定容比熱 $c_v$ と定圧比熱 $c_p$
定容比熱
定容過程で $Q_V = \Delta U$ であったことから、定容モル比熱は:
$$ c_v = \frac{1}{n}\left(\frac{\partial U}{\partial T}\right)_V $$
定圧比熱
定圧過程で $Q_p = \Delta H$ であったことから、定圧モル比熱は:
$$ c_p = \frac{1}{n}\left(\frac{\partial H}{\partial T}\right)_p $$
理想気体での比熱
理想気体では $U = U(T)$ なので:
$$ dU = nc_v \, dT $$
エンタルピーは:
$$ \begin{align} H &= U + pV = U + nRT \\ dH &= dU + nR\,dT = nc_v\,dT + nR\,dT = n(c_v + R)\,dT \end{align} $$
一方 $dH = nc_p\,dT$ であるから:
$$ \boxed{c_p = c_v + R} \quad \text{(理想気体のマイヤーの関係式)} $$
これはマイヤーの関係式と呼ばれ、次の記事でより詳しく扱います。
自由度との関係
自由度 $f$ の理想気体では:
$$ \begin{align} c_v &= \frac{f}{2}R \\ c_p &= \frac{f+2}{2}R \\ \gamma &= \frac{c_p}{c_v} = \frac{f+2}{f} \end{align} $$
| 分子の種類 | 自由度 $f$ | $c_v$ | $c_p$ | $\gamma$ |
|---|---|---|---|---|
| 単原子(He, Ar) | 3 | $\frac{3}{2}R$ | $\frac{5}{2}R$ | $5/3 \approx 1.67$ |
| 二原子($N_2$, $O_2$) | 5 | $\frac{5}{2}R$ | $\frac{7}{2}R$ | $7/5 = 1.40$ |
| 多原子($CO_2$) | 6 | $3R$ | $4R$ | $4/3 \approx 1.33$ |
Pythonでの実装
import numpy as np
import matplotlib.pyplot as plt
R = 8.314 # 気体定数 [J/(mol·K)]
# 各分子タイプの自由度と比熱
molecules = {
'単原子 (He, Ar)': {'f': 3, 'color': 'blue'},
'二原子 ($N_2$, $O_2$)': {'f': 5, 'color': 'red'},
'多原子 ($CO_2$)': {'f': 6, 'color': 'green'},
}
fig, axes = plt.subplots(1, 3, figsize=(16, 5))
# --- (1) U(T) と H(T) の比較 ---
T = np.linspace(100, 800, 300)
n = 1.0 # 1 mol
for name, props in molecules.items():
f = props['f']
cv = f / 2 * R
cp = (f + 2) / 2 * R
U = n * cv * T
H = n * cp * T
axes[0].plot(T, U / 1000, color=props['color'], linewidth=2, linestyle='-',
label=f'{name}: $U$')
axes[0].plot(T, H / 1000, color=props['color'], linewidth=2, linestyle='--',
label=f'{name}: $H$')
axes[0].set_xlabel('Temperature $T$ [K]')
axes[0].set_ylabel('Energy [kJ/mol]')
axes[0].set_title('$U(T)$ and $H(T)$ for Ideal Gases')
axes[0].legend(fontsize=7, ncol=2)
axes[0].grid(True, alpha=0.3)
# --- (2) 比熱 cv, cp のバーチャート ---
labels = []
cv_vals = []
cp_vals = []
colors = []
for name, props in molecules.items():
f = props['f']
cv_vals.append(f / 2 * R)
cp_vals.append((f + 2) / 2 * R)
labels.append(name.split('(')[0].strip())
colors.append(props['color'])
x = np.arange(len(labels))
width = 0.3
bars1 = axes[1].bar(x - width/2, cv_vals, width, color='steelblue', alpha=0.8, label='$c_v$')
bars2 = axes[1].bar(x + width/2, cp_vals, width, color='coral', alpha=0.8, label='$c_p$')
# R の差を矢印で表示
for i in range(len(labels)):
axes[1].annotate('', xy=(x[i] + width/2, cp_vals[i]),
xytext=(x[i] + width/2, cv_vals[i]),
arrowprops=dict(arrowstyle='<->', color='black', lw=1.5))
axes[1].text(x[i] + width/2 + 0.08, (cv_vals[i] + cp_vals[i]) / 2,
'$R$', fontsize=10, va='center')
axes[1].set_xticks(x)
axes[1].set_xticklabels(labels, fontsize=9)
axes[1].set_ylabel('Molar Heat Capacity [J/(mol·K)]')
axes[1].set_title('$c_v$ and $c_p$ ($c_p - c_v = R$)')
axes[1].legend()
axes[1].grid(True, alpha=0.3, axis='y')
# --- (3) 定容加熱 vs 定圧加熱のエネルギーフロー ---
f = 5 # 二原子分子
cv = f / 2 * R
cp = (f + 2) / 2 * R
T1, T2 = 300, 500
dT = T2 - T1
Q_V = n * cv * dT
Q_p = n * cp * dT
W_p = n * R * dT
dU = n * cv * dT
dH = n * cp * dT
# スタックバー
processes = ['定容過程', '定圧過程']
bottom_vals = [dU, dU]
top_vals = [0, W_p]
axes[2].bar(processes, bottom_vals, color='steelblue', alpha=0.8, label='$\\Delta U$ (内部エネルギー変化)')
axes[2].bar(processes, top_vals, bottom=bottom_vals, color='coral', alpha=0.8, label='$W = p\\Delta V$ (仕事)')
# Q の線
axes[2].plot([-0.4, 0.4], [Q_V, Q_V], 'k-', linewidth=2)
axes[2].plot([0.6, 1.4], [Q_p, Q_p], 'k-', linewidth=2)
axes[2].text(0, Q_V + 100, f'$Q_V = {Q_V:.0f}$ J', ha='center', fontsize=10)
axes[2].text(1, Q_p + 100, f'$Q_p = {Q_p:.0f}$ J', ha='center', fontsize=10)
axes[2].set_ylabel('Energy [J]')
axes[2].set_title(f'Energy Flow ($N_2$, {T1}→{T2} K)')
axes[2].legend()
axes[2].grid(True, alpha=0.3, axis='y')
plt.tight_layout()
plt.savefig('internal_energy_enthalpy.png', dpi=150, bbox_inches='tight')
plt.show()
# 数値結果
print("=== 二原子理想気体 (N₂), 300→500 K, 1 mol ===")
print(f"cv = {cv:.3f} J/(mol·K)")
print(f"cp = {cp:.3f} J/(mol·K)")
print(f"cp - cv = {cp - cv:.3f} J/(mol·K) = R = {R:.3f} ✓")
print(f"γ = cp/cv = {cp/cv:.4f}")
print(f"\n定容過程: Q_V = ΔU = {Q_V:.1f} J, W = 0")
print(f"定圧過程: Q_p = ΔH = {Q_p:.1f} J, W = {W_p:.1f} J, ΔU = {dU:.1f} J")
print(f"検証: Q_p = ΔU + W = {dU + W_p:.1f} J ✓")
まとめ
本記事では、内部エネルギーとエンタルピーについて解説しました。
- 内部エネルギー $U$: 分子の運動エネルギーとポテンシャルエネルギーの総和。理想気体では $U = U(T)$
- エンタルピー $H = U + pV$: 定圧過程での熱移動を表す状態量。$Q_p = \Delta H$
- 定容比熱: $c_v = \frac{1}{n}\left(\frac{\partial U}{\partial T}\right)_V = \frac{f}{2}R$
- 定圧比熱: $c_p = \frac{1}{n}\left(\frac{\partial H}{\partial T}\right)_p = \frac{f+2}{2}R$
- マイヤーの関係: $c_p – c_v = R$(理想気体)
次のステップとして、以下の記事も参考にしてください。