Rで理論化学:ヘスの法則

問題

以下の3つの反応の反応エンタルピー(ΔH)が実験的に既知であるとします。

反応1: C(黒鉛) + O₂(g) → CO₂(g) ΔH₁ = -393.5 kJ/mol

反応2: H₂(g) + ½O₂(g) → H₂O(l) ΔH₂ = -285.8 kJ/mol

反応3: CH₄(g) + 2O₂(g) → CO₂(g) + 2H₂O(l) ΔH₃ = -890.3 kJ/mol

これらの反応式を組み合わせることで、次の目的反応(メタンの生成反応)のΔHを求めなさい。

目的反応: C(黒鉛) + 2H₂(g) → CH₄(g) ΔH = ?


解答方針

ヘスの法則は「反応エンタルピーは反応経路によらず、始状態と終状態だけで決まる」という状態関数の性質に基づいています。

したがって、各反応式に適当な係数 \(c_1, c_2, c_3\) を掛けて足し合わせたときに、目的反応の化学量論式と一致するように \(c_1, c_2, c_3\) を決定すれば、

\[\Delta H_{目的} = c_1 \Delta H_1 + c_2 \Delta H_2 + c_3 \Delta H_3\]

として求められます。

この \(c_1, c_2, c_3\) を「化学種ごとの係数を並べた連立一次方程式」として Rsolve() で解きます。

# ------------------------------------------------------------
# ヘスの法則:反応の線形結合による ΔH の算出
# ------------------------------------------------------------

# 登場する化学種の順序を固定しておく
# 順に: C(graphite), O2, CO2, H2, H2O, CH4
species <- c("C_graphite", "O2", "CO2", "H2", "H2O", "CH4")

# 各反応式を「生成物を正、反応物を負」とした化学量論係数ベクトルで表す
# 反応1: C + O2 -> CO2
rxn1 <- c(C_graphite = -1, O2 = -1, CO2 = 1, H2 = 0, H2O = 0, CH4 = 0)

# 反応2: H2 + 1/2 O2 -> H2O
rxn2 <- c(C_graphite = 0, O2 = -0.5, CO2 = 0, H2 = -1, H2O = 1, CH4 = 0)

# 反応3: CH4 + 2 O2 -> CO2 + 2 H2O
rxn3 <- c(C_graphite = 0, O2 = -2, CO2 = 1, H2 = 0, H2O = 2, CH4 = -1)

# 目的反応: C + 2 H2 -> CH4
target <- c(C_graphite = -1, O2 = 0, CO2 = 0, H2 = -2, H2O = 0, CH4 = 1)

# 反応1〜3を列ベクトルとして並べた行列 A をつくる
A <- cbind(rxn1, rxn2, rxn3)
rownames(A) <- species

print(A)

# 目的反応ベクトル b に対して A %*% c = b を満たす係数 c = (c1, c2, c3) を求める
# 化学種は6種類・未知数は3個なので最小二乗解(擬似逆行列)で解く
# ここでは行数(6) > 列数(3) の過剰決定系なので、Moore-Penrose型の解法を使う
c_coef <- solve(t(A) %*% A, t(A) %*% target)

cat("反応1の係数 c1 =", round(c_coef[1], 3), "\n")
cat("反応2の係数 c2 =", round(c_coef[2], 3), "\n")
cat("反応3の係数 c3 =", round(c_coef[3], 3), "\n")

# 実際に A %*% c_coef が target と一致するか検算
check <- A %*% c_coef
cat("\n検算(A %*% c と目的反応ベクトルの比較):\n")
print(round(cbind(target, check), 3))

# 各反応のΔH
dH1 <- -393.5
dH2 <- -285.8
dH3 <- -890.3

dH_target <- c_coef[1] * dH1 + c_coef[2] * dH2 + c_coef[3] * dH3

cat(
  "\n目的反応 C(graphite) + 2H2(g) -> CH4(g) のΔH =",
  round(dH_target, 1), "kJ/mol\n"
)
           rxn1 rxn2 rxn3
C_graphite   -1  0.0    0
O2           -1 -0.5   -2
CO2           1  0.0    1
H2            0 -1.0    0
H2O           0  1.0    2
CH4           0  0.0   -1
反応1の係数 c1 = 1 
反応2の係数 c2 = 2 
反応3の係数 c3 = -1 

検算(A %*% c と目的反応ベクトルの比較):
           target   
C_graphite     -1 -1
O2              0  0
CO2             0  0
H2             -2 -2
H2O             0  0
CH4             1  1

目的反応 C(graphite) + 2H2(g) -> CH4(g) のΔH = -74.8 kJ/mol

なお、反応式が増えて未知数と方程式の数が一致する場合は solve(A, target) がそのまま使えます。

補足

反応エンタルピー(Reaction Enthalpy)について

定義

反応エンタルピー ΔH は、化学反応が起こる際に系が吸収または放出する熱量を、定圧条件下で表した量です。

\[\Delta H = H_{\text{生成物}} - H_{\text{反応物}}\]

エンタルピー \(H\) 自体は

\[H = U + pV\]

と定義される状態量です(\(U\)は内部エネルギー、\(p\)は圧力、\(V\)は体積)。定圧過程では、系が吸収する熱量 \(q_p\) がそのままエンタルピー変化に等しくなります。

\[q_p = \Delta H\]

これは熱力学第一法則 \(\Delta U = q - w\)(定圧膨張仕事 \(w = p\Delta V\))から導かれます。

符号の意味

符号呼び方意味
ΔH < 0発熱反応(exothermic)系から周囲へ熱が放出される
ΔH > 0吸熱反応(endothermic)周囲から系へ熱が吸収される

状態関数であることの重要性

エンタルピーは状態関数です。つまり、値は始状態と終状態だけで決まり、反応の経路(途中でどんな中間体を経由するか)には依存しません。

これがヘスの法則の根拠になっています。反応をいくつかの段階に分けても、各段階のΔHを足し合わせれば全体のΔHと一致するのは、この状態関数性に起因します。

標準反応エンタルピー ΔH°

比較のために、以下の標準状態で定義した値がよく使われます。

  • 圧力 1 bar(旧基準では1 atm)
  • 通常は 298.15 K(25℃)
  • 各物質は最も安定な単体・化合物の状態

標準反応エンタルピーは、生成物と反応物の標準生成エンタルピー \(\Delta H_f^\circ\) の差として計算できます。

\[\Delta H^\circ_{\text{反応}} = \sum \nu_i \Delta H_{f,i}^\circ(\text{生成物}) - \sum \nu_j \Delta H_{f,j}^\circ(\text{反応物})\]

ここで、\(\nu\)は化学量論係数。

今回の問題ですと、CO₂やH₂Oの標準生成エンタルピー(それぞれ -393.5 kJ/mol、-285.8 kJ/mol)を使ってCH₄の生成エンタルピーを逆算する、という操作になります。

結合エネルギーとの関係

反応エンタルピーは、大まかには「反応物の結合を切るのに必要なエネルギー」と「生成物の結合ができるときに放出されるエネルギー」の差として理解することもできます。

\[\Delta H \approx \sum(\text{反応物の結合エネルギー}) - \sum(\text{生成物の結合エネルギー})\]

ただし、結合エネルギーは分子内の環境によって多少変動するため近似的な考え方になります。

まとめ

概念内容
定義定圧下での反応熱、\(\Delta H = H_{生成物} - H_{反応物}\)
発熱/吸熱ΔH<0で発熱、ΔH>0で吸熱
性質状態関数 → 経路によらない(ヘスの法則の根拠)
標準値標準生成エンタルピーの差から計算可能

以上です。