| 查看: 518 | 回复: 3 | ||
[求助]
有关反应动力学推导的matlab程序
|
|
请虫友大神帮小弟看看为啥误差这么大,小弟在此谢过了 *****程序行数较多帖子不能完全 显示,只能添加附件了,烦请大神帮看下,小弟在此谢过了!********* |
» 猜你喜欢
垃圾破二本职称评审标准
已经有7人回复
三无产品还有机会吗
已经有5人回复
投稿返修后收到这样的回复,还有希望吗
已经有7人回复
博士申请都是内定的吗?
已经有14人回复
谈谈两天一夜的“延安行”
已经有13人回复
氨基封端PDMS和HDI反应快速固化
已经有11人回复
之前让一硕士生水了7个发明专利,现在这7个获批发明专利的维护费可从哪儿支出哈?
已经有11人回复
论文投稿求助
已经有4人回复
Applied Surface Science 这个期刊。有哪位虫友投过的能把word模板发给我参考一下嘛
已经有3人回复

|
function KineticsEst1_int % 动力学参数辨识: 用积分法进行反应速率分析得到速率常数k和反应级数n % Analysis of kinetic rate data by using the integral method % Reaction of the type -- rate = kCA^order % order - reaction order % rate -- reaction rate vector % YA -- yield vector for reactant A % T -- vector of reaction time % N -- number of data points % k- reacion rate constant clear all clc format short global Y_exp Y_sim tspan = [0,21.065]; % t=w/F(MEOH.0),W:催化剂的质量,F(MEOH.0):甲醇的初始进料流率 k0 = [0 0 0 0]; lb = [0 0 0 0]; ub = [+inf +inf +inf +inf ]; Y0 = [0 0 0 0 ]; Y_exp =[0.2245 0.0086 0.0013 0.0038; 0.2503 0.0082 0.0009 0.0018; 0.267 0.0098 0.0013 0.003; 0.2814 0.0094 0.0015 0.0012; ]; %同一空速四个不同组成配比下的反应管出口生成物的收率Y % 使用函数lsqnonlin()进行参数估计 [k,resnorm,residual,exitflag,output,lambda,jacobian] = lsqnonlin(@ObjFunc,k0,lb,ub,optimset('TolFun',1.0000e-20),tspan,Y0,Y_exp); ci = nlparci(k,residual,jacobian) %[k,resnorm,residual,exitflag,output,lambda,jacobian] = lsqnonlin(@ObjFunc4LNL,k0,lb,ub,optimset('TolFun',1.0000e-6),Y0,Y_exp); %ci = nlparci(k,residual,jacobian) fprintf('\n\n使用函数lsqnonlin()估计得到的参数值为:\n') fprintf('\tk1 = %.4f ± %.4f\n',k(1),ci(1,2)-k(1)) fprintf('\tk2 = %.4f ± %.4f\n',k(2),ci(2,2)-k(2)) fprintf('\tk3 = %.4f ± %.4f\n',k(3),ci(3,2)-k(3)) fprintf('\tk4 = %.4f ± %.4f\n',k(4),ci(4,2)-k(4)) fprintf('\tThe sum of the squares is: %.1e\n\n',resnorm) %拟合效果图(实验与拟合的比较) %[t4plot Y4plot] = ode45(@KineticsEqs1,[tspan(1) tspan(end)],Y0,[],k0) %figure %plot(tspan,Y_exp(:,1),'bo',t4plot,Y4plot(:,1),'r--'); %legend('Exp','Model') %xlabel('空时t=w/F_A_0, h') %ylabel('收率Y_D_M_M') %title('拟合效果图') %figure %plot(tspan,Y_exp(:,2),'bo',t4plot,Y4plot(:,2),'r--'); %legend('Exp','Model') %xlabel('空时t=w/F_A_0, h') %ylabel('收率Y_M_F') %title('拟合效果图') %figure %plot(tspan,Y_exp(:,3),'bo',t4plot,Y4plot(:,3),'r--'); %legend('Exp','Model') %xlabel('空时t=w/F_A_0, h') %ylabel('收率Y_F_A') %title('拟合效果图') %figure %plot(tspan,Y_exp(:,4),'bo',t4plot,Y4plot(:,4),'r--'); %legend('Exp','Model') %xlabel('空时t=w/F_A_0, h') %ylabel('收率Y_D_M_E') %title('拟合效果图') function f = ObjFunc(k,tspan,Y0,Y_exp) % 目标函数 [t,Y_sim1] = ode45(@KineticsEqs1,tspan,Y0,[],k) f1 = 1*(Y_sim1(end,1)-Y_exp(1,1)); f2= 10*(Y_sim1(end,2)-Y_exp(1,2)); f3= 10*(Y_sim1(end,3)-Y_exp(1,3)); f4= 10*(Y_sim1(end,4)-Y_exp(1,4)); [t,Y_sim2] = ode45(@KineticsEqs2,tspan,Y0,[],k) f5 = 1*(Y_sim2(end,1)-Y_exp(2,1)); f6 =10*(Y_sim2(end,2)-Y_exp(2,2)); f7 =10*(Y_sim2(end,3)-Y_exp(2,3)); f8 =10*(Y_sim2(end,4)-Y_exp(2,4)); [t,Y_sim3] = ode45(@KineticsEqs3,tspan,Y0,[],k) f9 = 1*(Y_sim3(end,1)-Y_exp(3,1)); f10 =10*(Y_sim3(end,2)-Y_exp(3,2)); f11 =10*(Y_sim3(end,3)-Y_exp(3,3)); f12 =10*(Y_sim3(end,4)-Y_exp(3,4)); [t,Y_sim4] = ode45(@KineticsEqs4,tspan,Y0,[],k) f13 = 1*(Y_sim4(end,1)-Y_exp(4,1)); f14 =10*(Y_sim4(end,2)-Y_exp(4,2)); f15 =10*(Y_sim4(end,3)-Y_exp(4,3)); f16 =10*(Y_sim4(end,4)-Y_exp(4,4)); f=[f1 f2 f3 f4; f5 f6 f7 f8; f9 f10 f11 f12; f13 f14 f15 f16; ] % ------------------------------------------------------------------ function dYdt = KineticsEqs1(t,Y,k) %p=[0.9 0.5 0.7 0.8 0.6]; %m=[0.6 0.4 0.5 0.3 0.25]; m:氧醇比 %n=[5.4 2 2 2.1 2]; % n:氮醇比 yMEOH1=(1+0.6)/(0.6+2.5*Y(1)+2*Y(2)+1.5*Y(3)+2*Y(4)+5.4); yO21=(0.6-0.5*Y(1)-Y(2)-0.5*Y(3))/(0.6+2.5*Y(1)+2*Y(2)+1.5*Y(3)+2*Y(4)+5.4); a=Y(1) dYdt=... [k(1)*(0.9^2)*yMEOH1^0.5*yO21^1.5; k(2)*(0.9^2)*yMEOH1^1*yO21^1; k(3)*(0.9^2)*yMEOH1^1*yO21^1; k(4)*(0.9^2)*yMEOH1^1.0*yO21^1; ]; function dYdt = KineticsEqs2(t,Y,k) %p=[0.9 0.5 0.7 0.8 0.6]; %m=[0.6 0.4 0.5 0.3 0.25]; m:氧醇比 %n=[5.4 2 2 2.1 2]; % n:氮醇比 yMEOH2=(1+0.4)/(0.6+2.5*Y(1)+2*Y(2)+1.5*Y(3)+2*Y(4)+2); yO22=(0.4-0.5*Y(1)-Y(2)-0.5*Y(3))/(0.4+2.5*Y(1)+2*Y(2)+1.5*Y(3)+2*Y(4)+2); dYdt=... [k(1)*(0.5^2)*yMEOH2^0.5*yO22^1.5; k(2)*(0.5^2)*yMEOH2^1*yO22^1; k(3)*(0.5^2)*yMEOH2^1*yO22^1; k(4)*(0.5^2)*yMEOH2^1.0*yO22^1; ]; function dYdt = KineticsEqs3(t,Y,k) %p=[0.9 0.5 0.7 0.8 0.6]; %m=[0.6 0.4 0.5 0.3 0.25]; m:氧醇比 %n=[5.4 2 2 2.1 2]; % n:氮醇比 yMEOH3=(1+0.5)/(0.6+2.5*Y(1)+2*Y(2)+1.5*Y(3)+2*Y(4)+2); yO23=(0.5-0.5*Y(1)-Y(2)-0.5*Y(3))/(0.5+2.5*Y(1)+2*Y(2)+1.5*Y(3)+2*Y(4)+2); dYdt=... [k(1)*(0.7^2)*yMEOH3^0.5*yO23^1.5; k(2)*(0.7^2)*yMEOH3^1*yO23^1; k(3)*(0.7^2)*yMEOH3^1*yO23^1; k(4)*(0.7^2)*yMEOH3^1.0*yO23^1; ]; function dYdt = KineticsEqs4(t,Y,k) %p=[0.9 0.5 0.7 0.8 0.6]; %m=[0.6 0.4 0.5 0.3 0.25]; m:氧醇比 %n=[5.4 2 2 2.1 2]; % n:氮醇比 yMEOH4=(1+0.8)/(0.6+2.5*Y(1)+2*Y(2)+1.5*Y(3)+2*Y(4)+2.1); yO24=(0.3-0.5*Y(1)-Y(2)-0.5*Y(3))/(0.3+2.5*Y(1)+2*Y(2)+1.5*Y(3)+2*Y(4)+2.1); dYdt=... [k(1)*(0.8^2)*yMEOH4^0.5*yO24^1.5; k(2)*(0.8^2)*yMEOH4^1*yO24^1; k(3)*(0.8^2)*yMEOH4^1*yO24^1; k(4)*(0.8^2)*yMEOH4^1.0*yO24^1; ]; |

2楼2015-09-08 10:43:48

3楼2015-09-08 10:45:03
![]() |
4楼2015-09-11 07:55:46













回复此楼
