前回(2023-04-16)は弱酸、弱塩基のpHを求めるにあたって、場合分けをして場合ごとに近似式を用いて計算しました。しかし場合分けをせずに方程式を解くことができれば計算操作はより楽になります。表計算ソフト(マイクロソフト-エクセル)を活用すると高次方程式の近似解を直接求めることができます。今回はエクセルで「ソルバー」を用いる方法について説明します。
<<エクセルの利用>>
前回述べたように、モノプロトン弱酸(酸解離定数Ka, 濃度Ca)のpHを求める場合、厳密には[H]に関する3次方程式を解く必要がありますが、場合分けをして近似を行うことにより次数を下げることができます。
この近似法を最も能率的に行うには、
(1) まず最も簡単な近似式[H]=√(KaCa)を計算し、得られた結果が近似の条件([H]>>[OH]およびCa>>[H])を満たせばこの値を採用する。
(2) [H]>>[OH]は満たすがCa>>[H]を満たさない場合は、
二次方程式を解いて得られる近似式[H]
= {-Ka+√(Ka^2+4KaCa)}/2を用いる。
(3) Ca>>[H]は満たすが[H]>>[OH]を満たさない場合は、
近似式[H]
= √(KaCa+Kw)を用いる。
(4) どちらの条件も満たさない場合は、近似はできない。三次方程式を解く必要がある。
という手順を取ります。
このとき、近似の条件が成立するかどうかの確認は面倒です。エクセルを用いると上記のような場合分けをせずに、3次方程式の近似解を直接求めることができます。
エクセルを利用してpHを求める場合、いくつかのやり方があります(エクセルの使用方法の基礎は理解しているものとして話を進めます)。主な方法として、
(1) ソルバー機能を利用する方法(ソルバー法)
(2) 解を含む区間の中間点を求める操作を繰り返すことによって方程式Q(pH)=0を解く方法(二分法)
(3) Q(pH)=0に対してpHを与え、MIN, MATCH, INDEX関数を利用して|Q(pH)|の最小値を求める方法(MIN法)
(4) 厳密式を[H]=G([H])の形に変形し、G([H])に初期値([H]0)を代入して[H]1を求め、この値をさらにG([H])に代入して[H]2を求め、これを繰り返して[H]nが一定値に収束するまで続ける方法(反復法)
などがあります。今回はソルバー法について説明します。
<<ソルバー法-モノプロトン弱酸>>
エクセルで「ソルバー」とは、複数の変数を含む数式において、目標値および制約条件を満たす最適な変数値を求める機能のことです。ソルバーを用いると、連立方程式において最適な近似解を簡単に求めることができます。
ソルバー法の説明に入る前に、モノプロトン弱酸のpHを求めるときの関係式についておさらいしておきます。
関係式は次の通りです。
平衡定数式:
Ka = [H][A]/[HA] …①
Kw = [H][OH] …②
物質バランス式:
Ca = [A]+[HA] …③
電荷バランス式:
[H] = [OH]+[A] …④
これらの式から、化学種濃度[OH], [A]を[H], Ka, Kw, Caで表すと、
[OH] = Kw/[H]
[A] = Ca/(1+[H]/Ka)(*1)
(*1) ①から[HA]=[H][A]/Ka
この式を③に代入して、
Ca = [A]+[H][A]/Ka=[A](1+[H]/Ka)
∴ [A] = Ca/(1+[H]/Ka)
1+[H]/Ka = αと置くと、[A] = Ca/α
ここで、1価の弱酸(HA)の電荷均衡式から導かれる次の関数Qを考えます。
Q = [H]-[OH]-[A]
= [H]-Kw/[H]-Ca/(1+[H]/Ka)
= 10^-pH-Kw/10^-pH-Ca/(1+10^-pH/Ka)
Q = 0を解くことによりpHを求めることができます。
以下、ソルバーを用いてQ = 0を解くときの基本的手順を述べます。ここではExcel-2016を使用しています。
<ソルバーの組込み>
もしExcelでソルバー機能を組み込んでいなければ、「ファイル」→「オプション」→「アドイン」→「Excelアドイン」→「設定」→「ソルバー-アドインにチェック」→「OK」でソルバーを追加します。[データ]タブの[分析]グループに[ソルバー]が表示されます。
<ソルバー法の手順>
「0.1
mol/Lの酢酸(pKa=4.76)のpHを求める」ことを例として「ソルバー」による方法を説明します。
① エクセルのワークシートにpKa, pKw, Ca, Ka, Kw, pH, α, [H], [OH], [A], [HA], Qのためのセルを作成する(C4~C15)。

