今回は二分法を用いてモノプロトン酸塩基のpHを求めます。またその応用としてFlood図の作成方法を示します。

<<二分法>>
「二分法」は、関数が単調増加あるいは単調減少する場合、解を含む区間の中間点を求める操作を繰り返すことによって方程式を解く方法です。
<二分法の関係式>
モノプロトン弱酸(HA)pHを求めるときの関係式は次の通りです(イオン強度は考慮しない)
Ka = [H][A]/[HA]
 (酸の平衡定数)
Kw = [H][OH]
 (水のイオン積)
Ca = [A]+[HA]
 (物質バランス式)
[H] = [OH]
[A] (電バランス支式)   

モノプロトン弱酸(HA)の電荷バランス式から導かれる次の関数Qを考えます。
Q = [H]
[OH][A]
 = [H]
Kw/[H]Ca/(1[H]/Ka)
 = 10^-pH
Kw/10^-pHCa/(110^-pH/Ka)
Q = 0
を解くことによりpHを求めることができます。
Q
pHに関して単調減少関数となります
(*1)
(*1) Q(pH)が単調減少関数であることの証明
y = [H]
[OH][A]
u = [H]
 とすると
y = u
Kw/uCaKa/(Kau)
dy/du = 1
Kw/u^2CaKa/(Kau)^2
Kw, Ca, Ka
はすべて正なので、dy/du0
また、
x = pH =
log10 uとすると、
u = 10^-x
du/dx =
10^-x(ln10) = u(ln10)
u = [H]
は正なので、du/dx 0
∴ dy/dx = (dy/du)(du/dx)0
したがって、関数Q(pH)は単調減少関数である。   

Q(pH)が単調減少関数であり、Q(a)0, Q(b)0であるとき、a,b間のどこかにかならずQ(pH)=0となるpHが一つ存在します。   

<二分法のやり方>
Q(pH)=0
について二分法によるpHの求め方は次の通りです。中点のQ(pH)が正であるか負であるかの判断とそれに対する対応はエクセルのIF関数を用いて行います。

初期値の付与
(1)
 Q(a0)0となるような初期値a0を与える。 たとえば、a0=-1(以下赤字の式はエクセルの表作成時に用いる計算式)。
(2)
 Q(b0)0となるような初期値b0を与える
(*2)。 たとえば、b0=15
(*2) a0=-1, b0=15を与えると、濃度10 mol/Lまでの酸、塩基に対応できる。
(3)
 a0, b0の中点、m0を求める。 m0=(a0+b0)/2
(4)
 m0に対するQ(m0)を求める。
 Q(m0)=10^-m0Kw/10^-m0CaKa/(Ka10^-m0)   

繰り返し1回目
(5)
 Q(m0)0ならば、a1=a0とする。そうでなければ、a1=m0とする。
 a1=IF(Q(m0)<0, a0, m0)
(6)
 a1=m0(つまりQ(m0)>=0)ならば、b1=b0とする。そうでなければ、b1=m0とする。
 b1=IF(a1=m0, b0, m0) (または、b1=IF(Q(m0)<0, m0, b0)、以下同じ)
(7) a1, b1の中点m1を求める。 m1=(a1+b1)/2
(8) m1に対するQ(m1)を求める。
 Q(m1)=10^-m1-Kw/10^-m1-CaKa/(Ka+10^-m1)  

繰り返し2回目
(9)
 Q(m1)0ならば、a2=a1とする。そうでなければ、a2=m1とする。
 
a2=IF(Q(m1)<0, a1, m1)
(10)
 a2=m1ならば、b2=b1とする。そうでなければ、b2=m1とする。
 
b2=IF(a2=m1, b1, m1)
(11)
 a2, b2の中点、m2を求める。 m2=(a2+b2)/2
(12)
 m2に対するQ(m2)を求める。
 Q(m2)=10^-m2Kw/10^-m2CaKa/(Ka10^-m2)   

以下、Q(mn)0となるまで同様の操作を繰り返し、a, bの幅を狭めていく。
………
繰り返しn回目

(13) an=IF(Q(mn-1)<0, an-1, mn-1)
(14)
 bn=IF(an=mn-1, bn-1, mn-1)

(15) mn=(an+bn)/2
(16)
 Q(mn)=10^-mnKw/10^-mnCaKa/(Ka10^-mn)   

