| 查看: 742 | 回复: 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))] |
» 猜你喜欢
售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急
已经有7人回复
售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急
已经有7人回复
售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急
已经有6人回复
售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急
已经有4人回复
售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急
已经有8人回复
售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急
已经有9人回复
售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急
已经有10人回复
售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急
已经有7人回复
售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急
已经有11人回复
售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急
已经有17人回复










回复此楼