前回(2023-09-17)は近似式を用いてジプロトン酸塩基のpHを求めました。近似法は、「ケースごとに仮定を立てて近似式を作成し、結果を算出して仮定の妥当性を確認する」といった手順を踏む必要があり、面倒です。今回は表計算ソフト(エクセル)を利用して「二分法」および「ソルバー法」によりジプロトン酸塩基の問題を解きます。   

<<二分法>>
「二分法」は、関数が単調増加あるいは単調減少する場合、解を含む区間の中間点を求める操作を繰り返すことによって方程式の近似解を求める方法です(2023-04-30)
ジプロトン酸(H2A)pHを求めるときの関係式は次の通りです。
K1 = [H][HA]/[H2A]
 (平衡式)
K2 = [H][A]/[HA]
 (平衡式)
Kw = [H][OH]
 (平衡式)
Ca = [A]+[HA]+[H2A]
 (物質バランス式)
[H] = [OH]
2[A]+[HA] (電荷バランス式)   

これらの式から、各化学種の濃度は次のように表すことができます。
[H] = 10^-pH
[OH] = Kw/[H]
[A] = Ca/(1
[H]/K2[H]^2/(K1K2))
(*1)
[HA] = [H][A]/K2
[H2A] = [H][HA]/K1
(*1) 物質バランス式と平衡式から、
Ca = [A]+[HA]+[H2A] = [A]+[H][A]/K2++[H]^2[A]/(K1K2) = [A](1
[H]/K2[H]^2/(K1K2))
[A] = Ca/(1[H]/K2[H]^2/(K1K2))    

電荷バランス式から導かれる次の関数Qを考えます。
Q = [H]
[OH]2[A][HA]
方程式Q = 0を解くことによりpHを求めることができます。
Q
pHに関して単調減少関数です
(証明は省略、2023-04-30*1参照のこと)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)=[H]0[OH]02[A]0[HA]0   

繰り返し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)=[H]1[OH]12[A]1[HA]1   

繰り返し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)=[H]2[OH]22[A]2[HA]2   

以下、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)=[H]n[OH]n2[A]n[HA]n   

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となる。   

<「二分法表」の作成>
以下、例題1により二分法表の作り方を説明しながらジプロトン酸のpHを求めます。
例題1 二分法を用いて0.001 mol/Lの酒石酸(pK1 = 3.04, pK2 = 4.37)のpHを求めよ。
作成したエクセルシートの二分法表を-に示す(-の右上部分には近似法による計算値も入れている)。   

-
2023-09-24-fig1

作成方法
 pK1, pK2, pKw, Caの値をE3E6のセルに入れ、K1, K2, Kwを計算する(E7E9)(K1, K2, Kwが与えられている場合は、D7~D9セルに数値を直接入力する)
E3 =3.04  …(pK1の入力)
E4 =4.37  …(pK2の入力)
E5 =14  …(pKwの入力)
E6 =0.001  …(酸濃度Caの入力)
E7 =10^-E3
E8 =10^-E4
E9 =10^-E5   

 pHの初期値a0, b0B15, D15のセルに入れ、m0を計算する(C15)
B15 =-1  …(pH左端値の入力)
D15 =15  …(pH右端値の入力)
C15 =(B15+D15)/2
 初期値に対して、濃度に関する計算式を入れる(E15J15)
E15 =F15-G15-2*H15-I15  …Q=[H]-[OH]-2[A]-[HA]
F15 =10^-C15  …[H]=10^-pHm
G15 =$E$9/F15  …[OH]=Kw/[H]
H15 =$E$6/(1+F15/$E$8+F15^2/($E$7*$E$8))
           …[A] = Ca/(1[H]/K2[H]^2/(K1K2))
I15 =F15*H15/$E$8 …[HA] = [H][A]/K2
J15 =F15*I15/$E$7 …[H2A] = [H][HA]/K1   

 二分法の計算式をB16D16のセルに入れる。
B16 =IF(E15<0, B15, C15)
C16 =(B16+D16)/2
D16 =IF(B16=C15,D15,C15)   

⑤ 濃度に関する計算式(E15J15)E16J16にコピーする。
E15J15を選択し、選択した範囲の右下隅にあるポインターをにして、E16J16までドラッグする。   

 B16J16B45J45までコピーする。
B16J16を選択し、選択した範囲の右下隅にあるポインターをにして、B45J45までドラッグする。   

 pHの値をコピーする。
E11 =C45 …これが求めるpH …(
答え) pH=3.19   

