熱力学第1法則(エネルギー保存)を数式で理解する

熱力学第1法則は、エネルギー保存則の熱力学的な表現です。「エネルギーは生まれも消えもしない。形を変えるだけだ」という自然界の根本原理を、熱と仕事と内部エネルギーの関係として定式化します。

この法則は、エンジンの効率計算、冷凍サイクルの設計、化学反応のエネルギー収支、宇宙機の熱制御など、工学のあらゆる場面で基盤となります。本記事では、第1法則の数学的な表現から、各種熱力学過程への適用を丁寧に解説します。

本記事の内容

  • 熱力学第1法則の数学的定式化
  • 状態量と経路量の区別
  • 各種過程(定容・定圧・等温・断熱)への適用
  • 理想気体での具体的な計算
  • Pythonでのp-V図の可視化

前提知識

この記事を読む前に、以下の概念を理解しておくと良いでしょう。

  • 理想気体の状態方程式 $pV = nRT$
  • エネルギーの基本概念

基本概念

系(System)と外界(Surroundings)

  • : 注目する対象(例:シリンダー内のガス)
  • 外界: 系以外のすべて
  • 境界: 系と外界の境目

状態量と経路量

  • 状態量(state function): 系の状態だけで決まる量。経路に依存しない。例: 温度 $T$、圧力 $p$、体積 $V$、内部エネルギー $U$
  • 経路量(path function): 過程の経路に依存する量。例: 熱 $Q$、仕事 $W$

微小変化において、状態量は完全微分 $dU$、経路量は不完全微分 $\delta Q$, $\delta W$ と書きます。

熱力学第1法則

定式化

$$ \begin{equation} dU = \delta Q – \delta W \end{equation} $$

有限の過程では:

$$ \begin{equation} \Delta U = Q – W \end{equation} $$

ここで: – $\Delta U$: 内部エネルギーの変化 – $Q$: 系に加えられた熱(正: 系が熱を受け取る) – $W$: 系がした仕事(正: 系が外界に仕事をする)

符号の約束

$Q$ 系が熱を受け取る 系が熱を放出する
$W$ 系が仕事をする 外界が系に仕事をする

注意: 教科書によって $dU = \delta Q + \delta W$($W$ が系にされた仕事)の符号規約もあります。

仕事の表現

準静的過程(ゆっくりと平衡を保ちながら進む過程)では、体積変化による仕事は:

$$ \begin{equation} \delta W = p \, dV \end{equation} $$

$$ W = \int_{V_1}^{V_2} p \, dV $$

これはp-V図における 曲線の下の面積 に等しくなります。

理想気体の内部エネルギー

理想気体の内部エネルギーは温度のみの関数です:

$$ U = U(T) $$

$$ dU = nC_v \, dT $$

ここで $C_v$ は定容モル比熱です。

比熱の関係

理想気体では以下の関係(マイヤーの関係式)が成り立ちます:

$$ \begin{equation} C_p – C_v = R \end{equation} $$

比熱比 $\gamma = C_p / C_v$ を定義します。単原子理想気体では $\gamma = 5/3$、2原子理想気体では $\gamma = 7/5$ です。

各種熱力学過程

1. 定容過程(Isochoric, $V = \text{const}$)

$dV = 0$ なので $W = 0$:

$$ \begin{align} \Delta U &= Q_v \\ Q_v &= nC_v \Delta T \end{align} $$

加えた熱がすべて内部エネルギーの増加になります。

2. 定圧過程(Isobaric, $p = \text{const}$)

$$ W = p\Delta V = p(V_2 – V_1) = nR\Delta T $$

$$ \begin{align} Q_p &= \Delta U + W = nC_v\Delta T + nR\Delta T = nC_p\Delta T \end{align} $$

エンタルピー $H = U + pV$ を導入すると:

$$ Q_p = \Delta H = nC_p\Delta T $$

3. 等温過程(Isothermal, $T = \text{const}$)

$\Delta T = 0$ なので $\Delta U = 0$(理想気体):

