| 查看: 1000 | 回复: 8 | ||
[求助]
各位大神能不能帮小弟看看动力学编程的问题 已有1人参与
|
||
|
**************程序如下,见二楼******************* 各位大神能不能帮小弟看看动力学编程的问题,误差特别大,拟合出来结果有问题,小弟刚学matlab,试着做了动力学参数拟合,还不太会希望大神求助a |
» 猜你喜欢
全日制(定向)博士
已经有5人回复
假如你的研究生提出不合理要求
已经有10人回复
萌生出自己或许不适合搞科研的想法,现在跑or等等看?
已经有4人回复
Materials Today Chemistry审稿周期
已经有4人回复
参与限项
已经有3人回复
实验室接单子
已经有4人回复
对氯苯硼酸纯化
已经有3人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有12人回复
所感
已经有4人回复
要不要辞职读博?
已经有7人回复

你的CEO: 回帖置顶 2015-09-22 15:24:43
|
*****************结果: ***************** f = -0.0873 0.0186 0.0075 -0.0466 -0.1390 -0.0120 -0.0035 0.0014 -0.1442 -0.0453 0.0047 -0.0482 -0.1777 -0.0013 -0.0102 0.0310 -0.1811 -0.0579 -0.0219 0.0084 Local minimum possible. lsqnonlin stopped because the size of the current step is less than the default value of the step size tolerance. <stopping criteria details> ci = 1.0e+003 * -8.7033 9.5305 -0.6189 0.6776 -0.1243 0.1361 -0.0808 0.0885 使用函数lsqnonlin()估计得到的参数值为: k1 = 413.5893 ± 9116.9019 k2 = 29.3478 ± 648.2084 k3 = 5.8897 ± 130.2370 k4 = 3.8247 ± 84.6506 The sum of the squares is: 1.2e-001 |

