大学化学, 2016, 31(8): 89-93 doi: 10.3866/PKU.DXHX201510005

自学之友

用Excel迭代运算程序解决复杂配位平衡体系中的准确计算问题

岳宣峰1, 张智娟1, 张延妮2

Solution for Accurate Calculations in Complicated Coordination Equilibrium System with Excel Iteration Program

YUE Xuan-Feng1, ZHANG Zhi-Juan1, ZHANG Yan-Ni2

基金资助: 陕西师范大学研究生教学改革与研究项目.  GERP-15-09
中央高校基本科研业务费专项资金项目.  GK201503003,GK201603104
陕西省自然科学基金.  2014JQ2-8048
陕西省科技厅社发攻关项目.  2015SF088

Fund supported: 陕西师范大学研究生教学改革与研究项目.  GERP-15-09
中央高校基本科研业务费专项资金项目.  GK201503003,GK201603104
陕西省自然科学基金.  2014JQ2-8048
陕西省科技厅社发攻关项目.  2015SF088

摘要

采用Excel软件工作表格,通过程序设计引导迭代计算方向,解决了两个复杂配位平衡体系中离子浓度的精确计算问题,发展了简便的Excel计算方法,为复杂配位平衡体系中的精确计算提供了思路。

关键词: 复杂配位平衡 ; 迭代 ; 准确计算 ; Excel

Abstract

The excel iteration program was developed and provided a general approach for accurate calculation of complicated coordination equilibrium systems.

Keywords: Complex coordination equilibrium ; Iteration ; Accurate calculation ; Excel

PDF (717KB) 元数据 多维度评价 相关文章 导出 EndNote| Ris| Bibtex  收藏本文

本文引用格式

岳宣峰, 张智娟, 张延妮. 用Excel迭代运算程序解决复杂配位平衡体系中的准确计算问题. 大学化学[J], 2016, 31(8): 89-93 doi:10.3866/PKU.DXHX201510005

YUE Xuan-Feng, ZHANG Zhi-Juan, ZHANG Yan-Ni. Solution for Accurate Calculations in Complicated Coordination Equilibrium System with Excel Iteration Program. University Chemistry[J], 2016, 31(8): 89-93 doi:10.3866/PKU.DXHX201510005

借助计算机语言和软件解决化学分析中的复杂计算已经引起人们的极大兴趣[1-7]。Excel软件[2]、VB[3]编程及C语言[4]已开始用于辅助酸碱滴定中的有关计算、绘图等。配位滴定中涉及到的计算往往更为复杂[8-10],其复杂的计算往往更需借助计算机语言或者软件的辅助。申义阳等[11]用BASIC编写程序计算配位滴定中的形成常数;付孝锦等[12]利用VB设计编程进行配位滴定理论终点的计算。常浪浪[13]探讨了利用Excel绘制配位滴定曲线的可能性,伍涛等[14]进一步用Excel进行配位滴定曲线的绘制。

在涉及配位滴定的计算中,在很多情况下滴定体系中同时存在多个配位平衡,目前高校通用教材[15-17]中通常只能对少数满足一定要求的体系经过简化处理,进行相关计算。如何利用通用的计算机语言和软件的强大计算能力,设计通用的程序来解决一般复杂体系的计算问题显得很有必要。

本文针对多个配位反应共存体系中离子浓度的精确计算问题,提出采用Excel软件工作表格,结合恰当的程序设计,引导迭代计算方向,发展简便的Excel方法,并应用于两个实例。

1 利用Excel的迭代运算功能解决多配位平衡共存体系中的精确计算问题

1.1 涉及单一离子浓度的复杂配位平衡体系的计算

在武汉大学编写的《分析化学》教材第5版[17]配位滴定章节中有这样一道例题:溶液中含有27 mgAl3+和65.4 mg Zn2+,若加入1.0 g NH4F,调节溶液的pH为5.5,以二甲酚橙作指示剂,用0.02 mol·L-1EDTA滴定Zn2+,能否准确滴定(假定终点的总体积为100 mL)?