$$ Q = W = \int_{V_1}^{V_2} p \, dV = \int_{V_1}^{V_2} \frac{nRT}{V} dV = nRT \ln\frac{V_2}{V_1} $$

加えた熱がすべて仕事に変換されます。

4. 断熱過程(Adiabatic, $Q = 0$)

$$ dU = -\delta W \implies nC_v dT = -p \, dV $$

理想気体の状態方程式と組み合わせると、ポアソンの関係式が得られます:

$$ \begin{equation} pV^\gamma = \text{const} \end{equation} $$

$$ TV^{\gamma-1} = \text{const} $$

導出:

$$ \begin{align} nC_v dT &= -p \, dV = -\frac{nRT}{V} dV \\ \frac{dT}{T} &= -\frac{R}{C_v} \frac{dV}{V} = -(\gamma – 1) \frac{dV}{V} \\ \ln T &= -(\gamma – 1)\ln V + \text{const} \\ TV^{\gamma-1} &= \text{const} \end{align} $$

断熱過程での仕事:

$$ W = -\Delta U = -nC_v(T_2 – T_1) = \frac{p_1V_1 – p_2V_2}{\gamma – 1} $$

まとめ表

過程 条件 $Q$ $W$ $\Delta U$
定容 $V = \text{const}$ $nC_v\Delta T$ $0$ $nC_v\Delta T$
定圧 $p = \text{const}$ $nC_p\Delta T$ $p\Delta V$ $nC_v\Delta T$
等温 $T = \text{const}$ $nRT\ln\frac{V_2}{V_1}$ $nRT\ln\frac{V_2}{V_1}$ $0$
断熱 $Q = 0$ $0$ $-nC_v\Delta T$ $nC_v\Delta T$

Pythonでの実装

p-V図上の各種過程の可視化

import numpy as np
import matplotlib.pyplot as plt

# 理想気体のパラメータ
n = 1.0     # モル数
R = 8.314   # 気体定数 [J/(mol·K)]
gamma = 1.4  # 2原子分子

# 初期状態
T1 = 300   # K
p1 = 1e5   # Pa (1 atm)
V1 = n * R * T1 / p1

V = np.linspace(V1 * 0.5, V1 * 3, 500)

fig, axes = plt.subplots(1, 2, figsize=(14, 6))

# 左: 各過程のp-V図
# 等温過程
p_isothermal = n * R * T1 / V
axes[0].plot(V * 1e3, p_isothermal / 1e3, 'b-', linewidth=2, label=f'等温 (T={T1}K)')

# 断熱過程
p_adiabatic = p1 * (V1 / V)**gamma
axes[0].plot(V * 1e3, p_adiabatic / 1e3, 'r-', linewidth=2, label='断熱')

# 定圧過程
axes[0].axhline(y=p1/1e3, color='g', linewidth=2, label=f'定圧 (p={p1/1e3:.0f}kPa)')

# 定容過程
axes[0].axvline(x=V1*1e3, color='m', linewidth=2, label=f'定容 (V={V1*1e3:.1f}L)')

axes[0].plot(V1 * 1e3, p1 / 1e3, 'ko', markersize=10, label='初期状態')
axes[0].set_xlabel('体積 V [L]', fontsize=12)
axes[0].set_ylabel('圧力 p [kPa]', fontsize=12)
axes[0].set_title('p-V図上の各種過程', fontsize=14)
axes[0].legend(fontsize=10)
axes[0].grid(True, alpha=0.3)
axes[0].set_xlim(V[0]*1e3, V[-1]*1e3)
axes[0].set_ylim(0, 250)

# 右: 等温と断熱の仕事の比較
V2 = V1 * 2  # 体積を2倍に膨張

# 等温膨張の仕事
V_range = np.linspace(V1, V2, 200)
p_iso = n * R * T1 / V_range
W_isothermal = n * R * T1 * np.log(V2 / V1)

