分析化学中常常出现各种各样奇奇怪怪的近似,例如一元弱酸pH的计算何时可以用近似式、何时可以用最简式。实际上,近似的使用都源自计算力的不足。在有计算器的情况下,很多问题都可以直接精确求解,而那些玄学的近似条件就变得不那么必要。
⚠不同计算器上的操作可能有区别。不应盲目照搬本文的按键操作。
⚠利用本文的方法,不代表可以完全抛弃必要的近似。因为精确迭代算式的推导可能很麻烦,或推出来之后发现难以收敛。
一元弱酸pH的迭代计算
给定一元弱酸的
将它写成迭代的形式:
我们以 0.1 mol/L 醋酸为例,在计算器上进行这一计算。首先存储各个参数。
用变量A存储
(请原谅我不知道如何把这里的框弄得一样大)
此时屏幕显示
至此我们完成了参数的设定。下面设置初猜(即迭代第一轮所使用的
此时屏幕显示
其中
亦可将此精确结果和直接使用最简式得到的结果对比:
结果并没有差太多。
我们再以0.1 mol/L二氯乙酸(pKa=1.30)和0.01 mol/L盐酸甲胺(pKa=10.64)为例。
0.1 mol/L二氯乙酸(pKa=1.30)仿照上面的过程,2轮之后也收敛到了0.0500 mol/L,显然在这一体系中,电离对游离的酸分子的浓度的影响已经不可忽略。如果这时我们仍然用最简式计算:
显然与精确值有极大的差距。如果酸性再强一点或者酸浓度再低一点,甚至可能算出氢离子浓度大于酸浓度的结果!
0.01 mol/L盐酸甲胺(pKa=10.64)仿照上面的过程,2轮之后也收敛到了
我们发现最终得到
思考 我们这类问题中使用的迭代算式
也可以写作
因此可写为如下的迭代的形式:
用这个迭代算式进行迭代会发生振荡(指迭代结果越来越偏离解的行为)。任选上面三个问题中的一个,验证振荡的发生。仿照高数课上学习的级数收敛和发散的判定,试着总结一下,怎样的式子不容易发生振荡?有什么方法可以抑制振荡?文末有参考答案。
多元弱酸pH的迭代计算
以0.1 mol/L砷酸为例(pKa1=2.21,pKa2=6.93,pKa3=11.51)。令
我们有:
参照上面“思考”栏目中对收敛性的讨论,我们将其写作:
写成迭代的形式:
仍然使用
思考 本题中,如果只考虑第一级电离,使用最简式计算,得到什么结果?误差大吗?什么样的多元酸适合用这种迭代的方法进行计算?
思考 本题中,用下面的式子进行迭代计算,验证振荡的发生。
将上面的迭代式子略加改写:
观察是否发生振荡。
两性物种pH的迭代计算
以0.1 mol/L丁二酸氢钠(NaHA)为例(pKa1=4.21,pKa2=5.64)。设
我们有:
我们将其写作:
写成迭代的形式:
使用最简式给出的初猜
以丁二酸氢钠的分析浓度的负对数pC为横轴,溶液pH(左,绿色)和丁二酸一氢根的分布系数x(HA-)为纵轴,绘图如下:
![92c9664f-4017-eb11-8da9-e4434bdf6706.png](http://p04.5ceimg.com/content/92c9664f-4017-eb11-8da9-e4434bdf6706.png)
思考 可以从这张图中解读出什么信息?为什么中间有很陡峭的一段?
小结
迭代是解决非线性复杂方程的常用策略,且对计算器使用者友好,在很多情况下是一种优良的策略,可以帮助我们精确求解平衡问题。利用一些策略,例如与上一步的结果加权平均、限制迭代算式次数在(-1,1)之间、尽量选用变动不大的变量等,可以有效提高迭代收敛的成功率,但也并不总是可以成功;同时,精确的迭代算式的推导仍然很可能很麻烦。因此,适当的近似仍然常常是必要的,迭代法的使用绝不代表可以完全抛弃必要的近似。
参考答案(怎样的式子不容易发生振荡,如何抑制振荡)
一般来说,在形如x = f(x)的迭代算式中,f(x)次数绝对值小于1的时候不容易发生振荡,如果f(x)次数等于1而一次项系数小于1,也不太可能发生振荡。因此,一个较好的策略是,在关于x的方程中,我们将最高次项放在左边,而后同时开最高次方,得到迭代算式。
如果振荡发生了,一个很好的抑制振荡的方法是将这次算出的结果和上次的混合,取平均值。例如,x = 0.1f(x) + 0.9x 比 x = f(x) 容易收敛。也可以用几何平均或其它你认为合适的平均。