在解题时,为了定量描述Al3+引起的EDTA的副反应,应该计算Al3+的平衡浓度,即[Al3+]。要计算[Al3+],就必须获得溶液中Al3+主要副反应发生的程度αAl(F),而αAl(F)取决于F-的平衡浓度[F-]sp,而[F-]sp的值很大程度上取决于αAl(F)。这样,逻辑的死循环出现了,其本质是复杂反应体系中多个平衡反应的同时共存,可以看出以上计算的难点在于如何获得[F-]sp

现行教材[17]中的解决方法是对F-和Al3+的各级配位物AlFi的稳定常数(lgβ1-lgβ6:6.13、11.15、15.00、17.76、19.32和19.84)进行分析后推测AlF5 2-是可能的主要型体,并只考虑主要配位级数的反应平衡,从而避开计算上的死循环弊端、简化了计算([F-′]sp = 0.27-5 × 0.01 = 0.22 mol·L-1)并进一步获得[F-]sp;随后通过αAl(F)的各构成项βi[F-]i的对比来验证这种推测的合理性。以上方法是现行多种教材对这类涉及多个配位反应的复杂平衡体系的通用处理做法。体现了目前化学分析中对复杂平衡体系计算的常规做法:忽略次要反应,通过主要平衡,简化数学计算。通过以上处理确实解决了一部分复杂体系中的计算问题。但以上做法存在的问题有:

(1)这种做法带来的误差大小很难考查,有时会带来很大的误差,以上例题中简化计算的处理带来的误差并不大,但这只是个特例(简化处理得到的[F-′]sp = 0.2200 mol·L-1,而采用精确处理方法获得的[F-′]sp = 0.2158 mol·L-1)。

(2)在以上做法中做推理时除了必要的逻辑,有时不得不对哪个平衡反应是主要过程进行猜测(比如在金属离子与辅助配位剂生成的各级型体的稳定常数差别不明显的情况下),这必然增加了判断的不确定性。

(3)有些教材中也提出了逐步逼近法(try-and-error method),即先通过简化处理获得一个近似的[F-]sp,然后利用这个近似的[F-]sp获得更为准确的αAl(F),基于此再获得更准确的[F-]sp,采用此法通过多次循环也许可以获得较为准确的结果,但是计算量可能会相当大。

(4)这类处理方法的最大弊端是:并不是所有的复杂多平衡体系都可以这样简化处理,比如:多个平行或者相继平衡反应趋势非常接近的情况。

为了精确求解[F-]sp,我们对F-参与的平衡反应做全面分析后将计算分成两个步骤,先计算出不参与AlFi的剩余F-的总浓度[F-′]sp,然后考虑酸效应后算出[F-]sp。根据物料平衡,有关F-关系式如下(考虑逻辑的演进,我们定义迭代计算初始[F-]sp为[F-]sp,初始,每轮迭代计算结果[F-]sp为[F-]sp,平衡):

