| 查看: 679 | 回复: 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人回复
航天502所 高瑛珂博士 婚内征婚 欺骗女性开房
已经有33人回复
关于水星近日点进动成因的质疑 与实证分析
已经有9人回复
婚姻里的赢家
已经有6人回复
祈祷自己至少3A2B上会啊!
已经有7人回复
山东省优青 青B通知了????
已经有3人回复











回复此楼