| ²é¿´: 1254 | »Ø¸´: 7 | ||||
| µ±Ç°Ö÷ÌâÒѾ´æµµ¡£ | ||||
liuyong2007½ð³æ (СÓÐÃûÆø)
|
[½»Á÷]
¡¾ÇóÖú¡¿ÓÃMatlabÇó½â¶¯Á¦Ñ§·½³Ì²ÎÊýµÄ¹À¼ÆÎÊÌâ,³ÌÐòÔËÐÐÓдíÎó¡¾ÒÑÍê³É¡¿
|
|||
|
ÄÄλ°ï°ïÎÒ,ллÁË.ÎÒÓÃÁú¸ó¿âËþ»ý·ÖºÍ·ÇÏßÐÔ×îС¶þ³Ë¹À¼Æ¶¯Á¦Ñ§²ÎÊý,µ«ÊÇÓдíÎó.Çë¸ßÊÖÖ¸µãÒ»ÏÂ,лл.³ÌÐòÈçÏÂ: function KineticsEst1_int % ¶¯Á¦Ñ§·½³ÌΪrA=dCA/dt=k1*CA*CB-k2*CC clear all clc global CAm CBm CCm t = [0 20 40 60 120 180 300]; CAm = [10 8 6 5 3 2 1]'; CBm = [8 7 6 5 3 2 1]'; CCm = [0 5 7 8 10 12 14]'; % ·ÇÏßÐÔÄâºÏ beta0 = [0.0053 1.39]; tspan = [0 20 40 60 120 180 300]; CA0 = 10; [beta,resnorm,resid,exitflag,output,lambda,jacobian] = ... lsqnonlin(@OptObjFunc,beta0,[],[],[],tspan,CA0,CAm,CBm,CCm) ci = nlparci(beta,resid,jacobian) % ÄâºÏЧ¹ûͼ(ʵÑéÓëÄâºÏµÄ±È½Ï) [t4plot CA4plot] = ode45(@KineticsEqs,[tspan(1) tspan(end)],CA0,[],beta); plot(t,CAm,'bo',t4plot,CA4plot,'k-') legend('Exp','Model') xlabel('ʱ¼ät, s') ylabel('Ũ¶ÈC_A, mol/L') % ²ÎÊý±æÊ¶½á¹û fprintf('Estimated Parameters:\n') fprintf('\tk1 = %.4f ¡À %.4f\n',beta(1),ci(1,2)-beta(1)) fprintf('\tk2 = %.4f ¡À %.4f\n',beta(2),ci(2,2)-beta(2)) % ------------------------------------------------------------------ function f = OptObjFunc(beta,tspan,CA0,CAm) [t CAc] = ode45(@KineticsEqs,tspan,CA0,[],beta); f = CAc - CAm; % ------------------------------------------------------------------ function dCAdt = KineticsEqs(t,CA,CB,CC,beta) dCAdt = beta(1)*CA*CB-beta(2)*CC; % k1= beta(1), k2= beta(2) [ Last edited by nono2009 on 2009-9-23 at 21:15 ] |
» ÊÕ¼±¾ÌûµÄÌÔÌûר¼ÍƼö
matlab |
» ²ÂÄãϲ»¶
²ÄÁÏר˶322
ÒѾÓÐ4È˻ظ´
308Çóµ÷¼Á
ÒѾÓÐ11È˻ظ´
»úеר˶274Çóµ÷¼Á£¬²»ÌôרҵѧУ
ÒѾÓÐ7È˻ظ´
336²ÄÁÏÓ뻯¹¤085600Çóµ÷¼Á
ÒѾÓÐ6È˻ظ´
Ò»Ö¾Ô¸Ö£ÖÝ´óѧ085600Çóµ÷¼Á
ÒѾÓÐ18È˻ظ´
302·ÖÇóµ÷¼Á Ò»Ö¾Ô¸°²»Õ´óѧ085601
ÒѾÓÐ8È˻ظ´
294Çóµ÷¼Á
ÒѾÓÐ5È˻ظ´
ÉúÎïÓëÒ½Ò©Çóµ÷¼Á
ÒѾÓÐ6È˻ظ´
Çóµ÷¼Á
ÒѾÓÐ8È˻ظ´
Ò»Ö¾Ô¸±±¾©»¯¹¤085600 310·ÖÇóµ÷¼Á
ÒѾÓÐ16È˻ظ´
allenhero1228
½ð³æ (СÓÐÃûÆø)
- Ó¦Öú: 0 (Ó×¶ùÔ°)
- ½ð±Ò: 1617.5
- Ìû×Ó: 201
- ÔÚÏß: 29.7Сʱ
- ³æºÅ: 420486
- ×¢²á: 2007-07-10
- ÐÔ±ð: GG
- רҵ: »¯¹¤/¶þ¼×ÃÑ´ß»¯¼ÁÑо¿
¡ï ¡ï
woshilsh(½ð±Ò+2,VIP+0):thanks for your help!
woshilsh(½ð±Ò+2,VIP+0):thanks for your help!
|
ÄãµÄÄ¿±êº¯ÊýÊÇKineticsEqs(t,CA,CB,CC,beta)£¬betaÊÇÄãÒªÄâºÏµÄ²ÎÊý£¬Ê£ÏµÄÊÇÐβΣ¬ÐèÒªÄãÊäÈë¡£ÒÔÄãÏÖÔÚµÄ˳ÐòÔÚ¼ÆËã¹ý³ÌÖпÉÄÜÊÇÕâÑù£¬tspan¸³¸øt£¬CA0¸³¸øCA£¬CAM¸³¸øCB£¬CBm¸³¸øCC£¬CCm¸³¸øbeta£¬ÕâÑù³ÌÐòÀïÃæ¾ÍûÓÐÄãÒªÄâºÏµÄ²ÎÊý£¬³ÌÐò¾Íû·¨½øÐмÆËã¡£ ºÃÏñÊÇÓ¦¸Ã°Ñbeta·ÅÔÚ×îÇ°Ãæ ÒÔÉÏÊÇÎÒµÄÏë·¨£¬²»ÖªµÀ¶Ô²»¶Ô£¬Ï£ÍûºóÃæÓÐÅ£È˸øÄãÕýÈ·ÏêϸµÄ»Ø´ð ÁíÍ⽨ÒéÄã°ÑmatlabÖиøÄãµÄ´íÎóÌáʾҲ·¢ÉÏÀ´ |
2Â¥2008-12-11 12:33:19
liuyong2007
½ð³æ (СÓÐÃûÆø)
- Ó¦Öú: 0 (Ó×¶ùÔ°)
- ½ð±Ò: 840
- ºì»¨: 1
- Ìû×Ó: 169
- ÔÚÏß: 82.4Сʱ
- ³æºÅ: 400205
- ×¢²á: 2007-06-12
- ÐÔ±ð: GG
- רҵ: »¯Ñ§·´Ó¦¹¤³Ì
mat;abÌáʾ´íÎóÐÅÏ¢,Ï£Íû¸ßÊÖ¸øÎҸĸÄ
|
??? Error using ==> optim\private\lsqncommon User supplied function ==> OptObjFunc failed with the following error: Error using ==> KineticsEst1_int22>OptObjFunc Too many input arguments. Error in ==> lsqnonlin at 163 [x,Resnorm,FVAL,EXITFLAG,OUTPUT,LAMBDA,JACOB] = ... Error in ==> KineticsEst1_int22 at 17 [beta,resnorm,resid,exitflag,output,lambda,jacobian] = ... |
3Â¥2008-12-11 12:41:34
allenhero1228
½ð³æ (СÓÐÃûÆø)
- Ó¦Öú: 0 (Ó×¶ùÔ°)
- ½ð±Ò: 1617.5
- Ìû×Ó: 201
- ÔÚÏß: 29.7Сʱ
- ³æºÅ: 420486
- ×¢²á: 2007-07-10
- ÐÔ±ð: GG
- רҵ: »¯¹¤/¶þ¼×ÃÑ´ß»¯¼ÁÑо¿
¡ï
coldwind042(½ð±Ò+1,VIP+0):лл°ïÖú£¡
coldwind042(½ð±Ò+1,VIP+0):лл°ïÖú£¡
| ÄãÊÔÊÔ°Ñbeta·ÅÔÚ×îÇ°Ãæ£¬È»ºóÔÚglobalÖаÑCA CB CC¼ÓÉÏ£¬¶øÇÒÎÒ¿´ÄãÏë°ÑCA0,CAm,CBm,CCm¶¼¸³¸øº¯Êý£¬µ«º¯ÊýÀïÃæÖ»ÓÐÈý¸öÐβΣ¬ÊDz»ÊÇÓ¦¸Ã°ÑCA0,CAm,CBm,CCmÖеÄij¸ö±äÁ¿¸øÈ¥ÁË |
4Â¥2008-12-11 13:06:55
snipher950
ľ³æ (ÕýʽдÊÖ)
- Ó¦Öú: 2 (Ó×¶ùÔ°)
- ½ð±Ò: 3024.6
- ºì»¨: 3
- Ìû×Ó: 797
- ÔÚÏß: 22.5Сʱ
- ³æºÅ: 522854
- ×¢²á: 2008-03-12
- ÐÔ±ð: MM
- רҵ: »¯¹¤ÏµÍ³¹¤³Ì
5Â¥2008-12-11 14:20:27
snipher950
ľ³æ (ÕýʽдÊÖ)
- Ó¦Öú: 2 (Ó×¶ùÔ°)
- ½ð±Ò: 3024.6
- ºì»¨: 3
- Ìû×Ó: 797
- ÔÚÏß: 22.5Сʱ
- ³æºÅ: 522854
- ×¢²á: 2008-03-12
- ÐÔ±ð: MM
- רҵ: »¯¹¤ÏµÍ³¹¤³Ì
¡ï ¡ï ¡ï ¡ï ¡ï
woshilsh(½ð±Ò+5,VIP+0):¸Ðл»Ø´ð£¡Ö§³ÖÈÈÐijæÓÑ£¬³£À´£¡ºÇºÇ£¡
woshilsh(½ð±Ò+5,VIP+0):¸Ðл»Ø´ð£¡Ö§³ÖÈÈÐijæÓÑ£¬³£À´£¡ºÇºÇ£¡
|
¿ÉÒÔÔËÐÐÁË£¬¸ÄÁËºÜ¶àµØ·½£¬Äã×Ô¼º×Áĥһϡ£Ö»²»¹ý½á¹û²»¶Ô£¬ÄÇÊÇÒòΪÄãµÄʵÑéÊý¾ÝÊÇÐé¼ÙµÄ£¬MatlabÄâºÍ²»³öÀ´ºÃµÄ½á¹û¡£ function KineticsEst1_int % ¶¯Á¦Ñ§·½³ÌΪrA=dCA/dt=k1*CA*CB-k2*CC clear all clc global CAm CBm CCm t = [0 20 40 60 120 180 300]; CAm = [10 8 6 5 3 2 1]'; CBm = [8 7 6 5 3 2 1]'; CCm = [0 5 7 8 10 12 14]'; % ·ÇÏßÐÔÄâºÏ beta0 = [0.0000053 10]; tspan = [0 20 40 60 120 180 300]; CA0 = 10; CB0 = 8; CC0 = 0; [beta,resnorm,resid,exitflag,output,lambda,jacobian] = ... lsqnonlin(@OptObjFunc,beta0,[0 0],[],[],tspan,[CA0 CB0 CC0]) ci = nlparci(beta,resid,jacobian) % ÄâºÏЧ¹ûͼ(ʵÑéÓëÄâºÏµÄ±È½Ï) [t4plot CA4plot] = ode45(@KineticsEqs,[tspan(1) tspan(end)],[CA0 CB0 CC0],[],beta); plot(tspan,CAm,'bo',t4plot,CA4plot(:,1),'k-') legend('Exp','Model') xlabel('ʱ¼ät, s') ylabel('Ũ¶ÈC_A, mol/L') % ²ÎÊý±æÊ¶½á¹û fprintf('Estimated Parameters:\n') fprintf('\tk1 = %.4f ¡À %.4f\n',beta(1),ci(1,2)-beta(1)) fprintf('\tk2 = %.4f ¡À %.4f\n',beta(2),ci(2,2)-beta(2)) % ------------------------------------------------------------------ function f = OptObjFunc(beta,tspan,CA0) global CAm CBm CCm [t Y] = ode45(@KineticsEqs,tspan,CA0,[],beta); if length(t)==length(tspan) f = Y - [CAm CBm CCm]; else f=100000; end % ------------------------------------------------------------------ function dy = KineticsEqs(t,Y,beta) CA=Y(1); CB=Y(2); CC=Y(3); dCAdt = beta(1)*CA*CB-beta(2)*CC; % k1= beta(1), k2= beta(2) dCBdt = beta(1)*CA*CB-beta(2)*CC; dCCdt = beta(2)*CC; dy=[dCAdt;dCBdt;dCCdt]; |
6Â¥2008-12-11 14:35:07
liuyong2007
½ð³æ (СÓÐÃûÆø)
- Ó¦Öú: 0 (Ó×¶ùÔ°)
- ½ð±Ò: 840
- ºì»¨: 1
- Ìû×Ó: 169
- ÔÚÏß: 82.4Сʱ
- ³æºÅ: 400205
- ×¢²á: 2007-06-12
- ÐÔ±ð: GG
- רҵ: »¯Ñ§·´Ó¦¹¤³Ì
7Â¥2008-12-11 18:50:47
apolloking
½ð³æ (СÓÐÃûÆø)
- Ó¦Öú: 0 (Ó×¶ùÔ°)
- ½ð±Ò: 1083.1
- É¢½ð: 35
- ºì»¨: 2
- Ìû×Ó: 156
- ÔÚÏß: 60.5Сʱ
- ³æºÅ: 75702
- ×¢²á: 2005-06-20
- רҵ: ÄÜÔ´»¯¹¤
¡ï ¡ï ¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû½»Á÷
sunxiao(½ð±Ò+2,VIP+0):¹ÄÀøÐ³æ²ÎÓëÌÖÂÛ 7-18 05:29
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû½»Á÷
sunxiao(½ð±Ò+2,VIP+0):¹ÄÀøÐ³æ²ÎÓëÌÖÂÛ 7-18 05:29
|
Â¥Ö÷Ó¦ÓõÄÊǼäЪʽ·´Ó¦Æ÷°É ËùÒÔÄܹ»µÃµ½²»Í¬Ê±¿ÌµÄŨ¶ÈÖµ |
8Â¥2009-07-17 18:58:49














»Ø¸´´ËÂ¥