$\left[ F{{{{-}'}}_{sp}} \right]={{c}_{F}}^{sp}-{{\beta }_{i}}{{\left[ A{{l}^{3+}} \right]}_{sp}}{{\left[ F{-}' \right]}_{sp,初始}}\times i$

式(1)中:

${{\left[ A{{l}^{3+}} \right]}_{sp}}={{c}_{A{{l}^{3+}}}}/{{a}_{Al}}_{\left( F \right)}$

式(2)中:

${{a}_{Al}}_{\left( F \right)}=1+{{\beta }_{i}}{{\left[ {{F}^{-}} \right]}^{i}}_{sp,初始}$

考虑酸效应后,[F-′]sp和[F-]sp,平衡之间的关系式为:

${{\left[ {{F}^{-}} \right]}_{sp,平衡}}={{\left[ {{F}^{-}}^{\prime } \right]}_{sp,}}/{{a}_{F\left( H \right)}}={{\left[ {{F}^{-}}^{\prime } \right]}_{sp,}}/\left( 1+\left[ H \right]+/{{K}_{a\left( HF \right)}} \right)$

其中,Ka(HF)为解离常数。

将式(2)-式(4)代入式(1),可以获得含有[F-]sp的方程:

${{\left[ {{F}^{-}} \right]}_{sp,平衡}}=\frac{{{K}_{a\left( HF \right)}}}{\left[ {{H}^{+}} \right]+/{{K}_{a\left( HF \right)}}}\times {{c}_{F}}^{sp}-\frac{{{\beta }_{i}}\times {{c}_{Al}}_{^{3+}}\times {{\left[ {{F}^{-}}^{\prime } \right]}_{sp,初始}}}{1+{{\beta }_{i}}{{\left[ {{F}^{-}}^{\prime } \right]}_{sp,初始}}}$

其本质是一个忽略了离子强度的含有[F-]sp的一元七次方程,如果展开此关系式,计算相当复杂。我们利用Excel软件的迭代计算功能巧妙设计表达式(5),可以在不把以上高次方程展开的情况下方便地求出该方程的解,即[F-]sp。在Excel工作表上运行式(5)的设计见图1,具体步骤如下:

图1

图1   计算[F-]sp,平衡的Excel表格


(1)进入Excel工作表,在“文件”菜单中选择“选项”命令,然后点击选项“公式”中的“计算选项”,再在“迭代计算”中设置最大迭代次数“1000”(根据误差及有理数解阈值等具体要求确定此数值),最大允许误差设置为“0”(根据允许误差的要求来设置此数值)。

(2)在单元格B2到F2中依次键入各种已知数值:0.27 (溶液中F-的分析浓度cFsp ,mol·L-1)、0.01 (溶液中Al3+的分析浓度cAl3+ ,mol·L-1)、5.5 (平衡体系的pH)、6.6 × 10-4 (氢氟酸水溶液的解离常数Ka(HF))、0.27 (迭代计算中[F-]sp的初始值[F-]sp,初始,mol·L-1,一般根据单调区间和值阈等给一个合适的初始数值,本例可以取值0.27 mol·L-1)。

(3)第3行到第6行依次填充:各级AlFi的形成常数βi (第3行);各级AlFi化学式中含有F-的个数(第4行);αAl(F)的各主要组成式表达式βi[L]i,例如单元格B5中的具体表达式为“=B3*POWER($F$2,B4)”(第5行);以及各级AlFi形成时消耗的F-的浓度βi[Al3+]sp [F-]isp,初始× i,例单元格B6中的表达式为:“=$C$2/(1+SUM($B$5:$G$5))*B3*POWER($F$2,B4)*B4”(第6行)。

(4)在单元格G2中键入[F-]sp,平衡的表达式,即式(5) (每轮循环计算的终点值),G2中的具体内容为:“=(B2-SUM(B6:G6))/(POWER(10,-D2)/E2+1)”。按“Enter”键获得来自初始值[F-]sp,初始的第一轮[F-]s,平衡p数值。

(5)再在单元格G2中键入“=F2”,按“Enter”键启动迭代计算。瞬即在单元格F2与G2中同时出现[F-]sp,平衡的数值“0.2158”。

1.2 涉及多个离子浓度的复杂配位平衡体系的计算

在武汉大学编写的《分析化学》教材第5版[17]配位滴定章节中还有这样一道作业题:在pH = 6.0的溶液中,含有0.02 mol·L-1 [Zn2+]和0.02 mol·L-1 [Cd2+],游离酒石酸根(Tart)浓度为0.2 mol·L-1,加入等体积的0.02 mol·L-1 EDTA,计算lg K′CdY和lg K′ZnY值。

解题的关键在于计算Zn2+、Cd2+及EDTA的平衡浓度[Zn2+]、[Cd2+]和[Y]。按照教材[17]中的思路是先预判以Cd2+与EDTA的反应为主反应进行分析,进而考虑由Tart等引起的Cd2+的副反应,由H+、Zn2+等引起的EDTA的副反应;而在接下来考虑的由Zn2+引起的EDTA的副反应中,Zn2+的平衡浓度[Zn2+]就成了关键;而[Zn2+]的获得要求先弄清楚Zn2+的副反应,计算Zn2+的副反应需要考虑3个物质的平衡浓度,分别是OH-、Tart及EDTA;而EDTA的平衡浓度却是以上计算的结果,这样以来死循环出现了。其本质是这里有5个平衡反应共存,计算的难点在于如何获得Zn2+、Cd2+及EDTA的平衡浓度[Zn2+]、[Cd2+]和[Y]。

武汉大学教辅材料[18]里提供的解法是:默认此反应系统中Zn2+几乎100%与Tart反应 $\frac{{{a}_{Zn\left( Tart \right)}}}{{{a}_{Zn}}_{\left( Y \right)}}\gg 1$ ,而EDTA几乎100%与Cd2+反应( $\frac{{{a}_{Y\left( CD \right)}}}{{{a}_{Y}}\left( _{Zn} \right)}\gg 1$ ;在这个前提下计算Zn2+的副反应时只要考虑来自Tart的影响,从而避免了计算[Y](以[Y]已知为前提)的尴尬。通过这种处理,以上复杂问题得以简化进行。这样的简化处理存在着类似的问题:判断的猜测性及不确定性(比如哪个是主反应)、不易估量的计算误差等(在教材[17]和教辅教材[18]中该题的有关不当简化导致了错误的lg K′ZnY,这一问题已经被细心的学者发现并改正[19]);还有最致命的弊端,一旦可简化的前提不满足,以上通用的简化做法就束手无策了。本例之所以有可能通过简化处理得到正确的答案[19],是因为该多平衡体系恰好符合可简化的前提(虽然Zn2+、Cd2+与主要配位剂EDTA结合力近似,而它们与辅配位剂Tart结合力却相差甚大),这也只是一个特例,在更为一般的实际实验和计算中,对于一个这样既有主要配位剂EDTA与辅助配位剂L,又有混合金属离子M及N的多平衡共存体系,不通过计算一般无法事先判断哪个反应是主反应。更有甚者,在有些金属离子M和N共存的反应体系中,M和N与各种配位剂(Y及L)的结合力相当,难分主次。

为了精确求解[Zn2+]、[Cd2+]和[Y],需要发展适合此类体系的更为通用、更为准确的处理方法。首先对3种离子参与的5个共存的反应平衡做全面分析(酒石酸在pH = 6.0时的酸效应可忽略不计[17])。根据3种物质的物料平衡,有关关系式如下:

$\left\{ \begin{align} & {{c}_{Zn}}_{^{2+}}=\left[ Z{{n}^{2+}} \right]+\left[ ZnY \right]+\left[ ZnTart \right]+\left[ ZnTar{{t}_{2}} \right]=0.01 \\ & {{c}_{Zd}}_{^{2+}}=\left[ C{{d}^{2+}} \right]+\left[ CdY \right]+\left[ CdTart \right]=0.01 \\ & {{c}_{Y}}=\left[ CdY \right]+\left[ ZnY \right]+\left[ Y \right]+\left[ YH \right]+\left[ Y{{H}_{2}} \right]+\ldots \ldots +\left[ Y{{H}_{6}} \right]=0.01 \\ \end{align} \right.$

利用副反应考虑以上等式,得:

$\left\{ \begin{align} & \left[ Z{{n}^{2+}} \right]\left( {{a}_{Zn\left( Y \right)}}+{{a}_{Zn\left( Tart \right)}}-1 \right)=0.01 \\ & \left[ C{{d}^{2+}} \right]\left( {{a}_{Cd\left( Y \right)}}+{{a}_{Cd\left( Tart \right)}}-1 \right)=0.01 \\ & \left[ Y \right]\left( {{a}_{Y}}_{\left( Zn \right)}+{{a}_{Y}}_{\left( Cd \right)}+{{a}_{Y}}_{\left( H \right)}-2 \right)=0.01 \\ \end{align} \right.$

进一步计算各个副反应系数,得到:

$\left\{ \begin{align} & \left[ Z{{n}^{2+}} \right]\left( {{K}_{ZnY}}\left[ Y \right]+{{\beta }_{1}}\left[ Tart \right]+{{\beta }_{1}}{{\left[ Tart \right]}^{2}}+1 \right)=0.01 \\ & \left[ C{{d}^{2+}} \right]\left( {{K}_{CdY}}\left[ Y \right]+\beta \left[ Tart \right]+1 \right)=0.01 \\ & \left[ Y \right]\left( {{K}_{ZnY}}\left[ Z{{n}^{2+}} \right]+{{K}_{CdY}}\left[ C{{d}^{2+}} \right]+{{a}_{Y}}_{\left( H \right)} \right)=0.01 \\ \end{align} \right.$

这是一个三元高次方程,可以通过Excel中单变量求解等方法[20]获得[Zn2+]、[Cd2+]和[Y],但计算稍显复杂;还有一个更为简便的方法,可以利用Excel软件的迭代运算功能巧妙设计式(8)中的任何一个等式,从而在不把以上高次方程展开的情况下方便地求出该方程的解。比如由式(8)中:[Y](KZnY[Zn2+] + KCdY[Cd2+]+αY(H)) = 0.01,得到:

$\left[ Y \right]=0.01{{\left( {{K}_{ZnY}}\left[ Z{{n}^{2+}} \right]+{{K}_{CdY}}\left[ C{{d}^{2+}} \right]+{{a}_{Y}}_{\left( H \right)} \right)}^{-1}}$

将式(8)中前两个等式代入式(9),得到(考虑逻辑的演进,我们定义迭代计算初始[Y]为[Y]初始,每轮迭代计算结果的[Y]为[Y]平衡):

${{\left[ Y \right]}_{平衡}}=0.01{{\left( \begin{align} & {{K}_{ZnY}}\frac{0.01}{{{K}_{ZnY}}{{\left[ Y \right]}_{初始}}+{{\beta }_{1}}\left[ Tart \right]+{{\beta }_{1}}{{\left[ Tart \right]}^{2}}+1} \\ & {{K}_{CdY}}\frac{0.01}{{{K}_{CdY}}{{\left[ Y \right]}_{初始}}+\beta \left[ Tart \right]+1+{{a}_{Y}}_{\left( H \right)}} \\ \end{align} \right)}^{-1}}$

在Excel工作表上运行式(10)的设计见图2,具体步骤如下:

图2

图2   计算[Zn2+]、[Cd2+]、[Y]的Excel表格


(1)设置同2.1节。

(2)在B列、D列和F列分别输入与Zn2+、Cd2+和配位剂有关的常数、浓度及副反应系数等。从B1到B6分别输入KZnYαZn(Y初始) (1+KZnY[Y]初始,具体表达式为“=1+B1*F1”)、αZn(Tart) (β1[Tart]+β2[Tart2]2+1,具体表达式为“=1+B4*F2+B5*POWER(F2,2)”)、β1(ZnTart2)β2(ZnTart2)及[Zn2+] (0.01×(KZnY[Y]+β1[Tart]+β2[Tart]2+1)-1,具体表达式为:“=0.01/(POWER(10,16.5)*F1+POWER(10,6.32)+POWER(10,1.4)+1)”)。

在F列,从F1到F6依次键入[Y]起始(迭代运算中的初始值,本例可以取值0.01 mol·L-1)、[Tart]、αY(H) (pH = 6.0)、αY(Zn) (1+KZnY[Zn],具体表达式为“=1+B1*B6”)、αY(Cd) (1+KCdY[Cd],具体表达式为“=1+D1*D6”)和[Y]平衡(式(10)右侧,具体表达式为:“=0.01/(POWER(10,16.5)*0.01/(POWER(10,16.5)*F1+POWER(10,6.32)+POWER(10,1.4)+1)+POWER(10,16.46)*0.01/(POWER(10,16.46)*F1+POWER(10,1.8)+1)+POWER(10,4.65))”)。

(3)再在单元格F1中键入“=F6”,按“Enter”键启动迭代运算。瞬即在单元格B6、D6及F6中出现[Zn2+]、[Cd2+]和[Y]的数值。

通过[Zn2+]、[Cd2+]和[Y]的准确数值,结合教材上lg KʹMY的计算公式[17],很容易获得lg ZnY和lg CdY的值分别是-0.23和6.48。有趣的是,关于该题的解法,传统方法已经做过计算[18]和研判[19],对比之下,不难看出我们提出方法的准确性、通用性和简便性。

2 结论

通过以上两道计算题的求解,可以看到在同时存在多个平衡反应的体系中遇到复杂计算时,利用通用软件Excel的迭代运算功能、编写运算程序可以快速地获得相关计算的准确结果(在设计迭代运算时,注意要遵循一定的计算次序,否则即使有平衡计算关系等式,Excel也不能执行循环计算。在本文中用[F-]sp,初始和[F-]sp,平衡、[Y]起始和[Y]平衡结合来指示运算的次序和方向),为这类复杂问题的解决提供了一般的思路。拓展了Excel在分析化学中的应用,为强化化学分析计算提供了一个简单且方便的选择。

参考文献

雷志刚; 陈标华; 李成岳. 计算机与应用化学, 2002, 19 (6), 775.

[本文引用: 1]

岳宣峰; 张延妮; 卢樱; 张志琪. 计算机与应用化学, 2006, 23 (11), 1153.

[本文引用: 1]

韩海洪. 青海师范大学学报(自然科学版), 2009, 4, 44.

[本文引用: 1]

赵鑫; 王殿书; 丛培盛; 朱仲良. 计算机与应用化学, 2010, 27 (2), 257.

[本文引用: 1]

占达东; 柏文泉; 李功科; 甘峰. 大学化学, 2010, 25 (2), 32.

姚卫峰; 池玉梅; 张丽. 广州化工, 2010, 38 (1), 224.

彭琳; 詹世景; 乔伟艳. 广东化工, 2014, 22 (41), 163.

[本文引用: 1]

韩金土; 薛灵芬; 许春萱. 信阳师范学院学报(自然科学版), 2000, 17 (3), 169.

[本文引用: 1]

李丽敏. 山东师范大学学报(自然科学版), 2002, 17 (3), 88.

乔成立; 李文新; 乔宇泽. 高师理科学刊, 2009, 29 (5), 73.

[本文引用: 1]

申义阳; 李俊; 张琛; 鲁风菊. 洛阳师专学报, 1998, 17 (2), 91.

[本文引用: 1]

付孝锦; 张运陶. 西华师范大学学报(自然科学版), 2003, 24 (4), 463.

[本文引用: 1]

常浪浪. 福建分析测试, 2008, 17 (4), 77.

[本文引用: 1]

伍涛; 吴湘; 童艳华. 湖州师范学院学报, 2015, 37 (8), 95.

[本文引用: 1]

李克安. 分析化学教程,北京:北京大学出版社, 2006, 4.

[本文引用: 1]

华中师范大学. 分析化学(上册), 第4版北京:高等教育出版社, 2011, 6.

武汉大学. 分析化学(上册), 第5版北京:高等教育出版社, 2006, 204- 215.

[本文引用: 8]

赵中一; 邱海鸥. 分析化学辅导与习题详解,武汉:华中科技大学出版社, 2008, 87- 88.

[本文引用: 3]

池泉; 唐定国; 刘畅先. 化工高等教育, 2013, 5, 101.

[本文引用: 3]

彭海静. 计算机应用与软件, 2006, 23 (2), 142.

[本文引用: 1]

/