24小时热门版块排行榜    

查看: 1113  |  回复: 0

pangteng1990

金虫 (正式写手)

[求助] 浓度一时间比法确定反应级数和计算速率常数 附带MATLAB程序出错,求大神教我

edit t.m %输入时间数据
edit c.m %输入浓度数据、
%数据处理程序 fyjs.m
load t.m %调入时间数据
load c.m %调入浓度数据
NO=max(size(t));
CO=c(1,1);
x=[];
tb=[];
for i=2:1:NO
    a=(c(1,1)-c(1,i))./c(1,1); %将浓度数据转化为转化率
    x=[x,a];
end
t(1:1)=[];
N=max(size(t));
sn=[];
for i=1:1:N-1
    for j=i+1:1:N
        b=t(1,j)./t(1,i); %计算测定数据中毎两组数据的时间比
        tb=[tb,b];
    end
end
st=sum(tb); %计算总时间比
tn=[];
for n=-3:0.001:3; %逐步逼近搜索,从-3级到3级,步长为0.001
    xn=[];
    for i=1:1:N-1
        for j=i+1:1:N
            if n==1
                w=log(1-x(1,j))./log(1-x(1,i)); %反应级数n=1时的浓度比
            else
                w=((1-x(1,j)).^(1-n)-1)./((1-x(1,i)).^(1-n)-1); %反应级数n≠1时的浓度比
            end
            xn=[xn,w];
        end
    end
    tn=[tn,n];
    sn=[sn,sum(xn)]; %建立不同级数下总浓度比集合
end
d=[];
for k=1:1:max(size(sn))
    d=abs([d,sn(1,k)-st]); %建立总浓度比和总时间比的差的集合
end
for k=1:1:max(size(sn))
    if abs(sn(1,k)-st)==min(d); %搜索最小差值的位置
        n=tn(1,k); %记录最小差值的反应级数
    end
end
kc=[];
for k=1:1:NO-1
    if n==1
        p=-log(1-x(1,k))./t(1,k); %计算反应级数n=1时的速率常数
    else
        p=CO.^(1-n).*((1-x(1,k)).^(1-n)-1)./(n-1)./t(1,k); %计算反应级数n≠1时的速率常数
        kc=[kc,p];
    end
end
k=sum(kc)./(N-1); %计算速率常数的平均值
n
k
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : 浓度_时间比法确定反应级数和计算速率常数_粟智.caj
  • 2015-06-16 07:50:38, 143.42 K
  • 附件 2 : fanyingjishu.m
  • 2015-06-16 07:52:29, 1.33 K

» 猜你喜欢

一个人的武林
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

相关版块跳转 我要订阅楼主 pangteng1990 的主题更新
信息提示
请填处理意见