283
科教论丛
应用Matlab确定化学反应速率方程
文⊙ 胡树青(青海民族学院 青海西宁)
摘要:速率方程的确定是研究反应速
率的规律,寻找反应的适宜条件所必需。
本文调用Matlab中提供的内部功能函数,
用微分法处理动力学数据确定反应级数和
计算速率常数。结果
明, 该方法处理数
据简单实用, 可使微分法得到广泛应用。
关键词:速率方程;微分法;反应级
数;速率常数;Matlab
研究化学动力学问题总是由实验测定
得出速率方程。这不只是为了证实机理,
也是研究反应速率的规律,寻找反应的适
宜条件所必需。速率方程的确定常用积分
法和微分法。积分法是利用速率方程的积
分式确定反应级数的方法, 它的优点是若
选准级数,则直线关系较好,而且直接可
求出k值;缺点是若试不准,则需要多次
试,方法繁杂,一般只适用于整数级[1]。
微分法可适用于各种级数的确定, 实用性
强, 但数据处理太繁琐。本文调用Matlab
中提供的内部功能函数,用微分法处理动
力学数据确定反应级数和计算速率常数,
结果表明, 该方法处理数据简单实用, 可
使微分法得以广泛使用。
一、原理
由实验数据得出的经验速率方程,一
般也可写成幂乘积形式:
在一定条件下,化学反应速率方程的
微分式可化为为通式:
两边取对数得:
由上式可知lnv与lnc成线性关系,直
线的斜率就是反应级数n,由直线的截距
就可确定k。
二、程序设计基本思路
将实验所得不同时刻的t和所对应的
反应物浓度 c 数据通过三次埃尔米特
(Hermite)插值[2]和差商法[3]求出c-t曲
线上各点的斜率,就可以得到不同浓度 c
对应的速率v;再计算出lnv和lnc,最后
用最小二乘法线性回归[2],求出lnv与lnc
的线性关系,其直线的斜率就是反应级数
n,由直线的截距就可确定k。
Matlab作为一个功能强大的科学计算
平台,几乎满足所有的计算需求,它已成
为最为普遍的科学计算工具之一[2]。本文
调用Matlab提供的内部插值interp1功能
函数、差商diff(Y)./diff(X) 功能函数、线
性回归polyfit功能函数进行数据处理。
三、程序清单
%数据输入
edit t.m (输入时间数据)
edit c.m (输入浓度数据)
%数据处理程序 fyjsh.m
load t.m (调入时间数据)
load c.m (调入浓度数据)
d=(max(t)-min(t))/10000;
X=min(t):d:max(t);
Y=interp1(t,c,X,'pchip');
v=diff(Y)./diff(X);
log(-v);
m=length(Y)-1;
logc=log(Y(1:m));
nk=polyfit(logc,log(-v),1);
n=nk(1);
k=exp(nk(2));
n
k
四、示例
(一)25℃时,SbH3(g) 在Sb(s) 上分
解的数据如下表1[4].
表1 SbH3(g)在Sb(s)上的分解实验数据
运行程序后计算结果如下:
反应级数n= 0.5572;速率常数k=
0.4543
(二)25℃时,反应 ,
(CH3)3CBr浓度c(mol·dm-3)与时间t的实
验数据如下表2[1].
表2 反应 实验数据
运行程序后计算结果如下:
反应级数n=0.9838;速率常数k=
0.0487
(三)40℃时,N2O5在CCl4溶液中分
解放出氧气,不同时间测得氧气体积如下
表3[1].
表3反应 实验
数据
运行程序后计算结果如下:
反应级数n=1.0294;速率常数k=
2.9165×10-4
(四)反应 在200℃下
的动力学数据如表4[1].
表4 实验数据
运行程序后计算结果如下:
反应级数n=1.8975;速率常数k=
0.425
五、结论
微分法确定速率方程一般采用等面积
法或镜面法,需通过作图经大量数据处
理,过程繁琐,限制了微分法的应用。本
方法只需要输入反应时间及反应物不同时
刻的浓度或其他与反应物浓度成正比的物
理量(如,压力、体积、密度、折射率、旋
光度、导电率、吸光率⋯⋯),即可求出反
应级数和计算速率常数。由表5可见,本
文与文献基本吻合。
表5 本文与文献比较
结果表明,该方法处理数据简单实用,
可使微分法得以广泛应用。
参考文献:
[1]天津大学物理化学教研室.物理化学(下).
第四版.[M].北京:高等教育出版社
[2]王正林,龚纯,何倩.精通MATLAB科学计算
[M].北京:高等教育出版社,2007:65,Ⅲ
[3]石瑞民,许志刚,孙靖.数值化学[M].北京:高
等教育出版社,2004:131-132
[4]张常群,鄢红,郭广生等.计算化学[M].北京:
高等教育出版社,2006:385-386
[5]栗智.浓度-时间比法确定反应级数和计算
速率常数[J].计算机与应用化学,2005,22(3)