はじめに
酢酸(CH₃COOH)は水中で一部だけが電離する弱酸である。高校化学の入試問題では「電離度 $\alpha$ は1に比べて非常に小さい」と近似して計算することがほとんどだが、この前提を使わなくても電離平衡の式は二次方程式として厳密に解くことができる。
本記事では、酢酸の濃度 $C$ を $1\times10^{-5}$〜$1\ \mathrm{mol/L}$ まで動かしたときの
- 電離度 $\alpha$
- 水素イオン濃度 $[\mathrm{H^+}]$
- pH
の変化を、近似を使わずPythonに計算させ、グラフで確認する。あわせて、入試でおなじみの近似式がどこまで正確なのかも数値で検証する。
理論的背景
酢酸の電離平衡と酸解離定数 $K_a$
塩酸(HCl)のような強酸は水中でほぼ100%電離するため $[\mathrm{H^+}] = C$(仕込み濃度)とみなせる。しかし酢酸は次のように一部しか電離せず、電離した分子・イオンと電離せず残った分子とが平衡状態で共存する。
$$
\mathrm{CH_3COOH} \rightleftharpoons \mathrm{CH_3COO^-} + \mathrm{H^+}
$$
この平衡の右辺と左辺の比を表すのが酸解離定数 $K_a$ である。
$$
K_a = \frac{[\mathrm{CH_3COO^-}][\mathrm{H^+}]}{[\mathrm{CH_3COOH}]}
$$
酢酸の $K_a$ は25℃で $1.8\times10^{-5}\ \mathrm{mol/L}$ ととても小さい。$K_a$ が小さいということは平衡が左(電離していない $\mathrm{CH_3COOH}$)側に大きく偏っていることを意味し、これが「弱酸」と呼ばれる理由であり、強酸のような単純な近似が使えない理由でもある。
酸解離度 α
溶かした酢酸のうち、実際に電離した割合を酸解離度(電離度)$\alpha$と呼ぶ($0 \le \alpha \le 1$)。仕込み濃度を $C\ [\mathrm{mol/L}]$ とすると、
- 電離した酢酸の濃度: $C\alpha$
- 電離せず残った酢酸の濃度: $C(1-\alpha)$
酢酸1分子が電離すると $\mathrm{CH_3COO^-}$ と $\mathrm{H^+}$ が1個ずつ生じるので(水自身の電離は無視できるほど小さいとする)、$[\mathrm{CH_3COO^-}] = [\mathrm{H^+}] = C\alpha$ となる。
$\alpha$ が小さいほど「電離しにくい=弱い酸」、1に近いほど「ほぼ電離する=強い酸」を表す。またルシャトリエの原理から、濃度 $C$ が大きいほど $\alpha$ は小さくなる(電離が抑えられる)ことが予想される。これは後述のグラフで実際に確認する。
モル濃度表(ICE表)から二次方程式を導く
電離度 $\alpha$ を使って電離平衡のモル濃度表を書くと次のようになる。
| 状態 | $\mathrm{CH_3COOH}$ | $\mathrm{CH_3COO^-}$ | $\mathrm{H^+}$ |
|---|---|---|---|
| 電離前(初期) | $C$ | $0$ | $0$ |
| 変化量 | $-C\alpha$ | $+C\alpha$ | $+C\alpha$ |
| 平衡状態 | $C(1-\alpha)$ | $C\alpha$ | $C\alpha$ |
これを $K_a$ の式に代入する。
$$
K_a = \frac{(C\alpha)(C\alpha)}{C(1-\alpha)} = \frac{C\alpha^2}{1-\alpha}
$$
両辺に $(1-\alpha)$ を掛けて整理すると、$\alpha$ についての二次方程式が得られる。
$$
K_a(1-\alpha) = C\alpha^2 \quad\Longrightarrow\quad C\alpha^2 + K_a\alpha - K_a = 0
$$
これは $ax^2+bx+c=0$ の形なので、解の公式 $x=\dfrac{-b\pm\sqrt{b^2-4ac}}{2a}$ に $a=C,\ b=K_a,\ c=-K_a$ を当てはめる。$\alpha \ge 0$ でなければならないので、+の根のみを採用する。
$$
\alpha = \frac{-K_a + \sqrt{K_a^{2} + 4CK_a}}{2C}
$$
$\alpha$ が求まれば、$[\mathrm{H^+}] = C\alpha$、$\mathrm{pH} = -\log_{10}[\mathrm{H^+}]$ とすぐに計算できる。
入試の近似式との違い: 入試では通常「$\alpha \ll 1$」と仮定し $1-\alpha \approx 1$ として次の近似式を使うことが多い。
$$
K_a \approx C\alpha^2 \quad\Longrightarrow\quad \alpha \approx \sqrt{\frac{K_a}{C}} \quad\Longrightarrow\quad [\mathrm{H^+}] \approx \sqrt{K_aC}
$$
今回のプログラムはこの近似を使わず、二次方程式を直接厳密に解く。後半の考察で、この近似がどこまで正確かを実際の数値で検証する。
実装
環境
Python 3.11
numpy
matplotlib
japanize_matplotlib
全ソースコード
#弱酸である酢酸のpH計算(濃度とPHの関係性について調査)
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib # matplotlibで日本語(軸ラベル等)を文字化けさせずに表示するための設定
import math
n=100
C_ary=np.linspace(1e-5, 1, n) #濃度の配列を作成
Ka=1.8*10**-5 #酢酸の酸解離定数
pH_ary=[] #pHの配列を作成
H_ary=[] #水素イオン濃度の配列を作成
alpha_ary=[] #電離度alphaの配列を作成
for C in C_ary:
alpha=(-Ka+math.sqrt(Ka**2+4*Ka*C))/(2*C) #電離度alphaを二次方程式の解の公式で計算
H=C*alpha #水素イオン濃度 [H+] = C*alpha を計算
pH=-np.log10(H) #pHを計算
pH_ary.append(pH) #pHの配列に追加
H_ary.append(H) #水素イオン濃度の配列に追加
alpha_ary.append(alpha) #電離度alphaの配列に追加
plt.figure(figsize=(8, 6))
plt.plot(C_ary, pH_ary, label='酢酸のpH', color='blue')
plt.xlabel('濃度 [mol/L]')
plt.ylabel('pH')
plt.title('酢酸の濃度とpHの関係')
plt.xscale('log') #濃度の軸を対数スケール
plt.grid()
plt.legend()
plt.savefig('acetic_acid_pH.png') #グラフを保存
plt.show()
plt.figure(figsize=(8, 6))
plt.plot(C_ary, H_ary, label='酢酸のpH', color='blue')
plt.xlabel('濃度 [mol/L]')
plt.ylabel('水素イオン濃度 [mol/L]')
plt.title('酢酸の濃度と水素イオン濃度の関係')
plt.grid()
plt.legend()
plt.savefig('acetic_acid_H.png') #グラフを保存
plt.show()
plt.figure(figsize=(8, 6))
plt.plot(C_ary, alpha_ary, label='酢酸の電離度', color='blue')
plt.xlabel('濃度 [mol/L]')
plt.ylabel('電離度 α')
plt.title('酢酸の濃度と電離度の関係')
plt.xscale('log') #濃度の軸を対数スケール
plt.grid()
plt.legend()
plt.savefig('acetic_acid_alpha.png') #グラフを保存
plt.show()
実装のポイント解説
-
C_ary = np.linspace(1e-5, 1, n): 濃度 $C$ を $1\times10^{-5}$〜$1\ \mathrm{mol/L}$ の範囲で100点均等にとった配列。 -
alpha = (-Ka+math.sqrt(Ka**2+4*Ka*C))/(2*C): 前章で導いた $\alpha = \dfrac{-K_a+\sqrt{K_a^2+4CK_a}}{2C}$ をそのままコードにしたもの。 -
H = C*alpha: $\alpha$ から $[\mathrm{H^+}]=C\alpha$ を計算する。
開発時のバグに関する補足
このコードの前段階では、二次方程式の解をH(水素イオン濃度)という変数名でそのまま使ってしまい、H = C*alphaの掛け算が抜けていたことがあった。前章の通り解の公式が返すのは電離度 $\alpha$ であり、$[\mathrm{H^+}]$ を得るには $C$ を掛ける必要がある。$C=1\ \mathrm{mol/L}$ のときはたまたま $\alpha=[\mathrm{H^+}]$ になるため一見正しく見えてしまうが、それ以外の濃度ではpHが大きくずれる。変数の意味(「二次方程式の解」であって「求めたい物理量そのもの」ではない)を早い段階で明確にしておくことの大切さがわかる一例である。
結果
グラフ1: 濃度とpHの関係
横軸: 濃度 $C$ mol/L、縦軸: pH。
濃度 $C$ が大きくなるほどpHは下がる(酸性が強まる)が、その下がり方は一定ではなく、高濃度側でどんどん緩やかになっている。これは次のグラフで見るように、濃度が上がるほど電離度 $\alpha$ が下がり、電離が抑制されるためである。
グラフ2: 濃度と水素イオン濃度の関係
横軸: 濃度 $C$ [mol/L]、縦軸: $[\mathrm{H^+}]$ [mol/L]。
$[\mathrm{H^+}]$ は濃度が上がるにつれて増加するが、単純な比例関係ではなく、上に凸なカーブを描く。仮に酢酸が強酸のように完全電離するなら $[\mathrm{H^+}]=C$ の直線になるはずだが、実際にはそれより大きく下回っており、電離が抑制されていることが視覚的にわかる。
グラフ3: 濃度と電離度の関係
横軸: 濃度 $C$ mol/L、縦軸: 電離度 $\alpha$。
電離度 $\alpha$ は濃度が下がる(薄まる)ほど大きくなり、$C=1\times10^{-5}\ \mathrm{mol/L}$ 付近では約72%にまで達する。逆に $C=1\ \mathrm{mol/L}$ では $\alpha$ はわずか0.4%程度しかない。濃度が高いほど電離が抑制され、薄めるほど電離が進むという関係は、酢酸に限らずすべての弱電解質に共通する性質であり、これを一般にオストワルドの希釈律と呼ぶ。
代表的な濃度における計算結果
| $C$ [mol/L] | $\alpha$(電離度) | $[\mathrm{H^+}]$ [mol/L] | pH |
|---|---|---|---|
| 1 | 0.42 % | $4.23\times10^{-3}$ | 2.373 |
| 0.1 | 1.33 % | $1.33\times10^{-3}$ | 2.875 |
| 0.01 | 4.15 % | $4.15\times10^{-4}$ | 3.382 |
| 0.001 | 12.55 % | $1.25\times10^{-4}$ | 3.901 |
| 0.0001 | 34.37 % | $3.44\times10^{-5}$ | 4.464 |
考察(おまけ): pHの近似式との比較と希釈の限界
近似式との比較
前章の近似式 $\mathrm{pH} \approx \dfrac{1}{2}(pK_a - \log C)$($pK_a=-\log K_a\approx4.74$)と、今回の厳密解を重ねて比較する。
青線が二次方程式による厳密解、オレンジの破線が近似式によるpH。
$C=1\ \mathrm{mol/L}$ のような高濃度($\alpha$が小さい)では両者はほぼ一致する。しかし濃度が下がって $\alpha$ が大きくなるにつれて誤差が広がり、$C=1\times10^{-4}\ \mathrm{mol/L}$ 付近では $\alpha$ が約34%にまで達し、「$\alpha \ll 1$」という近似の前提そのものが崩れ始める。近似式は高濃度で有効、希薄になるほど信頼できなくなるという、入試では見落としがちな注意点が数値で裏付けられる。
このグラフを描くコードは、既存の C_ary と Ka を使って次のように書ける。
pKa = -math.log10(Ka)
pH_approx = [0.5*(pKa - math.log10(C)) for C in C_ary]
plt.plot(C_ary, pH_ary, label='厳密解(二次方程式)', color='blue')
plt.plot(C_ary, pH_approx, label='近似式 √(KaC)', color='orange', linestyle='--')
plt.xscale('log')
plt.xlabel('濃度 [mol/L]')
plt.ylabel('pH')
plt.legend()
plt.grid()
さらに希釈すると何が起きるか
今回のプログラムは $C=1\times10^{-5}\ \mathrm{mol/L}$ までしか計算していないが、同じ式をさらに薄い濃度まで延長すると、奇妙なことが起こる。
| $C$ [mol/L] | $\alpha$ | $[\mathrm{H^+}]$ [mol/L] | pH(モデル) |
|---|---|---|---|
| $1\times10^{-6}$ | 0.95 | $9.50\times10^{-7}$ | 6.02 |
| $1\times10^{-7}$ | 0.99 | $9.95\times10^{-8}$ | 7.00 |
| $1\times10^{-8}$ | 1.00 | $9.99\times10^{-9}$ | 8.00(酸なのに塩基性!?) |
$C=1\times10^{-8}\ \mathrm{mol/L}$ では、このモデルは $\mathrm{pH}=8.0$ という結果を返す。しかし酸の水溶液が塩基性($\mathrm{pH}>7$)になることはあり得ない。原因は、今回の計算が「$[\mathrm{H^+}]$ は酢酸の電離だけから生じる」と仮定し、水自身の電離($\mathrm{H_2O}\rightleftharpoons\mathrm{H^+}+\mathrm{OH^-}$, $K_w=1.0\times10^{-14}$)を無視しているためである。酢酸の濃度が水由来の $[\mathrm{H^+}]$(約 $1\times10^{-7}\ \mathrm{mol/L}$)と同程度かそれ以下まで薄まると、水の電離を無視できなくなり、モデルが破綻する。
実際には希釈を進めるほど電離度 $\alpha$ は1に近づいていく(オストワルドの希釈律)一方で、pHは7に近づいて頭打ちになり、7を超えることはない。今回のプログラムの計算範囲($C \ge 1\times10^{-5}\ \mathrm{mol/L}$)ではこの破綻は起きていないが、「モデルには前提があり、前提が崩れる領域では結果を鵜呑みにできない」ことを示す良い例である。
まとめ
酢酸の電離平衡をモル濃度表(ICE表)から立式し、「$\alpha \ll 1$」という入試でおなじみの近似を使わずに、$C\alpha^2+K_a\alpha-K_a=0$ という $\alpha$ についての二次方程式を解の公式で厳密に解いた。これをPythonで実装し、濃度 $C$ を5桁にわたって動かしたときの電離度・水素イオン濃度・pHの変化をグラフ化した結果、
- 濃度が上がるほど電離度 $\alpha$ は下がり、電離が抑制される(オストワルドの希釈律)
- 入試の近似式は高濃度では厳密解とよく一致するが、希薄になるほど誤差が拡大する
- 水の電離を無視した単純なモデルは、極端に薄い領域では pH>7 という非物理的な結果を返し、モデルの適用限界を示す
ことが確認できた。$K_a$ の値を変えるだけで他の弱酸(例: ギ酸 $\mathrm{HCOOH}$, $K_a\approx2.9\times10^{-4}$)にも同じコードがそのまま使える。



