| 查看: 499 | 回复: 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. 求大神修正代码!!不胜感激! |
» 猜你喜欢
中国科学院东莞材料科学与技术研究所-2026年博士招生-吴昊研究员-磁学与自旋电子学
已经有0人回复
《电磁学》教材推荐
已经有1人回复
物理学I论文润色/翻译怎么收费?
已经有59人回复
【急招】合肥工大核聚变材料计算方向2026级工程博士生
已经有4人回复
大豆异黄酮分离
已经有0人回复
湖南大学材料学院急招2026年博士生,临时增加一名博士联培指标
已经有10人回复
天津理工大学晶体材料全国重点实验室刘红军教授课题组招收博士生1-2名
已经有1人回复
中国科学院物理研究所谌志国研究员团队招收2027年博士研究生
已经有3人回复
2026年中德博士后交流项目 - 新型量子和磁性材料:材料制备表征和中子散射研究
已经有12人回复

找到一些相关的精华帖子,希望有用哦~
求助用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人回复
科研从小木虫开始,人人为我,我为人人












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