| 3 | 1/1 | 返回列表 |
| 查看: 624 | 回復(fù): 2 | ||
[求助]
在線等,請版主看看如何運(yùn)算不了。總是報(bào)錯(cuò)
|
|
小弟實(shí)在是一竅不通對matlab,不要怪小弟提的問題比較傻,一個(gè)是報(bào)錯(cuò)中的問題,這個(gè)[k,fval,flag] = fmincon(@ObjFunc7Fmincon一句的@ObjFunc7Fmincon是怎么設(shè)定的?我看有的人寫@ObjFunc4Fmincon. 然后麻煩大家看看這個(gè)我自己模擬的代碼,是按照版主 @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]; % 參數(shù)初值 lb = [0 0 0 0 0 0]; % 參數(shù)下限 ub = [1 1 1 1 1 1]; % 參數(shù)上限 x0 = [100 0 0 0]; yexp = Kinetics; % yexp: 實(shí)驗(yàn)數(shù)據(jù)[x1 x4 x5 x6] warning off % 使用函數(shù)fmincon()進(jìn)行參數(shù)估計(jì) [k,fval,flag] = fmincon(@ObjFunc7Fmincon,k0,[],[],[],[],lb,ub,[],[],x0,yexp); fprintf('\n使用函數(shù)fmincon()估計(jì)得到的參數(shù)值為:\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 % 使用函數(shù)lsqnonlin()進(jìn)行參數(shù)估計(jì) [k,resnorm,residual,exitflag,output,lambda,jacobian] = ... lsqnonlin(@ObjFunc7LNL,k0,lb,ub,[],x0,yexp); ci = nlparci(k,residual,jacobian); fprintf('\n\n使用函數(shù)lsqnonlin()估計(jì)得到的參數(shù)值為:\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 % 以函數(shù)fmincon()估計(jì)得到的結(jié)果為初值,使用函數(shù)lsqnonlin()進(jìn)行參數(shù)估計(jì) 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()的結(jié)果為初值,使用函數(shù)lsqnonlin()估計(jì)得到的參數(shù)值為:\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]; |
| 3 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 265求調(diào)劑 +12 | 梁梁校校 2026-03-19 | 14/700 |
|
|---|---|---|---|---|
|
[考研] 336求調(diào)劑 +3 | rmc8866 2026-03-21 | 3/150 |
|
|
[考研] 一志愿中國石油大學(xué)(華東) 本科齊魯工業(yè)大學(xué) +3 | 石能偉 2026-03-17 | 3/150 |
|
|
[考研] 一志愿華南師大 070300(化學(xué))304分求調(diào)劑 +3 | 0703武芊慧雪304 2026-03-18 | 3/150 |
|
|
[考研] 317求調(diào)劑 +5 | 申子申申 2026-03-19 | 9/450 |
|
|
[考研] 求調(diào)劑,一志愿:南京航空航天大學(xué)大學(xué) ,080500材料科學(xué)與工程學(xué)碩,總分289分 +4 | @taotao 2026-03-19 | 4/200 |
|
|
[考研] 329求調(diào)劑 +9 | 想上學(xué)吖吖 2026-03-19 | 9/450 |
|
|
[考研] 中南大學(xué)化學(xué)學(xué)碩337求調(diào)劑 +3 | niko- 2026-03-19 | 6/300 |
|
|
[考研]
|
簡木ChuFront 2026-03-19 | 8/400 |
|
|
[考研] 一志愿吉林大學(xué)材料學(xué)碩321求調(diào)劑 +11 | Ymlll 2026-03-18 | 15/750 |
|
|
[考研] 08工學(xué)調(diào)劑 +5 | 用戶573181 2026-03-20 | 5/250 |
|
|
[考研] 085600材料與化工調(diào)劑 324分 +10 | llllkkkhh 2026-03-18 | 12/600 |
|
|
[考研] 0703化學(xué)調(diào)劑 +5 | pupcoco 2026-03-17 | 8/400 |
|
|
[考研] 0703化學(xué)336分求調(diào)劑 +6 | zbzihdhd 2026-03-15 | 7/350 |
|
|
[考研] 考研求調(diào)劑 +3 | 橘頌. 2026-03-17 | 4/200 |
|
|
[考研] 326求調(diào)劑 +5 | 上岸的小葡 2026-03-15 | 6/300 |
|
|
[考研] 085601求調(diào)劑 +4 | Du.11 2026-03-16 | 4/200 |
|
|
[考研] 一志愿,福州大學(xué)材料專碩339分求調(diào)劑 +3 | 木子momo青爭 2026-03-15 | 3/150 |
|
|
[考研] 304求調(diào)劑 +5 | 素年祭語 2026-03-15 | 5/250 |
|
|
[考研] 070305求調(diào)劑 +3 | mlpqaz03 2026-03-14 | 4/200 |
|