24小时热门版块排行榜    

查看: 627  |  回复: 2

llgcty

金虫 (正式写手)

[求助] 在线等,请版主看看如何运算不了。总是报错

小弟实在是一窍不通对matlab,不要怪小弟提的问题比较傻,一个是报错中的问题,这个[k,fval,flag] = fmincon(@ObjFunc7Fmincon一句的@ObjFunc7Fmincon是怎么设定的?我看有的人写@ObjFunc4Fmincon.
然后麻烦大家看看这个我自己模拟的代码,是按照版主 @dbb627的代码写的,到底是哪里不对麻烦改下谢谢了。
function parafit
%  
% r1 = k(1)*C(1);
% r2 = k(2)*C(1);
% r3 = k(3)*C(2);
% r4 = k(4)*C(3);
% r5 = k(5)*C(2);
% r6 = k(6)*C(3);
%
% dCAdt = - r1 - r2;
% dCBdt = r1 + r4 - r3 - r5;
% dCCdt = r2 + r3 - r4 – r6 ;
% dCDdt = r5 + r6;
clear all
clc
%        t/min   CA-1     CB-2        CC-3   CD-4   / mol/L
  Kinetics=[0       100    0         0          0      
          10        0.2441  0.1390   0.28.31   0.0171   
          20        0.432  0.1629   0.2370   0.0192   
          30        0.756   0.1992  0.2509    0.0349   
          40        0.522   0.2091   0.2737    0.0531   
          50        0.426    0.1967   0.3231   0.0634   
          60        0.397    0.1803   0.3536   0.0822   
          70        0.431    0.1732   0.3330   0.0945  
          80        0.531   0.1645    0.3310  0.0987];
k0 = [0.0000000005  0.0000000005  0.0000000005  0.00000000005  0.00000005  0.00000005];         % 参数初值
lb = [0  0  0  0  0  0];                   % 参数下限
ub = [1 1  1  1  1  1];    % 参数上限
x0 = [100  0  0  0];
yexp = Kinetics;                  % yexp: 实验数据[x1        x4        x5        x6]
warning off
% 使用函数fmincon()进行参数估计
[k,fval,flag] = fmincon(@ObjFunc7Fmincon,k0,[],[],[],[],lb,ub,[],[],x0,yexp);
fprintf('\n使用函数fmincon()估计得到的参数值为:\n')
fprintf('\tk1 = %.11f\n',k(1))
fprintf('\tk2 = %.11f\n',k(2))
fprintf('\tk3 = %.11f\n',k(3))
fprintf('\tk4 = %.11f\n',k(4))
fprintf('\tk5 = %.11f\n',k(5))
fprintf('\tk6 = %.11f\n',k(6))
fprintf('  The sum of the squares is: %.1e\n\n',fval)
k_fm= k;
warning off
% 使用函数lsqnonlin()进行参数估计
[k,resnorm,residual,exitflag,output,lambda,jacobian] = ...
    lsqnonlin(@ObjFunc7LNL,k0,lb,ub,[],x0,yexp);      
ci = nlparci(k,residual,jacobian);
fprintf('\n\n使用函数lsqnonlin()估计得到的参数值为:\n')
fprintf('\tk1 = %.11f\n',k(1))
fprintf('\tk2 = %.11f\n',k(2))
fprintf('\tk3 = %.11f\n',k(3))
fprintf('\tk4 = %.11f\n',k(4))
fprintf('\tk5 = %.11f\n',k(5))
fprintf('\tk6 = %.11f\n',k(6))
fprintf('  The sum of the squares is: %.1e\n\n',resnorm)
k_ls = k;
output
warning off
% 以函数fmincon()估计得到的结果为初值,使用函数lsqnonlin()进行参数估计
k0 = k_fm;
[k,resnorm,residual,exitflag,output,lambda,jacobian] = ...
    lsqnonlin(@ObjFunc7LNL,k0,lb,ub,[],x0,yexp);      
ci = nlparci(k,residual,jacobian);
fprintf('\n\n以fmincon()的结果为初值,使用函数lsqnonlin()估计得到的参数值为:\n')
fprintf('\tk1 = %.11f\n',k(1))
fprintf('\tk2 = %.11f\n',k(2))
fprintf('\tk3 = %.11f\n',k(3))
fprintf('\tk4 = %.11f\n',k(4))
fprintf('\tk5 = %.11f\n',k(5))
fprintf('\tk6 = %.11f\n',k(6))
fprintf('  The sum of the squares is: %.1e\n\n',resnorm)
k_fmls = k;
output
tspan = [0 : 10 : 80];
[t x] = ode45(@KineticEqs,tspan,x0,[],k_fmls);
figure;
plot(t,x(:,1),t,yexp(:,2),'*');legend('ca-pr','ca-real')
figure;plot(t,x(:,2:5));
hold on
plot(t,yexp(:,3:6),'o');legend('cb-pr','cc-pr','cd-pr','ce-pr','cb-real','cc-real','cd-real','ce-real')
% ------------------------------------------------------------------
function f = ObjFunc7Fmincon(k,x0,yexp)
tspan = [0 : 10 : 80];
[t x] = ode45(@KineticEqs,tspan,x0,[],k);   
y(:,2) = x(:,1);
y(:,3:6) = x(:,2:5);
f =  sum((y(:,2)-yexp(:,2)).^2) + sum((y(:,3)-yexp(:,3)).^2)   ...
    + sum((y(:,4)-yexp(:,4)).^2) + sum((y(:,5)-yexp(:,5)).^2)   ...
    + sum((y(:,6)-yexp(:,6)).^2) ;

% ------------------------------------------------------------------
function f = ObjFunc7LNL(k,x0,yexp)
tspan = [0.0 : 10 : 80];
[t x] = ode45(@KineticEqs,tspan,x0,[],k);   
y(:,2) = x(:,1);
y(:,3:6) = x(:,2:5);
f1 = y(:,2) - yexp(:,2);
f2 = y(:,3) - yexp(:,3);
f3 = y(:,4) - yexp(:,4);
f4 = y(:,5) - yexp(:,5);
f5 = y(:,6) - yexp(:,6);
f = [f1; f2; f3; f4; f5];

% ------------------------------------------------------------------
function dxdt = KineticEqs(t,x,k)
r1 = k(1)*x(1);
r2 = k(2)*x(1);
r3 = k(3)*x(2);
r4 = k(4)*x(3);
r5 = k(5)*x(2);
r6 = k(6)*x(3);

dCAdt = - r1 - r2;
dCBdt = r2 + r4 - r3 - r5;
dCCdt = r2 + r3 - r4 - r6;
dCDdt = r5 + r6;

dxdt = [dCAdt; dCBdt; dCCdt; dCDdt];
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

llgcty

金虫 (正式写手)

快点来吧,帮忙一下!!!
2楼2015-11-29 21:52:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

llgcty

金虫 (正式写手)

各位大神帮帮忙
3楼2015-11-30 11:21:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 llgcty 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 307求调剂 +3 余意卿 2026-03-21 6/300 2026-03-24 15:03 by 余意卿
[考研] 一志愿北京化工大学材料与化工 264分各科过A区国家线 +3 哈哈157349 2026-03-21 3/150 2026-03-24 14:11 by zhyzzh
[考研] 279分求调剂 一志愿211 +18 chaojifeixia 2026-03-19 20/1000 2026-03-24 10:34 by dolphin_ycj
[考研] 一志愿哈工大,085400,320,求调剂 +3 gdlf9999 2026-03-24 3/150 2026-03-24 10:08 by 搏击518
[考研] 一志愿北京化工大学 070300 学硕 336分 求调剂 +7 vv迷 2026-03-22 7/350 2026-03-23 23:44 by Txy@872106
[考研] 291求调剂 +8 hhhhxn.. 2026-03-23 8/400 2026-03-23 23:15 by peike
[考研] 0854电子信息求调剂 324 +3 Promise-jyl 2026-03-23 3/150 2026-03-23 13:43 by wangkm
[考研] 298求调剂一志愿211 +3 上岸6666@ 2026-03-20 3/150 2026-03-22 15:50 by ColorlessPI
[考研] 生物学调剂 +5 Surekei 2026-03-21 5/250 2026-03-22 14:39 by tcx007
[考研] 269专硕求调剂 +6 金恩贝 2026-03-21 6/300 2026-03-22 14:31 by ColorlessPI
[考研] 286求调剂 +10 Faune 2026-03-21 10/500 2026-03-21 23:34 by 314126402
[考研] 297求调剂 +3 喜欢还是不甘心 2026-03-20 3/150 2026-03-21 18:33 by 学员8dgXkO
[基金申请] 学校已经提交到NSFC,还能修改吗? 40+4 babangida 2026-03-19 9/450 2026-03-21 16:12 by babangida
[考研] 085601调剂 358分 +3 zzzzggh 2026-03-20 4/200 2026-03-21 10:21 by luoyongfeng
[考研] 求调剂 +3 Ma_xt 2026-03-17 3/150 2026-03-21 02:05 by JourneyLucky
[考研] 304求调剂 +6 曼殊2266 2026-03-18 6/300 2026-03-21 00:32 by JourneyLucky
[考研] 一志愿中海洋材料工程专硕330分求调剂 +8 小材化本科 2026-03-18 8/400 2026-03-20 23:16 by JourneyLucky
[考研] 求调剂,一志愿:南京航空航天大学大学 ,080500材料科学与工程学硕,总分289分 +4 @taotao 2026-03-19 4/200 2026-03-20 22:14 by JourneyLucky
[考研] 0703化学调剂 +5 pupcoco 2026-03-17 8/400 2026-03-19 13:58 by houyaoxu
[考研] 收复试调剂生 +4 雨后秋荷 2026-03-18 4/200 2026-03-18 14:16 by elevennnne
信息提示
请填处理意见