| 查看: 639 | 回复: 0 | ||
[求助]
复杂动力学多参数拟合程序
|
|
function Akinetics clear all clc global R C a0=[0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5] %参数初值 lb=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]; %参数下限 ub=[+inf +inf +inf +inf +inf +inf +inf +inf +inf +inf +inf +inf +inf +inf +inf +inf +inf +inf +inf +inf +inf]; %参数上限 sulv = ... [0.1260 0.0960 0.0630 0.2680 0.0210 0.0189 0.0126 0.0168 0.0147 0.1260 0.1280 0.0630 0.2800 0.0210 0.0189 0.0126 0.0168 0.0147 0.1220 0.1460 0.0610 0.2840 0.0203 0.0183 0.0122 0.0163 0.0142 0.1400 0.1740 0.0700 0.2960 0.0233 0.0210 0.0140 0.0187 0.0163 0.1700 0.1980 0.0850 0.3280 0.0283 0.0255 0.0170 0.0227 0.0198 0.1700 0.2160 0.0850 0.3320 0.0283 0.0255 0.0170 0.0227 0.0198 0.1760 0.2300 0.0880 0.3400 0.0293 0.0264 0.0176 0.0235 0.0205 0.2140 0.2480 0.1070 0.4560 0.0357 0.0321 0.0214 0.0285 0.0250 0.2440 0.2780 0.1220 0.4680 0.0407 0.0366 0.0244 0.0325 0.0285 0.2620 0.2980 0.1310 0.5560 0.0437 0.0393 0.0262 0.0349 0.0306] nondu = ... [0.0252 0.0192 0.0126 0.0536 0.0042 0.0038 0.0025 0.0034 0.0029 0.0252 0.0256 0.0126 0.0560 0.0042 0.0038 0.0025 0.0034 0.0029 0.0244 0.0292 0.0122 0.0568 0.0041 0.0037 0.0024 0.0033 0.0028 0.0280 0.0348 0.0140 0.0592 0.0047 0.0042 0.0028 0.0037 0.0033 0.0340 0.0396 0.0170 0.0656 0.0057 0.0051 0.0034 0.0045 0.0040 0.0340 0.0432 0.0170 0.0664 0.0057 0.0051 0.0034 0.0045 0.0040 0.0352 0.0460 0.0176 0.0680 0.0059 0.0053 0.0035 0.0047 0.0041 0.0428 0.0496 0.0214 0.0912 0.0071 0.0064 0.0043 0.0057 0.0050 0.0488 0.0556 0.0244 0.0936 0.0081 0.0073 0.0049 0.0065 0.0057 0.0524 0.0596 0.0262 0.1112 0.0087 0.0079 0.0052 0.0070 0.0061] R=sulv(:,1:9);C=nondu(:,1:9); %实验数据 %使用lsqnonlin()进行参数估计 [a,resnorm,residual ,exitflag,output,lambda,jacobian]=lsqnonlin(@objfun,a0,lb,ub,R,C); ci=nlparci(a,residual,jacobian); function f=objfun(a) global R C f=R-r(a,C) function rr=r(a,C) rr=... [(-a(15).*(C(1).^a(1)).*C(2).^a(2)-a(16).*(C(1).^a(3)).*C(2).^a(4)-a(17).*(C(1).^a(5)).*C(4).^a(6)-a(18).*(C(1).^a(7)).*C(4).^a(8)) (-a(15).*(C(1).^a(1)).*C(2).^a(2)-a(16).*(C(1).^a(3)).*C(2).^a(4)-a(17).*(C(1).^a(5)).*C(4).^a(6)-a(19).*(C(3).^a(9)).*C(2).^a(10)-a(21).*(C(3).^a(13)).*C(2).^a(14)) (+a(15).*(C(1).^a(1)).*C(2).^a(2)-a(19).*(C(3).^a(9)).*C(2).^a(10)-a(20).*(C(3).^a(11)).*C(4).^a(12)-a(21).*(C(3).^a(13)).*C(2).^a(14)) (+a(15).*(C(1).^a(1)).*C(2).^a(2)+a(18).*(C(1).^a(7)).*C(4).^a(8)-a(17).*(C(1).^a(5)).*C(4).^a(6)+a(19).*(C(3).^a(9)).*C(2).^a(10)-a(20).*(C(3).^a(11)).*C(4).^a(12)) (+a(16).*(C(1).^a(3)).*C(2).^a(4)+a(20).*(C(3).^a(11)).*C(4).^a(12)) (+a(18).*(C(1).^a(7)).*C(4).^a(8)) (+a(17).*(C(1).^a(5)).*C(4).^a(6)) (+a(19).*(C(3).^a(9)).*C(2).^a(10)) (+a(21).*(C(3).^a(13)).*C(2).^a(14))] Warning: Struct field assignment overwrites a value with class "double". See MATLAB R14SP2 Release Notes, Assigning Nonstructure Variables As Structures Displays Warning, for details. > In createOptionFeedback at 34 In prepareOptionsForSolver at 31 In lsqnonlin at 168 In Akinetics at 34 Error using Akinetics>objfun Too many input arguments. Error in lsqnonlin (line 194) initVals.F = feval(funfcn{3},xCurrent,varargin{:}); Error in Akinetics (line 34) [a,resnorm,residual ,exitflag,output,lambda,jacobian]=lsqnonlin(@objfun,a0,lb,ub,R,C); Caused by: Failure in initial user-supplied objective function evaluation. LSQNONLIN cannot continue. 求指导,程序哪里出错了,或者求大神重新赐予我新的程序,感觉我的程序拟合不出这么多的参数,21个参数。非常感谢。 动力学模型是: R(1)=(-a(15).*(C(1).^a(1)).*C(2).^a(2)-a(16).*(C(1).^a(3)).*C(2).^a(4)-a(17).*(C(1).^a(5)).*C(4).^a(6)-a(18).*(C(1).^a(7)).*C(4).^a(8)) R(2)=(-a(15).*(C(1).^a(1)).*C(2).^a(2)-a(16).*(C(1).^a(3)).*C(2).^a(4)-a(17).*(C(1).^a(5)).*C(4).^a(6)-a(19).*(C(3).^a(9)).*C(2).^a(10)-a(21).*(C(3).^a(13)).*C(2).^a(14)) R(3)= (+a(15).*(C(1).^a(1)).*C(2).^a(2)-a(19).*(C(3).^a(9)).*C(2).^a(10)-a(20).*(C(3).^a(11)).*C(4).^a(12)-a(21).*(C(3).^a(13)).*C(2).^a(14)) R(4)=(+a(15).*(C(1).^a(1)).*C(2).^a(2)+a(18).*(C(1).^a(7)).*C(4).^a(8)-a(17).*(C(1).^a(5)).*C(4).^a(6)+a(19).*(C(3).^a(9)).*C(2).^a(10)-a(20).*(C(3).^a(11)).*C(4).^a(12)) R(5)=(+a(16).*(C(1).^a(3)).*C(2).^a(4)+a(20).*(C(3).^a(11)).*C(4).^a(12)) R(6)= (+a(18).*(C(1).^a(7)).*C(4).^a(8)) R(7)= (+a(17).*(C(1).^a(5)).*C(4).^a(6)) R(8)= (+a(19).*(C(3).^a(9)).*C(2).^a(10)) R(9)= (+a(21).*(C(3).^a(13)).*C(2).^a(14))] |
» 猜你喜欢
全日制(定向)博士
已经有5人回复
假如你的研究生提出不合理要求
已经有10人回复
萌生出自己或许不适合搞科研的想法,现在跑or等等看?
已经有4人回复
Materials Today Chemistry审稿周期
已经有4人回复
参与限项
已经有3人回复
实验室接单子
已经有4人回复
对氯苯硼酸纯化
已经有3人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有12人回复
所感
已经有4人回复
要不要辞职读博?
已经有7人回复












回复此楼