<近似法の使用可能な下限>
二分法を基準として近似法の限界を調べました。酒石酸のpHの計算における[H]1および[H]1K2による近似式の使用限界の酸濃度(2023-09-17)に関して、二分法と近似法との差を求めました(濃度Caの酒石酸におけるΔpH=pH(近似法)-pH(二分法)を求め、Caの変更にはデータテ-ブル機能を用いた)。結果を図-2に示します。pHの許容差を±0.02とすると、近似式を用いることのできる酸濃度の下限は、2段目の解離を無視した[H]=[H]1の近似式ではCa=1.6×10^-3 mol/Lとなり、2段目を考慮した[H]=[H]1+K2の近似式ではCa=2.4×10^-4 mol/Lとなりました。   

-
2023-09-24-fig2

<<ソルバー法>>
エクセルに付属しているソルバーとは、1個または複数の変数を含む数式において、目標値および制約条件を満たす最適な変数値を求める機能のことです。ソルバーを用いると、連立方程式において最適な近似解を簡単に求めることができます。
ジプロトン酸(H2A)pHを求めるときの関係式は、次の通りです(二分法のときと同じ)
[H] = 10^-pH
[OH] = Kw/[H]
[A] = Ca/(1
[H]/K2[H]^2/(K1K2))
(*1)
[HA] = [H][A]/K2
[H2A] = [H][HA]/K1
Q = [H]
[OH]2[A][HA] = 0   

以下、例題2によりソルバーのやり方を説明しながらジプロトン酸のpHを求めます。
例題2 ソルバー法を用いて0.001 mol/Lの酒石酸(pK1 = 3.04, pK2 = 4.37)のpHを求めよ。
① pK1, pK2, pKw, Caの値を入力し(D3~D6)、K1, K2, Kwを計算する(D7~D9)。(K1, K2, Kwが与えられている場合は、D7~D9セルに数値を直接入力する)
D3=3.04 …(酸解離定数pK1の入力)
D4=4.37 …(酸解離定数pK2の入力)
D5=14 …(水のイオン積pKwの入力)
D6=0.001 …(酸濃度Caの入力)
D7=10^-D3 (Ka = 10^pK1)
D8=10^-D4 (Ka = 10^pK2)
D9=10^-D5 (Kw = 10^pKw)  

② Qの計算式をD11に入れる。
D11=D13-D14-2*D15-D16 (Q = [H][OH]2[A][HA])   

③ pHの初期値をD12に入れる。(たとえば、pH=3とする)
D12=3 
  

④ [H], [OH], [A], [HA], [H2A]の計算式をD13D17に入れる。
D13=10^-D12 ([H]=10^-pH)
D14=D9/D13 ([OH]=Kw/[H])
D15=D6/(1+D13/D8+D13^2/(D7*D8)) ([A] = Ca/(1[H]/K2[H]^2/(K1K2)))
D16=D13*D15/D8 ([HA]=[H][A]/K1)
D17=D13*D16/D7 ([H2A]=[H][HA]/K2)   

⑤ ソルバーを開く。
[データ] [ソルバー] [ソルバーのパラメーター]ダイアログボックスが開く   

⑥ ソルバーのパラメーターを設定する。
[目的セルの設定]: $D$11
[目標値]: [指定値]にチェックを入れ、"0"を指定する。
[変数セルの変更]: $D$12
[制約条件の対象]: なにも入れない。
[制約のない変数を非負数にする]: チェックを入れない。
[解決方法の選択]: [GRG非線形]を選択する。   

ソルバーのパラメーター設定後のエクセルシートを-に示す。

-
2023-09-24-fig3-1

 [オプション]を選択する。
([オプション]の選択) ([オプション]ダイアログボックスが開く)
[制約条件の精度]"1e-10" [OK] (もとの画面へ)   

⑧ ソルバーの解を求める。
もとの画面 [解決] [ソルバーの結果]ダイアログボックスが開く。
([ソルバーの結果
]ダイアログボックス) 「ソルバーによって解が見つかりました」 [OK] D12に求める答えが出る。(答え) pH=3.19   

ソルバー実施後のエクセルシート-に示す。   

-
2023-09-24-fig3


以上、エクセルを用いたジプロトン酸のpHの求め方について説明しました。ジプロトン塩基についても全く同様に求めることができます。   

以上、エクセルを用いたジプロトン酸のpHの求め方について説明しました。ジプロトン塩基についても全く同様に求めることができます。