前回(2022-10-16)は、エクセルで二分法を用いて1価の弱酸のpHを求める方法について説明しました。今回はエクセル-ソルバーを用いる方法について説明します。   

<<ソルバー>>
ソルバーとは、複数の変数を含む数式において、目標値および制約条件を満たす最適な変数値を求める機能のことです。ソルバーを用いると、連立方程式において最適な近似解を簡単に求めることができます。以下、ソルバーの基本的手順を述べます。

<ソルバーの組込み>
もしExcelでソルバー機能を組み込んでいなければ、「ファイル」「オプション」→「アドイン」Excelアドイン」「設定」「ソルバー-アドインにチェック」OK」でソルバーを追加します。[データ]タブの右端にある[分析]グループに[ソルバー]が表示されます。   

<ソルバーのやり方>
「0.1 mol/Lの酢酸(pKa=4.76)のpHを求める」ことを例題として「ソルバー」による方法を説明します(2020-10-18)。   

関係式は次の通りです。
Ka = [H][A]/[HA]
Kw = [H][OH]
α = 1[H]/Ka
Ca = [A]+[HA]
 (物質バランス式)
[H] = [OH]
[A] (電荷バランス式)
pH =
log[H]
1価の弱酸(HA)の電荷バランス式から導かれる次の関数Qを考えます。
Q = [H]
[OH][A]   

Q =0となるときのpHをソルバーで求める手順を次に示します。
① エクセルのワークシートに
 pKa, pKw, Ca, Ka, Kw, pH, α, [H], [OH], [A], [HA], Qのためのセルを作成する(C4~C15)。   


2022-10-23-①

 pKa, pKw, Caの値をC4C6のセルに入れ、Ka, Kwを計算する(C7, C8)(Ka, Kwのセルに定数値を直接入力してもよい)
  ・C4=4.76
  ・C5=14
  ・C6=0.1
  ・C7=10^-C4 (Ka = 10^pKa)
  ・C8=10^-C5 (Kw = 10^pKw)   


2022-10-23-②a

 pHの初期値をC9に入れる。たとえば、pH=3とする(*)
  ・C9=3
(*1) 初期値はできるだけ答えに近いと考えられる値を入れること。著しく離れた値を入れると収束しないことがある。ソルバー実施後にはこのセルにpHの正確な値が表示される。   

④ C10C13α, [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])      

,
2022-10-23-③④

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


2022-10-23-⑤

 ソルバーのパラメーターを設定する。
  [目的セルの設定]: $C$15
  
[目標値]: [指定値]にチェックを入れ、"0"を指定する。
  
[変数セルの変更]: $C$9
  
[制約条件の対象]: 今回はなにも入れない(*2)
(*2) 変数が複数になる場合は制約条件が必要となる(2020-10-18)

  [制約のない変数を非負数にする]: チェックを入れない。
  
[解決方法の選択]: [GRG非線形]を選択する。
  ・
[オプション]を選択する。   

-[ソルバーのパラメーター]
2022-10-23-⑥-1a

  ・([オプション]の選択)  [オプション]ダイアログボックスが開く。
  [制約条件の精度] (*3)"1e-10" [OK] (もとの画面へ)
(*3) 精度として、1e-10 1e-15くらいが適切であろう。   

-[オプション] 
2022-10-23-⑥-2a

⑦ ソルバーの解を求める。
  もとの画面 [解決] [ソルバーの結果]ダイアログボックスが開く。   

-[ソルバーのパラメーター]
2022-10-23-⑦a

  ・([ソルバーの結果]ダイアログボックス) ⇒ 「ソルバーによって解が見つかりました」 ⇒ [OK] ⇒ C9に求める答えが出る。   

-[ソルバーの結果]
2022-10-23-⑧a

ソルバー実施後のシートを-に示します。   

-
2022-10-23-figb

<「ソルバー」実施時の注意点>
もし、結果がエラー(「実行可能解が見つかりません」)となる場合は、
  ・計算式の間違い 
  ・未知数に対する関係式の不足 
  ・変数セルの初期値が不適切 
  ・変数セルの選定が不適切 
  ・精度の設定が不適切 
などが考えられます。
変数の桁数が大きく変動する場合は、対数変換等を行うことが必要でしょう。   

<「二分法」と「ソルバー」の比較>
「二分法」は最終的に変数が1個(たとえばpH)の場合しか適用できませんが、「ソルバー」を用いると、制約条件を加えることにより変数が2個以上でも解析が可能となります(*)
(*4) ソルバーが解ける条件は、(変数セルの個数){(目的セルの個数(=1))(制約条件の個数)}である。   

「ソルバー」の欠点は「データテーブル」との併用ができないことです。「データテーブル」を用いてセルの数値を様々に変化させたい場合には「二分法」を用いる方が便利です(*)
(*5) たとえば、KaCaを変化させたときのpHの変化を知りたい場合(2022-10-11 図-4)や滴下量を変化させて滴定曲線を作成する場合(2021-12-05)など。もしこのような場合に「ソルバー」を用いると、条件を変化させる都度「ソルバー」操作を実行する必要があり面倒である(マクロを使用すれば一括操作が可能となるが、)。