前回(2023-07-02)は、近似法を用いて弱酸の滴定曲線を描く方法について述べました。今回は、二分法を用いる方法について説明します。   

<<二分法について>>(2023-04-30)
単調関数f(x)において、f(a)f(b)とで符号が異なるような区間a, bを定めると、その区間内でf(x)=0となるxが必ず1つ存在します。二分法は、f(x)=0となるxを近似的に求める方法のひとつです。概要は次のとおりです。
1) f(a)
f(b)とで符号が異なるような区間a, bを定める。
2) a, b
の中間点mを求める。(m=(a+b)/2)
3) f(m)
の符号がf(a)と同じであれば、amと置き換え、そうでなければbmと置き換える。
4) f(m)
0となるまで(2)に戻ってこの操作を繰り返す。
このように、二分法を用いると「解が存在する区間の幅」を半分また半分と繰り返し狭めていくことで方程式f(x)=0の近似解を求めることができます。二分法の原理を-に示します。
   

-
2023-07-09-fig1

詳細は、次の文献を参照願います。
・吉村季織:J. Comput. Chem. Jpn., Vol. 5, No. 1, pp. 29–38 (2006)
Microsoft Excelのテーブル機能を利用した酸塩基滴定曲線シミュレーション」
 https://www.jstage.jst.go.jp/article/jccj/5/1/5_1_29/_article/-char/ja/   

<二分法のやり方>
単調関数f(x)について、二分法によりf(x)=0の近似解を求める操作手順は次の通りです。
 0回目 (初期値の付与)
 f(a0)0となる初期値a0を与える。
 f(b0)0となる初期値b0を与える。
 a0, b0の中点、m0を求める。m0=(a0+b0)/2
 m0に対するf(m0)を求める   

 1回目
 IF関数を用いて、f(m0)0ならば、a1=a0、そうでなければ、a1=m0とする。
  ・IF関数 a1=IF(f(m0)<0, a0, m0)
 a1=m0ならば、b1=b0、そうでなければ、b1=m0とする(*1)
  ・IF関数 b1=IF(a1=m0, b0, m0)
 a1, b1の中点、m1を求める。m1=(a1+b1)/2
 m1に対するf(m1)を求める。
(*1) b1=IF(a1=m0, b0, m0)b1=IF(f(m0)<0, m0, b0) としてもよい。   

 2回目
 f(m1)0ならば、a2=a1、そうでなければ、a2=m1とする。
  ・a2=IF(f(m1)<0, a1, m1)
 a2=m1ならば、b2=b1、そうでなければ、b2=m1とする。
  ・b2=IF(a2=m1, b1, m1)
 a2, b2の中点、m2を求める。m2=(a2+b2)/2
 m2に対するf(m2)を求める。   

 
以下、これと同様の操作を繰り返します。
 
⋮   

 n回目
 f(mn-1)0ならば、an=an-1、そうでなければ、an=mn-1とする。
  ・an=IF(f(mn-1)<0, an-1, mn-1)
 an=mn-1ならば、bn=bn-1、そうでなければ、bn=mn-1とする。
  ・bn=IF(an=mn-1, bn-1, mn-1)
 an, bnの中点、mnを求める。mn=(an+bn)/2
 mnに対するf(mn)を求める。   

f(mn)≒0となったとき、mnが求める答えとなります。(*2)
(*2) a0, b0の初期値がたとえばpH=1, 15として、このときpHの範囲が10^-4以内になるためには、16×(1/2)^n=10^-4からn=17.3、つまりn=18以上であればよいことが分かる。   

<<弱酸の滴定における酸塩基平衡>>
前回(2023-07-02)と同様に、Cao mol/L1価の弱酸(HA)溶液, 体積V mLCbo mol/LNaOH溶液で滴定する(滴下量:T mL)ことを考えます。弱酸の酸解離定数をKaとします。
被滴定溶液中では次の平衡が成立しています。
HA
H+ A-
NaOH
Na+ OH-
H2 H+ OH-
したがって、被滴定溶液中には、H+, OH-, Na+, HA, A-という5種の化学種が存在します。これらの化学種の濃度を、[H], [OH], [Na], [HA], [A]とすると、次の関係式が成立します。

Ka = [H][A]/[HA] …①
Kw = [H][OH]
 …②
Ca = [A]
[HA] …③
Cb = [Na]
 …④
[H]
[Na] = [OH][A] …⑤
Ca = CaoV/(V
T) …⑥
Cb = CboT/(VT) …⑦   