② pKa,
pKw, Caの値をC4~C6のセルに入れ, Kwを計算する(C7, C8)。(Ka, Kwが与えられている場合は、C7, C8セルに定数値を直接入力する)
・C4: =4.76
・C5: =14
・C6: =0.1
・C7: =10^-C4 (Ka = 10^-pKa)
・C8: =10^-C5 (Kw = 10^-pKw)
③ pHの初期値をC9に入れる。たとえば、pH=3とする(*2)。
・C9: =3
(*2) 初期値はできるだけ答えに近いと考えられる値を入れること。一般にソルバーで著しく離れた初期値を入れるとエラーとなることがある。
④ C10~C13にα, [H], [OH], [A], [HA], Qの計算式を入れる。
・C10: =1+C11/C7 (α=1+[H]/Ka)
・C11: =10^-C9 ([H]=10^-pH)
・C12: =C8/C11 ([OH]=Kw/[H])
・C13: =C6/C10 ([A]=Ca/α)
・C14: =C11*C13/C7 ([HA]=[H][A]/Ka)
・C15: =C11-C12-C13 (Q = [H]-[OH]-[A])
⑤ ソルバーを開く。
・[データ] ⇒ [ソルバー] ⇒ [ソルバーのパラメーター]ダイアログボックスが開く
⑥ ソルバーのパラメーターを設定する。
・[目的セルの設定]: $C$15
・[目標値]: [指定値]にチェックを入れ、"0"を指定する。
・[変数セルの変更]: $C$9
・[制約条件の対象]: 今回はなにも入れない(*3)。
(*3)変数が1個にとき制約条件は不要。変数が複数になる場合は制約条件が必要となる。
・[制約のない変数を非負数にする]: チェックを入れない。
・[解決方法の選択]: [GRG非線形]を選択する。
・[オプション]を選択する。
・([オプション]の選択) ⇒ ([オプション]ダイアログボックスが開く)
・[制約条件の精度] (*4)に"1e-10" ⇒ [OK] ⇒ (もとの画面へ)
(*4) 精度として、1e^-10 ~ 1e^-15くらいが適切であろう。
⑦ ソルバーの解を求める。
・もとの画面 ⇒ [解決] ⇒ [ソルバーの結果]ダイアログボックスが開く。
・([ソルバーの結果]ダイアログボックス) ⇒ 「ソルバーによって解が見つかりました」 ⇒ [OK] ⇒ C9に求める答えが出る。
ソルバー実施後のシートを図-1に示します。
<「ソルバー」実施時の注意点>
もし、結果がエラー(「実行可能解が見つかりません」)となる場合は、
・計算式の間違い
・未知数に対する関係式が不足
・変数セルの初期値が不適切
・変数セルの選定が不適切
・精度の設定が不適切
などが考えられます。
変数の桁数が大きく変動する場合は、対数変換等を行うことが必要となるでしょう。この意味で変数セルとしては[H]よりもpHを選んだほうが適切と考えられます。
<<モノプロトン弱塩基>>
弱塩基の場合も弱酸と同様の手順で実施できます。例えばNH3のpHを求める場合、
Kb = [NH4][OH]/[NH3]
Kn = [NH3][H]/[NH4] = Kw/Kb
Kw = [H][OH]
Cb = [NH3]+[NH4]
[H] = 10^(-pH)
[OH] = Kw/[H]
[NH3] = Cb/(1+[H]/Kn)
[NH4]
= [[NH3][H]/Kn
Q = [H]-[OH]+[NH4] =
0
目的セルをQ, 目標値を0とし、変数セルにpHの初期値を入れソルバーを実施すると、変数セルに求めるpHがアウトプットされます。
<例題1> ソルバー法で0.001 mol/L アンモニアのpHを求めよ。 pKb = 4.75とする。
アンモニウムイオンの酸解離定数をKnとすると、pKn=pKw-pKb=9.25。
Kn = [NH3][H]/[NH4]
Kw = [H][OH]
Cb = [NH3]+[NH4]
[H] = 10^(-pH)
[OH] = Kw/[H]
[NH3] = Cb/(1+[H]/Kn)
[NH4] = [[NH3][H]/Kn
Q = [H]-[OH]+[NH4] =
0
(ソルバーのパラメーター)
目的セル:Q, 目標値:0
変数セル:pH
ソルバーの実施結果を図-2に示す。
図-2








コメント