| 24小時(shí)熱門(mén)版塊排行榜 |
| 1 | 1/1 | 返回列表 |
| 查看: 366 | 回復(fù): 0 | ||
1135725495鐵桿木蟲(chóng) (著名寫(xiě)手)
|
[求助]
運(yùn)行matlab出現(xiàn)的問(wèn)題
|
|
Caused by: Failure in initial user-supplied objective function evaluation. FMINCON cannot continue. 誰(shuí)知道這是怎么回事啊? function parafit % % r1 =(k(1)*c^2-0.5*k(2)*(9.404-c))/(1+k(3)*c+0.5*k(4)*(9.404-c)+2*k(5)*c^2/(k(4)*(9.404-c))); % % dCAdt = - r1; clear all clc % t/min CA / mol/L Kinetics=[0 7.9556 3 5.0759 6 4.3477 9 3.9301 12 3.6489 15 3.4439 18 3.2875 21 3.1645 31 2.8989 41 2.7540 51 2.6694 61 2.6182]; k0 = [0.1 0.1 0.01 0.01 0.01]; % 參數(shù)初值 lb = [0 0 0 0 0]; % 參數(shù)下限 ub = [100 100 100 100 100]; % 參數(shù)上限 x0 = [7.9556]; yexp = Kinetics; 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(' 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(' 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(' The sum of the squares is: %.1e\n\n',resnorm) k_fmls = k; output tspan = [0 3 6 9 12 15 18 21 31 41 51 61]; [t x] = ode45(@KineticEqs,tspan,x0,[],k_fmls); figure; plot(t,x,'o-',t,yexp(:,2),'*');legend('ca-pr','ca-real') x % ------------------------------------------------------------------ function f = ObjFunc7Fmincon(k,x0,yexp) tspan = [0 3 6 9 12 15 18 21 31 41 51 61]; [t x] = ode45(@KineticEqs,tspan,x0,[],k); f = sum((x-yexp(:,2)).^2) ; % ------------------------------------------------------------------ function f = ObjFunc7LNL(k,x0,yexp) tspan = [0 3 6 9 12 15 18 21 31 41 51 61]; [t x] = ode45(@KineticEqs,tspan,x0,[],k); f1 = x - yexp(:,2); f = [f1]; % ------------------------------------------------------------------ function dxdt = KineticEqs(t,x,k) dxdt =-(k(1)*x^2-0.5*k(2)*(9.404-x))/(1+k(3)*c+0.5*k(4)*(9.404-x)+2*k(5)*x^2/(k(4)*(9.404-x))); |
找到一些相關(guān)的精華帖子,希望有用哦~
| 1 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|