エントロピーは熱力学第2法則を定量的に表現する状態量です。「乱雑さの尺度」と言われることがありますが、より正確には不可逆性の度合いを測る量です。
本記事の内容
- エントロピーの熱力学的定義
- 理想気体のエントロピー変化
- エントロピー増大則
- T-S線図の読み方
- Pythonでの可視化
前提知識
エントロピーの定義
可逆過程において、微小な熱の授受 $\delta Q_{\text{rev}}$ と絶対温度 $T$ を用いて:
$$ \boxed{dS = \frac{\delta Q_{\text{rev}}}{T}} $$
状態1から状態2へのエントロピー変化:
$$ \Delta S = S_2 – S_1 = \int_1^2 \frac{\delta Q_{\text{rev}}}{T} $$
エントロピーは状態量なので、経路によらず始状態と終状態のみで決まります。
理想気体のエントロピー変化
Tdsの関係式
第1法則 $dU = \delta Q – p \, dV$ に $\delta Q_{\text{rev}} = TdS$ を代入:
$$ TdS = dU + pdV = nC_v dT + p \, dV $$
理想気体 $pV = nRT$ を用いると:
$$ dS = nC_v \frac{dT}{T} + nR\frac{dV}{V} $$
積分すると:
$$ \boxed{\Delta S = nC_v \ln\frac{T_2}{T_1} + nR\ln\frac{V_2}{V_1}} $$
$p$ と $T$ で表す場合:
$$ \Delta S = nC_p \ln\frac{T_2}{T_1} – nR\ln\frac{p_2}{p_1} $$
各過程のエントロピー変化
| 過程 | $\Delta S$ |
|---|---|
| 等温 ($T$ 一定) | $nR\ln(V_2/V_1)$ |
| 等容 ($V$ 一定) | $nC_v\ln(T_2/T_1)$ |
| 等圧 ($p$ 一定) | $nC_p\ln(T_2/T_1)$ |
| 断熱可逆 | $0$(等エントロピー) |
エントロピー増大則
孤立系のエントロピーは決して減少しません:
$$ \boxed{\Delta S_{\text{isolated}} \geq 0} $$
等号は可逆過程の場合に成立し、不等号は不可逆過程を表します。
具体例:熱伝導
温度 $T_H$ の物体から温度 $T_L$ の物体へ熱量 $Q$ が移動する場合:
$$ \Delta S = -\frac{Q}{T_H} + \frac{Q}{T_L} = Q\left(\frac{1}{T_L} – \frac{1}{T_H}\right) > 0 $$
$T_H > T_L$ なので $\Delta S > 0$(不可逆過程)。
T-S線図
T-S線図では、曲線の下の面積が熱量を表します:
$$ Q = \int T \, dS $$
可逆断熱過程は垂直線($\Delta S = 0$)、等温過程は水平線で表されます。
Pythonでの可視化
import numpy as np
import matplotlib.pyplot as plt
fig, axes = plt.subplots(1, 3, figsize=(16, 5))
# (1) 理想気体の各過程のT-S線図
n = 1; Cv = 5/2 * 8.314; Cp = 7/2 * 8.314; R = 8.314
T0, S0 = 300, 0
# 等圧加熱
T_cp = np.linspace(300, 600, 100)
S_cp = n * Cp * np.log(T_cp / T0)
# 等容加熱
T_cv = np.linspace(300, 600, 100)
S_cv = n * Cv * np.log(T_cv / T0)
# 等温膨張
S_iso = np.linspace(0, 15, 100)
T_iso = np.ones_like(S_iso) * T0
axes[0].plot(S_cp, T_cp, 'b-', lw=2.5, label='Isobaric ($C_p$)')
axes[0].plot(S_cv, T_cv, 'r-', lw=2.5, label='Isochoric ($C_v$)')
axes[0].plot(S_iso, T_iso, 'g-', lw=2.5, label='Isothermal')
axes[0].axvline(0, color='gray', ls='--', alpha=0.5, label='Adiabatic rev.')
axes[0].set_xlabel('$\\Delta S$ [J/K]', fontsize=12)
axes[0].set_ylabel('$T$ [K]', fontsize=12)
axes[0].set_title('T-S diagram for ideal gas', fontsize=13)
axes[0].legend(fontsize=10); axes[0].grid(True, alpha=0.3)
# (2) 熱伝導によるエントロピー生成
T_H = 500 # 高温体 [K]
T_L_range = np.linspace(100, 499, 200)
Q_transfer = 1000 # 移動熱量 [J]
dS = Q_transfer * (1/T_L_range - 1/T_H)
axes[1].plot(T_L_range, dS, 'r-', lw=2.5)
axes[1].axhline(0, color='k', lw=0.5)
axes[1].set_xlabel('Cold body temperature $T_L$ [K]', fontsize=12)
axes[1].set_ylabel('Entropy generation $\\Delta S$ [J/K]', fontsize=12)
axes[1].set_title(f'Entropy generation ($T_H$={T_H}K, Q={Q_transfer}J)', fontsize=13)
axes[1].grid(True, alpha=0.3)
# (3) エントロピー変化 vs 体積比(等温過程)
V_ratio = np.linspace(0.5, 5, 200)
dS_iso = n * R * np.log(V_ratio)
axes[2].plot(V_ratio, dS_iso, 'b-', lw=2.5)
axes[2].axhline(0, color='k', lw=0.5)
axes[2].axvline(1, color='gray', ls='--', alpha=0.5)
axes[2].set_xlabel('Volume ratio $V_2/V_1$', fontsize=12)
axes[2].set_ylabel('$\\Delta S$ [J/K]', fontsize=12)
axes[2].set_title('Isothermal entropy change', fontsize=13)
axes[2].grid(True, alpha=0.3)
plt.tight_layout()
plt.show()
まとめ
- エントロピーの定義: $dS = \delta Q_{\text{rev}}/T$(状態量)
- 理想気体: $\Delta S = nC_v\ln(T_2/T_1) + nR\ln(V_2/V_1)$
- エントロピー増大則: 孤立系で $\Delta S \geq 0$
- T-S線図: 曲線下の面積が熱量 $Q = \int T \, dS$
次のステップとして、以下の記事も参考にしてください。