3楼2015-09-22 15:20:00
你的CEO: 回帖置顶 2015-09-22 15:24:05
你的CEO: 取消置顶 2015-09-22 15:29:56
你的CEO: 回帖置顶 2015-09-22 15:30:06
你的CEO: 取消置顶 2015-09-22 15:29:56
你的CEO: 回帖置顶 2015-09-22 15:30:06
|
*******上面那个程序有点小问题,大神们看着个吧!!!!!!!****************** % 动力学参数辨识: 用积分法进行反应速率分析得到速率常数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 = [2 0.5 0.1 0.1]; lb = [0 0 0 0]; ub = [+inf +inf +inf +inf ]; Y0 = [0 0 0 0 ]; Y_exp =[0.3901 0.0334 0.0067 0.0095; 0.4431 0.038 0.0075 0.0045; 0.4449 0.0488 0.0075 0.01; 0.4751 0.044 0.0098 0.0026; 0.482 0.051 0.0101 0.0043]; % 使用函数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) 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= 5*(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 =5*(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 =5*(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 =5*(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)); [t,Y_sim5] = ode45(@KineticsEqs5,tspan,Y0,[],k); f17 = 1*(Y_sim5(end,1)-Y_exp(5,1)); f18 =5*(Y_sim5(end,2)-Y_exp(5,2)); f19 =10*(Y_sim5(end,3)-Y_exp(5,3)); f20 =10*(Y_sim5(end,4)-Y_exp(5,4)); f=[f1 f2 f3 f4; f5 f6 f7 f8; f9 f10 f11 f12; f13 f14 f15 f16; f17 f18 f19 f20] % ------------------------------------------------------------------ function dYdt = KineticsEqs1(t,Y,k) %p=[0.9 0.7 0.5 0.6 0.8]; p:压强 %m=[0.6 0.5 0.4 0.25 0.3]; m:氧醇比 %n=[5.4 2 2 2 2.1]; % n:氮醇比 %yO2=(m-0.5*Y(1)-Y(2)-0.5*Y(3))/(m+n+1-0.5*Y(1)+0.5*Y(3)); %yMEOH=(1-3*Y(1)-2*Y(2)-Y(3)-2*Y(4))/(m+n+1-0.5*Y(1)+0.5*Y(3)); yO2=(0.6-0.5*Y(1)-Y(2)-0.5*Y(3))/(0.6+5.4+1-0.5*Y(1)+0.5*Y(3)); yMEOH=(1-3*Y(1)-2*Y(2)-Y(3)-2*Y(4))/(0.6+5.4+1-0.5*Y(1)+0.5*Y(3)); dYdt=... [k(1)*(0.9^2.2)*yMEOH^1*yO2^1.2; k(2)*(0.9^2)*yMEOH^1*yO2^1; k(3)*(0.9^2)*yMEOH^1*yO2^1; k(4)*(0.9^2)*yMEOH^1.0*yO2^1; ]; function dYdt = KineticsEqs2(t,Y,k) %p=[0.9 0.7 0.5 0.6 0.8]; p:压强 %m=[0.6 0.5 0.4 0.25 0.3]; m:氧醇比 %n=[5.4 2 2 2 2.1]; % n:氮醇比 %yO2=(m-0.5*Y(1)-Y(2)-0.5*Y(3))/(m+n+1-0.5*Y(1)+0.5*Y(3)); %yMEOH=(1-3*Y(1)-2*Y(2)-Y(3)-2*Y(4))/(m+n+1-0.5*Y(1)+0.5*Y(3)); yO2=(0.5-0.5*Y(1)-Y(2)-0.5*Y(3))/(0.5+2+1-0.5*Y(1)+0.5*Y(3)); yMEOH=(1-3*Y(1)-2*Y(2)-Y(3)-2*Y(4))/(0.5+52+1-0.5*Y(1)+0.5*Y(3)); dYdt=... [k(1)*(0.7^2.2)*yMEOH^1*yO2^1.2; k(2)*(0.7^2)*yMEOH^1*yO2^1; k(3)*(0.7^2)*yMEOH^1*yO2^1; k(4)*(0.7^2)*yMEOH^1.0*yO2^1; ]; function dYdt = KineticsEqs3(t,Y,k) %p=[0.9 0.7 0.5 0.6 0.8]; p:压强 %m=[0.6 0.5 0.4 0.25 0.3]; m:氧醇比 %n=[5.4 2 2 2 2.1]; % n:氮醇比 %yO2=(m-0.5*Y(1)-Y(2)-0.5*Y(3))/(m+n+1-0.5*Y(1)+0.5*Y(3)); %yMEOH=(1-3*Y(1)-2*Y(2)-Y(3)-2*Y(4))/(m+n+1-0.5*Y(1)+0.5*Y(3)); yO2=(0.4-0.5*Y(1)-Y(2)-0.5*Y(3))/(0.4+2+1-0.5*Y(1)+0.5*Y(3)); yMEOH=(1-3*Y(1)-2*Y(2)-Y(3)-2*Y(4))/(0.4+2+1-0.5*Y(1)+0.5*Y(3)); dYdt=... [k(1)*(0.5^2.2)*yMEOH^1*yO2^1.2; k(2)*(0.5^2)*yMEOH^1*yO2^1; k(3)*(0.5^2)*yMEOH^1*yO2^1; k(4)*(0.5^2)*yMEOH^1.0*yO2^1; ]; function dYdt = KineticsEqs4(t,Y,k) %p=[0.9 0.7 0.5 0.6 0.8]; p:压强 %m=[0.6 0.5 0.4 0.25 0.3]; m:氧醇比 %n=[5.4 2 2 2 2.1]; % n:氮醇比 %yO2=(m-0.5*Y(1)-Y(2)-0.5*Y(3))/(m+n+1-0.5*Y(1)+0.5*Y(3)); %yMEOH=(1-3*Y(1)-2*Y(2)-Y(3)-2*Y(4))/(m+n+1-0.5*Y(1)+0.5*Y(3)); yO2=(0.25-0.5*Y(1)-Y(2)-0.5*Y(3))/(0.25+2+1-0.5*Y(1)+0.5*Y(3)); yMEOH=(1-3*Y(1)-2*Y(2)-Y(3)-2*Y(4))/(0.25+2+1-0.5*Y(1)+0.5*Y(3)); dYdt=... [k(1)*(0.6^2.2)*yMEOH^1*yO2^1.2; k(2)*(0.6^2)*yMEOH^1*yO2^1; k(3)*(0.6^2)*yMEOH^1*yO2^1; k(4)*(0.6^2)*yMEOH^1.0*yO2^1; ]; function dYdt = KineticsEqs5(t,Y,k) %p=[0.9 0.7 0.5 0.6 0.8]; p:压强 %m=[0.6 0.5 0.4 0.25 0.3]; m:氧醇比 %n=[5.4 2 2 2 2.1]; % n:氮醇比 %yO2=(m-0.5*Y(1)-Y(2)-0.5*Y(3))/(m+n+1-0.5*Y(1)+0.5*Y(3)); %yMEOH=(1-3*Y(1)-2*Y(2)-Y(3)-2*Y(4))/(m+n+1-0.5*Y(1)+0.5*Y(3)); yO2=(0.3-0.5*Y(1)-Y(2)-0.5*Y(3))/(0.3+2.1+1-0.5*Y(1)+0.5*Y(3)); yMEOH=(1-3*Y(1)-2*Y(2)-Y(3)-2*Y(4))/(0.3+2.1+1-0.5*Y(1)+0.5*Y(3)); dYdt=... [k(1)*(0.8^2.2)*yMEOH^1*yO2^1.2; k(2)*(0.8^2)*yMEOH^1*yO2^1; k(3)*(0.8^2)*yMEOH^1*yO2^1; k(4)*(0.8^2)*yMEOH^1.0*yO2^1; ]; |

4楼2015-09-22 15:21:56
|
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 = [2 0.5 0.1 0.1]; lb = [0 0 0 0]; ub = [+inf +inf +inf +inf ]; Y0 = [0 0 0 0 ]; Y_exp =[0.3901 0.0334 0.0067 0.0095; 0.4431 0.038 0.0075 0.0045; 0.4449 0.0488 0.0075 0.01; 0.4751 0.044 0.0098 0.0026; 0.482 0.051 0.0101 0.0043]; % 使用函数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= 5*(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 =5*(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 =5*(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 =5*(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)); [t,Y_sim5] = ode45(@KineticsEqs5,tspan,Y0,[],k); f17 = 1*(Y_sim5(end,1)-Y_exp(5,1)); f18 =5*(Y_sim5(end,2)-Y_exp(5,2)); f19 =10*(Y_sim5(end,3)-Y_exp(5,3)); f20 =10*(Y_sim5(end,4)-Y_exp(5,4)); A=[Y_sim1(end, ;Y_sim2(end, ;Y_sim3(end, ;Y_sim4(end, ;Y_sim5(end, ]f=[f1 f2 f3 f4; f5 f6 f7 f8; f9 f10 f11 f12; f13 f14 f15 f16; f17 f18 f19 f20] % ------------------------------------------------------------------ function dYdt = KineticsEqs1(t,Y,k) %p=[0.9 0.7 0.5 0.6 0.8]; p:压强 %m=[0.6 0.5 0.4 0.25 0.3]; m:氧醇比 %n=[5.4 2 2 2 2.1]; % n:氮醇比 %yO2=(m-0.5*Y(1)-Y(2)-0.5*Y(3))/(m+n+1-0.5*Y(1)+0.5*Y(3)); %yMEOH=(1-3*Y(1)-2*Y(2)-Y(3)-2*Y(4))/(m+n+1-0.5*Y(1)+0.5*Y(3)); yO2=(0.6-0.5*Y(1)-Y(2)-0.5*Y(3))/(0.6+5.4+1-0.5*Y(1)+0.5*Y(3)); yMEOH=(1-3*Y(1)-2*Y(2)-Y(3)-2*Y(4))/(0.6+5.4+1-0.5*Y(1)+0.5*Y(3)); dYdt=... [k(1)*(0.9^2.2)*yMEOH^1*yO2^1.2; k(2)*(0.9^2)*yMEOH^1*yO2^1; k(3)*(0.9^2)*yMEOH^1*yO2^1; k(4)*(0.9^2)*yMEOH^1.0*yO2^1; ]; function dYdt = KineticsEqs2(t,Y,k) %p=[0.9 0.7 0.5 0.6 0.8]; p:压强 %m=[0.6 0.5 0.4 0.25 0.3]; m:氧醇比 %n=[5.4 2 2 2 2.1]; % n:氮醇比 %yO2=(m-0.5*Y(1)-Y(2)-0.5*Y(3))/(m+n+1-0.5*Y(1)+0.5*Y(3)); %yMEOH=(1-3*Y(1)-2*Y(2)-Y(3)-2*Y(4))/(m+n+1-0.5*Y(1)+0.5*Y(3)); yO2=(0.5-0.5*Y(1)-Y(2)-0.5*Y(3))/(0.5+2+1-0.5*Y(1)+0.5*Y(3)); yMEOH=(1-3*Y(1)-2*Y(2)-Y(3)-2*Y(4))/(0.5+52+1-0.5*Y(1)+0.5*Y(3)); dYdt=... [k(1)*(0.7^2.2)*yMEOH^1*yO2^1.2; k(2)*(0.7^2)*yMEOH^1*yO2^1; k(3)*(0.7^2)*yMEOH^1*yO2^1; k(4)*(0.7^2)*yMEOH^1.0*yO2^1; ]; function dYdt = KineticsEqs3(t,Y,k) %p=[0.9 0.7 0.5 0.6 0.8]; p:压强 %m=[0.6 0.5 0.4 0.25 0.3]; m:氧醇比 %n=[5.4 2 2 2 2.1]; % n:氮醇比 %yO2=(m-0.5*Y(1)-Y(2)-0.5*Y(3))/(m+n+1-0.5*Y(1)+0.5*Y(3)); %yMEOH=(1-3*Y(1)-2*Y(2)-Y(3)-2*Y(4))/(m+n+1-0.5*Y(1)+0.5*Y(3)); yO2=(0.4-0.5*Y(1)-Y(2)-0.5*Y(3))/(0.4+2+1-0.5*Y(1)+0.5*Y(3)); yMEOH=(1-3*Y(1)-2*Y(2)-Y(3)-2*Y(4))/(0.4+2+1-0.5*Y(1)+0.5*Y(3)); dYdt=... [k(1)*(0.5^2.2)*yMEOH^1*yO2^1.2; k(2)*(0.5^2)*yMEOH^1*yO2^1; k(3)*(0.5^2)*yMEOH^1*yO2^1; k(4)*(0.5^2)*yMEOH^1.0*yO2^1; ]; function dYdt = KineticsEqs4(t,Y,k) %p=[0.9 0.7 0.5 0.6 0.8]; p:压强 %m=[0.6 0.5 0.4 0.25 0.3]; m:氧醇比 %n=[5.4 2 2 2 2.1]; % n:氮醇比 %yO2=(m-0.5*Y(1)-Y(2)-0.5*Y(3))/(m+n+1-0.5*Y(1)+0.5*Y(3)); %yMEOH=(1-3*Y(1)-2*Y(2)-Y(3)-2*Y(4))/(m+n+1-0.5*Y(1)+0.5*Y(3)); yO2=(0.25-0.5*Y(1)-Y(2)-0.5*Y(3))/(0.25+2+1-0.5*Y(1)+0.5*Y(3)); yMEOH=(1-3*Y(1)-2*Y(2)-Y(3)-2*Y(4))/(0.25+2+1-0.5*Y(1)+0.5*Y(3)); dYdt=... [k(1)*(0.6^2.2)*yMEOH^1*yO2^1.2; k(2)*(0.6^2)*yMEOH^1*yO2^1; k(3)*(0.6^2)*yMEOH^1*yO2^1; k(4)*(0.6^2)*yMEOH^1.0*yO2^1; ]; function dYdt = KineticsEqs5(t,Y,k) %p=[0.9 0.7 0.5 0.6 0.8]; p:压强 %m=[0.6 0.5 0.4 0.25 0.3]; m:氧醇比 %n=[5.4 2 2 2 2.1]; % n:氮醇比 %yO2=(m-0.5*Y(1)-Y(2)-0.5*Y(3))/(m+n+1-0.5*Y(1)+0.5*Y(3)); %yMEOH=(1-3*Y(1)-2*Y(2)-Y(3)-2*Y(4))/(m+n+1-0.5*Y(1)+0.5*Y(3)); yO2=(0.3-0.5*Y(1)-Y(2)-0.5*Y(3))/(0.3+2.1+1-0.5*Y(1)+0.5*Y(3)); yMEOH=(1-3*Y(1)-2*Y(2)-Y(3)-2*Y(4))/(0.3+2.1+1-0.5*Y(1)+0.5*Y(3)); dYdt=... [k(1)*(0.8^2.2)*yMEOH^1*yO2^1.2; k(2)*(0.8^2)*yMEOH^1*yO2^1; k(3)*(0.8^2)*yMEOH^1*yO2^1; k(4)*(0.8^2)*yMEOH^1.0*yO2^1; ]; |

2楼2015-09-22 15:19:06

5楼2015-09-22 15:30:53
| 顶一下 |
6楼2015-09-22 16:05:54

7楼2015-09-22 20:01:59

8楼2015-09-22 20:10:08
dingd
铁杆木虫 (职业作家)
- 应助: 1641 (讲师)
- 金币: 15037.3
- 散金: 101
- 红花: 234
- 帖子: 3410
- 在线: 1223.7小时
- 虫号: 291104
- 注册: 2006-10-28
9楼2015-09-23 12:08:06












回复此楼
;