⑤式から、
[H]
[OH][Na][A] = 0
この式の左辺をQと置きます。
Q = [H]
[OH][Na][A]
Q
[H]の関数として表すと、
Q = [H]
Kw/[H]
CbCaKa/([H]Ka)
さらにpHの関数として表すと、
Q = 10^-pH
Kw/10^-pH
CbCaKa/(10^-pHKa)
この式に⑥式, ⑦式を代入して、
Q = 10^-pH
Kw/10^-pH
CboT/(VT)CaoVKa/{(10^-pHKa)(VT)} …⑧
と表せます。   

Q=f(pH)とすると、f(pH)は単調減少関数です(*3)。前項から、f(a)0, f(b)0ならば、abの中間のどこかにかならずf(pH)=0となるpHが一つ存在します。したがって、Q=0を解くのに二分法を用いることができます。
(*3)
Q = [H]
Kw/[H][Na][A]
dQ/dpH = (dQ/d[H])/(d[H]/dpH)=(1
Kw[H]^-2d[A]/d[H])/(d[H]/dpH)
[A] = CaKa/([H]
Ka)なので、
d[A]/d[H] =
CaKa([H]Ka)^-2
また、pH = log[H]なので、
d[H]/dpH =
ln(10)[H]
したがって、
 dQ/dpH=
ln(10)[H](1Kw[H]^-2CaKa([H]Ka)^-2)0 ⇒ f(pH)は単調減少関数  

<<二分法による滴定曲線の描き方>>
二分法を用いて、Cao=0.1 mol/Lの酢酸(HA)溶液, 体積V=20 mL(pKa=4.76)Cbo=0.1 mol/LNaOH溶液で滴定する(滴下量:T mL)ときの理論的滴定曲線を描きます。
<二分法表の作成>(-を参照)
エクセルのワークシートで条件を示す領域を条件表、二分法を実施する領域を二分法表とします。操作方法は次の通りです。
・条件表
1)
条件表にpKa, pKw, Cao, V, Cboの既定値を入れる。Ka, Kwを計算する。T0を入れる。
・二分法表-0回目
2) pH
に初期値を入れる。a0=1, b0=15
3) m0
を計算する。m0=(a0+b0)/2
4) Q0, [H]0, [OH]0, [Na]0, [A]0, [HA]0
を計算する。
  ・Q0=[H]0[OH]0[Na]0[A]0
  ・[H]0=10^-pHm0
  ・[OH]0=Kw/[H]0
  ・[Na]0=CboT/(VT)
  ・[A]0=(
CaoVKa/(VT))/([H]0Ka)
  ・[HA]0=[H]0[A]0/Ka
・二分法表-1回目
5) a1=IF(f(m0)<0, a0, m0),  b1=IF(a1=m0, b0, m0),  m1=(a1+b1)/2
6) 0
回目 Q0[HA]0Q1[HA]1にコピーする。
・二分法表-2回目から30回目
7)
1回目 a1[HA]1a2[HA]2からa30[HA]30までコピーする。
8) m30
T=0のときのpHとなる。   

<データテーブルの作成>(-を参照)
⑧式において、Cao, Cbo, V, Ka, Kwは定数です。したがって滴下量Tが決まれば二分法によりpHを求めることができます。そして、Tを少しずつ変化させて、それに対応するpHを求めるためには、エクセルのデータテーブル作成機能を用います。操作は次の通りです。
9) L
列にTの値を0.1 mLきざみでT=040 mLまでいれる。
10)
 M列のT=0のセルにm30のセルをコピーする。
11)
データテーブルの作成範囲を指定する(見出しは指定しない!)
12)
データテーブルを作成する。
  メニューバー:「データ」
  ツールバー:「What-If分析」「データテーブル」「データテーブル」ダイアログボックスが出る 「列の代入セル」に"滴下量T"のセルを指定する(「行の代入セル」は空欄のまま) ⇒OK」   

これで、データテーブルにTの値に対するpHの値が出力される。   

<滴定曲線の作成>

データテーブルを基に弱酸(HA)の滴定曲線を描きます。
13)
見出しを含め散布図作成の範囲を指定する。
14)
散布図を作成する。
  メニューバー:「挿入」
  ツールバー:「グラフ」「散布図」「散布図(平滑線)OK
(散布図は目的に応じて適当にカスタマイズしてください)   

条件表、二分法表、データテーブルを-に示し、作成した滴定曲線を-に示します。   

-
2023-07-09-fig2

-
2023-07-09-fig3