a0=-1, b0=15としておよそn=2030回程度繰り返せば、Q(mn)はほぼ0に収束します。このときのmnが求めるpHです(*3)
(*3) n=30におけるpHの精度は、(151)×(1/2)^30=1.5×10^-8となり十分である。ちなみに、n=10, 15, 20におけるpHの精度は、それぞれ0.016, 4.9×10^-4, 1.5×10^-5となる。   

二分法の求め方の模式図を-に示します。   

-
2023-04-30-fig1

<「二分法表」の作成>
0.100 mol/Lの酢酸(pKa=4.76)pHを求める」ことを例題として、エクセルによる「二分法表」の作り方を説明します。
 pKa, pKw, Caの値をC3C5のセルに入れ、Ka, Kwを計算する(C6, C7)(Ka, Kwが与えらている場合はセルに定数を直接入力する)
C3 =4.76  …(酸解離定数の入力)
C4 =14  …(水のイオン積の入力)
C5 =0.1  …(酸濃度の入力)
C6 =10^-C3
C7 =10^-C4   

2023-04-30-fig01


 pHの初期値a0, b0B11, D11のセルに入れ、m0を計算する(C11)
B11 =-1  …(pH左端値の入力)
D11 =15  …(pH右端値の入力)
C11 =(B11+D11)/2
 初期値に対して、濃度に関する計算式を入れる(E11J11)
E11 =F11-G11-I11  …(Q=[H]-[OH]-[A])
F11 =10^-C11  …([H]=10^-pHm)
G11 =$C$7/F11  …([OH]=Kw/[H])
H11 =1+F11/$C$6  …(α=1+[H]/Ka)
I11 =$C$5/H11  …([A]=Ca/α)
J11 =F11*I11/$C$6  …([HA]=[H][A]/Ka)   

2023-04-30-fig02


 二分法の計算式をB12D12のセルに入れる。
B12 =IF(E11<0,B11,C11)
C12 =(B12+D12)/2
D12 =IF(B12=C11,D11,C11)
⑤ 濃度に関する計算式(E11J11)E12J12にコピーする。   

2023-04-30-fig03

 B12J12B42J42までコピーする。
B12J12を選択し、選択した範囲の右下隅にあるポインターをにして、B42J42までドラッグする。
 pHの値をコピーする。
C8 =C42  …(これが求めるpH)   

2023-04-30-fig04


作成した二分法表を-に示します。pKa, pKw, Caのセルに値を入力することにより、様々な1価の弱酸のpHを求めることができます。   

-
2023-04-30-fig2


<<
「二分法」と「ソルバー」の比較>>
前回(2023-04-23)説明した「ソルバー法」を用いると高次方程式の解が簡単に得られ、さらに制約条件を追加することにより変数が2個以上でも解析が可能です(*4)
(*4) ソルバーが解ける条件は、(変数セルの個数){(目的セルの個数(=1))(制約条件の個数)}である。   

しかし、「ソルバー法」の欠点は「データテーブル」との併用ができないことです。「データテーブル」を用いてセルの数値を様々に変化させたい場合には「二分法」を用いる方が便利です(*5)。ただし、「二分法」は変数が1個(たとえばpH)の場合しか適用できません。
(*5) たとえば、Caを変化させたときのpHの変化を知りたい場合や滴下量を変化させて滴定曲線を作成する場合など。もしこのような場合に「ソルバー」を用いると、条件を変化させる都度「ソルバー」操作を実行する必要があり面倒である(一括操作を行うためにはVBAの知識が必要)   

 

<<「二分法」と「データテーブル」>>

二分法の応用として、「データテーブル」を併用して、CaKaを変化させたときのpHの変化の様子をグラフで表してみます。
データテーブルの作成方法は次の通りです。
① L列にCaの値を入れる。(L5:L15
Ca=110^-10 (Ca=10^logCaで計算)
② 3行にpKaの値を入れる。(M4:R4
pKa=212
③ 二分法で求めたpHL3にコピーする。
L4=C8
④ データテーブルの範囲を指定する。(L4:R15
⑤データテーブルを作成する。
・メニューバー:「データ」
・ツールバー:「What-If分析」「データテーブル」ダイアログ(小窓)が出る 「行の代入セル」に”C3”を指定 「列の代入セル」に”C5”を指定 OK「データテーブル」が完成 
⑥グラフを作成する。
・データテーブルの値を適切に加工して散布図を作る。

結果を-に示します。この図はFlood図と呼ばれています(2023-04-16)

-
2023-04-30-fig3