# 断熱膨張の仕事
p_adi = p1 * (V1 / V_range)**gamma
T2_adi = T1 * (V1 / V2)**(gamma - 1)
W_adiabatic = n * R * (T1 - T2_adi) / (gamma - 1)  # = -nCv(T2-T1)

axes[1].fill_between(V_range * 1e3, 0, p_iso / 1e3, alpha=0.3, color='blue',
                      label=f'等温仕事 = {W_isothermal:.1f} J')
axes[1].plot(V_range * 1e3, p_iso / 1e3, 'b-', linewidth=2)

axes[1].fill_between(V_range * 1e3, 0, p_adi / 1e3, alpha=0.3, color='red',
                      label=f'断熱仕事 = {W_adiabatic:.1f} J')
axes[1].plot(V_range * 1e3, p_adi / 1e3, 'r-', linewidth=2)

axes[1].set_xlabel('体積 V [L]', fontsize=12)
axes[1].set_ylabel('圧力 p [kPa]', fontsize=12)
axes[1].set_title('膨張仕事の比較(体積2倍)', fontsize=14)
axes[1].legend(fontsize=11)
axes[1].grid(True, alpha=0.3)

plt.tight_layout()
plt.show()

print(f"等温膨張: W = {W_isothermal:.1f} J, Q = {W_isothermal:.1f} J, ΔU = 0 J")
print(f"断熱膨張: W = {W_adiabatic:.1f} J, Q = 0 J, ΔU = {-W_adiabatic:.1f} J")
print(f"断熱膨張後の温度: {T2_adi:.1f} K")

エネルギー収支の可視化

import numpy as np
import matplotlib.pyplot as plt

# 各過程でのエネルギー収支を棒グラフで比較
n, R, T1 = 1.0, 8.314, 300
Cv = 5/2 * R  # 2原子分子
Cp = 7/2 * R
gamma = Cp / Cv
dT = 100  # 100K温度上昇

processes = ['定容\n(V=const)', '定圧\n(p=const)', '等温\n(T=const)', '断熱\n(Q=0)']

# 各過程のQ, W, ΔU
Q_vals = [n*Cv*dT, n*Cp*dT, n*R*T1*np.log(2), 0]
W_vals = [0, n*R*dT, n*R*T1*np.log(2), -n*Cv*dT]
dU_vals = [n*Cv*dT, n*Cv*dT, 0, n*Cv*dT]

x = np.arange(len(processes))
width = 0.25

fig, ax = plt.subplots(figsize=(12, 6))

bars1 = ax.bar(x - width, Q_vals, width, label='Q(熱)', color='red', alpha=0.7)
bars2 = ax.bar(x, W_vals, width, label='W(仕事)', color='blue', alpha=0.7)
bars3 = ax.bar(x + width, dU_vals, width, label='ΔU(内部エネルギー変化)', color='green', alpha=0.7)

ax.set_xlabel('熱力学過程', fontsize=12)
ax.set_ylabel('エネルギー [J]', fontsize=12)
ax.set_title('熱力学第1法則: Q = ΔU + W', fontsize=14)
ax.set_xticks(x)
ax.set_xticklabels(processes, fontsize=11)
ax.legend(fontsize=11)
ax.grid(True, alpha=0.3, axis='y')
ax.axhline(y=0, color='k', linewidth=0.5)

plt.tight_layout()
plt.show()

まとめ

本記事では、熱力学第1法則について解説しました。

  • 熱力学第1法則: $\Delta U = Q – W$(エネルギー保存則)
  • 状態量($U, T, p, V$)は経路に依存しない、経路量($Q, W$)は過程に依存する
  • 定容過程: $W = 0$、$Q_v = nC_v\Delta T$
  • 定圧過程: $Q_p = nC_p\Delta T$、エンタルピー $H = U + pV$ が便利
  • 等温過程: $\Delta U = 0$、$Q = W = nRT\ln(V_2/V_1)$
  • 断熱過程: $Q = 0$、$pV^\gamma = \text{const}$

次のステップとして、以下の記事も参考にしてください。