| 查看: 478 | 回复: 0 | |||
[交流]
参数辨识代码一直在运行,不出结果,
|
|
这个是程序, function KineticsEst1_Int %用积分法进行SCR氨泄漏和氨覆盖度反应速率分析进行参数拟合 clear all; clc k0=[27.8 0.514 15.2 0.07 8.53e-13]; %参数初值 lb=[0 0 0 0 0]; %参数下限 ub=[+inf +inf +inf +inf +inf]; %参数上限 x0=[0 0 298.15]; %氨泄漏,氨覆盖度,下游温度初始值 KineticsData; yexp = ExpData(:,2:3); % yexp: 实验数据(氨泄漏x1 下游温度x2) % 使用函数fmincon()进行参数估计 [k,fval,flag] = fmincon(@ObjFunc4Fmincon,k0,[],[],[],[],lb,ub,[],[],x0,yexp); fprintf('\n使用函数fmincon()估计得到的参数值为:\n') fprintf('\tk1 = %.4f\n',k(1)) fprintf('\tk2 = %.4f\n',k(2)) fprintf('\tk3 = %.4f\n',k(3)) fprintf('\tk4 = %.4f\n',k(4)) fprintf('\tk5 = %.4f\n',k(5)) fprintf(' The sum of the squares is: %.1e\n\n',fval) k_fmincon = k; % 使用函数lsqnonlin()进行参数估计 [k,resnorm,residual,exitflag,output,lambda,jacobian] = ... lsqnonlin(@ObjFunc4LNL,k0,lb,ub,[],x0,yexp); ci = nlparci(k,residual,jacobian); fprintf('\n\n使用函数lsqnonlin()估计得到的参数值为:\n') Output % 以函数fmincon()估计得到的结果为初值,使用函数lsqnonlin()进行参数估计 k0 = k_fmincon; [k,resnorm,residual,exitflag,output,lambda,jacobian] = ... lsqnonlin(@ObjFunc4LNL,k0,lb,ub,[],x0,yexp); ci = nlparci(k,residual,jacobian); fprintf('\n\n以fmincon()的结果为初值,使用函数lsqnonlin()估计得到的参数值为:\n') Output % ------------------------------------------------------------------ function f = ObjFunc4Fmincon(k,x0,yexp) tspan = [1 20 40 60 80 100 140 180 220 280 320 360 400 500 600]; [t x] = ode45(@KineticEqs,tspan,x0,[],k); y(:,1) = x(:,1); y(:,2) = x(:,2); f = sum((y(:,1)-yexp(:,1)).^2)+ sum((y(:,2)-yexp(:,2)).^2); % ------------------------------------------------------------------ function f = ObjFunc4LNL(k,x0,yexp) tspan = [1 20 40 60 80 100 140 180 220 280 320 360 400 500 600]; [t x] = ode45(@KineticEqs,tspan,x0,[],k); y(:,1) = x(:,1); y(:,2) = x(:,2); f1 = y(:,1) - yexp(:,1)+y(:,2) - yexp(:,2); f = [f1;f2]; % ------------------------------------------------------------------ function dxdt = KineticEqs(t,x,k) dxdt = ... [ ( 1/(0.81*0.0000386)*5.364/1000000-x(1)*((287/101325)*(1/(0.81*0.0000386)*(1.4/3600)*x(3)+7.3*k(1)*sqrt(x(2))*(1-x(3))))+7.3*k(2)*exp(-k(3)/x(2))*x(3) ) ( k(4)*(1.4/3600)*(473.15-x(2))-k(5)*((x(2))^4-(298.15)^4) ) ( (x(1)*k(1)*sqrt(x(2))*(1-x(3)))-k(2)*exp(-k(3)/x(2))*x(3) ) ]; 这个是数据: %SCRKineticsData % 动力学数据: % t_时间 x1_氨泄漏_mol/m3 x2_温度 ExpData = ... [ 1 0 298.15 20 1.78231E-16 305.1437153 40 2.89597E-15 391.847062 60 6.1406E-13 458.2637625 80 7.83266E-13 472.3382312 100 1.68638E-12 473.6522317 140 1.79014E-11 473.7325518 180 2.18536E-10 473.7330945 220 2.50998E-09 473.7331684 280 9.70709E-08 473.7331458 320 1.11857E-06 473.7328618 360 1.27677E-05 473.7321413 400 0.000144696 473.7250369 500 0.009942007 473.1759208 600 0.010292012 473.149977 ] 请大神指点一下 |
» 本帖@通知
» 猜你喜欢
反铁磁体中的磁性切换:两种不同的机制已成功可视化
已经有0人回复
求标准粉末衍射卡号 ICDD 01-076-1802
已经有0人回复
物理学I论文润色/翻译怎么收费?
已经有290人回复
新西兰Robinson研究所招收全奖PhD
已经有0人回复
石墨烯转移--二氧化硅衬底石墨烯
已经有0人回复
笼目材料中量子自旋液体基态的证据
已经有0人回复
数学教学论硕士可以读数学物理博士吗?
已经有0人回复
德国亥姆霍兹Hereon中心汉堡分部招镁合金腐蚀裂变SCC课题方向2026公派博士生
已经有4人回复
澳门大学 应用物理及材料工程研究院 潘晖教授课题组诚招博士后
已经有11人回复












回复此楼