| 查看: 446 | 回复: 0 | ||
[求助]
用matlab求动力学参数有错误,求指导
|
|
程序是: tspan = [78.666667 59.000000 47.200000 39.333333 33.714286 29.500000 ]; x0=[0; 0; 0 ]; k0 = [0 0 0 0 0 0 0 0 0];%速率常数,平衡常数初值 lb = [0 0 0 0 0 0 0 0 0]; ub = [+inf +inf +inf +inf +inf +inf +inf +inf +inf]; data=... [ 78.666667 0.957100 0.797360 0.162324 70 2.5 59.000000 0.859400 0.792711 0.083877 70 2.5 47.200000 0.833500 0.764903 0.068597 70 2.5 39.333333 0.757000 0.709688 0.047313 50 1.5 33.714286 0.739600 0.699588 0.040012 50 1.5 29.500000 0.721000 0.686608 0.034392 50 1.5 ]; yexp=data(:,2:4);%取矩阵2-6列数据 % 使用函数lsqnonlin()进行参数估计 [k,resnorm,residual,exitflag,output,lambda,jacobian] = ... lsqnonlin(@ObjFunc,k0,lb,ub,[],tspan,x0,yexp); 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('\tk5 = %.4f ± %.4f\n',k(5),ci(5,2)-k(5)) fprintf('\tk6 = %.4f ± %.4f\n',k(6),ci(6,2)-k(6)) fprintf('\tk7 = %.4f ± %.4f\n',k(7),ci(7,2)-k(7)) fprintf('\tk8 = %.4f ± %.4f\n',k(8),ci(8,2)-k(8)) fprintf('\tk9 = %.4f ± %.4f\n',k(9),ci(9,2)-k(9)) fprintf(' The sum of the squares is: %.1e\n\n',resnorm) function f = ObjFunc(k,tspan,x0,yexp) % 目标函数 [t Xsim] = ode45(@KineticsEqs,tspan,x0,[],k); ysim(:,1) = Xsim(2:end,1); ysim(:,2) = Xsim(2:end,2); ysim(:,3) = Xsim(2:end,3); f =(sum((ysim(:,1)-yexp(:,1))^2)+sum((ysim(:,2)-yexp(:,2))^2) +sum((ysim(:,3)-yexp(:,3))^2))/72; function dCdt = KineticsEqs(t,C,k) % ODE模型方程,t为空时,C转化率、收率 P1=((1/(C(5)+1))*(1-C(2))*C(6))/(1-((1/(C(5)+1))*C(2))-((1/(C(5)+1))*C(4))); P2=((C(5)/(C(5)+1))-2*(1/(C(5)+1)*C(3)-4*(1/(C(5)+1)*C(4)/(1-((1/(C(5)+1))*C(2))-((1/(C(5)+1))*C(4))); P3=((1/(C(5)+1)*C(3))/(1-((1/(C(5)+1))*C(2))-((1/(C(5)+1))*C(4))); P4=((1/(C(5)+1)*C(4))/(1-((1/(C(5)+1))*C(2))-((1/(C(5)+1))*C(4))); P5=(((1/(C(5)+1)*C(3))+2*((1/(C(5)+1)*C(4)))/(1-((1/(C(5)+1))*C(2))-((1/(C(5)+1))*C(4))); % k(1) = Kdmo,k(1)=Kh;k(3)=Kmg;k(4)=Keg,k(5)=Kme; k(6)=k1,k(7)=k2, k(8)=Kp1,k(9)=Kp2, %P(1)=Pdmo,P(2)=Ph,P3=Pmg,P4=Peg,P5=Pme; theB = 1+k(4)*P4+k5*P5+((k(1)*P3*P5*P5)/(k(8)*(P2^3)); theC =k(7)*(P3-(P3*P5)/(k(9)*(P2^2)); r1 = theA/theB; r2 = theC/theB; dCAdt = - r1; dCBdt = r1 - r2 ; dCdt = [dCAdt; dCBdt]; ??? Error using ==> feval Undefined function or method 'ObjFunc' for input arguments of type 'double'. Error in ==> lsqnonlin at 203 initVals.F = feval(funfcn{3},xCurrent,varargin{:}); Caused by: Failure in initial user-supplied objective function evaluation. LSQNONLIN cannot continue. 求大神修正代码!!不胜感激! |
» 猜你喜欢
新西兰Robinson研究所招收全奖PhD
已经有0人回复
石墨烯转移--二氧化硅衬底石墨烯
已经有0人回复
物理学I论文润色/翻译怎么收费?
已经有197人回复
笼目材料中量子自旋液体基态的证据
已经有0人回复
数学教学论硕士可以读数学物理博士吗?
已经有0人回复
德国亥姆霍兹Hereon中心汉堡分部招镁合金腐蚀裂变SCC课题方向2026公派博士生
已经有4人回复
澳门大学 应用物理及材料工程研究院 潘晖教授课题组诚招博士后
已经有11人回复
求助NH4V4O10晶体的CIF文件
已经有0人回复
英国全奖博士招聘-深度学习与量子物理
已经有0人回复
间接带隙半导体有效质量求助
已经有1人回复
投稿chemical physical letters不送审?
已经有2人回复

找到一些相关的精华帖子,希望有用哦~
求助用matlab拟合动力学方程
已经有9人回复
求助用matlab拟合动力学方程
已经有13人回复
matlab 拟合反应动力学参数
已经有8人回复
Matlab 动力学方程拟合的很差,郁闷,大侠们帮助一下。先谢了
已经有5人回复
重金请教-如何用MAtlab对力学模型进行参数识别
已经有12人回复
matlab求解动力学 方程中的参数
已经有13人回复
matlab 拟合反应动力学参数结果很差。大家帮忙看一下
已经有14人回复
matlab 求指点 动力学方程拟合过程中导数的获取
已经有10人回复
matlab代码求解水动力学方程看不懂,请高手指点
已经有4人回复
有用MATLAB做化学反应动力学模拟的吗
已经有7人回复
【求助】催化反应动力学matlab计算各基元反应的速率常数时,该如何避免较小量被忽略?
已经有3人回复
【求助】使用Matlab拟合反应动力学方程问题
已经有7人回复
【求助】使用Matlab预估动力学方程问题
已经有13人回复
科研从小木虫开始,人人为我,我为人人













回复此楼
点击这里搜索更多相关资源