plot(CAc,resid,'*')
xlabel('浓度拟合值(mol/L)') ylabel('残差R (mol/L)') refline(0,0)
% 参数辨识结果
fprintf('Estimated Parameters:\\n')
fprintf('\\tk = %.4f ± %.4f\\n',beta(1),ci(1,2)-beta(1)) fprintf('\\tn = %.2f ± %.2f\\n',beta(2),ci(2,2)-beta(2)) % ------------------------------------------------------------------ function f = OptObjFunc(beta,tspan,CA0,CAm) [tCAc] = ode45(@KineticsEqs,tspan,CA0,[],beta); f = CAc - CAm;
% ------------------------------------------------------------------ functiondCAdt = KineticsEqs(t,CA,beta)
dCAdt = -beta(1)*CA^beta(2); % k = beta(1), n = beta(2) 运行结果如下: beta =
0.0047 1.4555 resnorm = 0.0941 resid =
0 -0.2408 0.1813 0.0303 -0.0169 -0.0435 0.0131 exitflag = 3 output =
firstorderopt: 0.0041 iterations: 3 funcCount: 12 cgiterations: 0
algorithm: 'trust-region-reflective' message: [1x457 char] lambda =
lower: [2x1 double] upper: [2x1 double] jacobian =
(2,1) -394.7680 (3,1) -566.6235 (4,1) -629.8164
(5,1) -588.7875 (6,1) -478.0379 (7,1) -305.6976 (2,2) -4.0422 (3,2) -5.4804 (4,2) -5.7590 (5,2) -4.5555 (6,2) -3.1228 (7,2) -1.3857 ci =
0.0031 0.0063 1.2700 1.6410 Estimated Parameters: k = 0.0047 ± 0.0016 n = 1.46 ± 0.19
10987浓度CA, mol/L ExpModel654321 050100150时间t, s200250300
0.20.150.10.05残差R (mol/L)0-0.05-0.1-0.15-0.2-0.251234567浓度拟合值(mol/L)8910下面将lsqnonlin替换成lsqcurvefit函数观察结果变化: