±±¾©Ê¯ÓÍ»¯¹¤Ñ§Ôº2026ÄêÑо¿ÉúÕÐÉú½ÓÊÕµ÷¼Á¹«¸æ
²é¿´: 941  |  »Ø¸´: 2

winterhao

Ìú¸Ëľ³æ (ÕýʽдÊÖ)

[ÇóÖú] 1stopt½øÐи´ÔÓ¶¯Á¦Ñ§ode¶à²ÎÊýÄâºÏ ÇóÖú@dingd ÒÑÓÐ1È˲ÎÓë

ÄúºÃ ÎÒÏëÇóÖúÄú°ïÎÒÓø߰汾1stopt½øÐÐÒ»×é²ÎÊýÄâºÏ ÎÒÔÚmatlabÀïÓÃlsqnonlinÿ´ÎÓÅ»¯³öÀ´µÄ²ÎÊý¶¼ÊÇÎÒ¸øµÄ³õÖµ£¬²¢Ã»ÓÐʵÏÖÓÅ»¯¹¦ÄÜ£¬Ò»Ö±ÊÇlocal minimum possible¡£ÎÒûÓùý1stopt£¬ËùÒÔÎÒÏÖÔÚÖ»ÄܰÑmatlab codeÌù³öÀ´£¬ÇëÄúÓÐʱ¼ä°ïÎÒ¿´Ò»Ï¡£·Ç³£¸Ðл

%ÄâºÏº¯Êý
function fitting_kn_kg_n_g_f0_f1_f2_f3
format long
clear all;
clc
% initial parameter identification
kn = 10^2.6;
kg = 8.06e-2;
n = 6.5 ;
g = 6.5 ;
f=1;
k0 = [kn,kg,n,g,f]; %Concentration and PH
%Experimental data
% Time
tspan = [0,600,900,1200,1500,1800,2100,2400,2700,3000];
% Concentration and PH
data = [0,0.186,0.271,0.36,0.384,0.311,0.262,0.257,0.252,0.245;...
    10.35,8.64,8.45,8.35,8.21,8.09,8,7.83,7.65,7.42]';
size(data);
yexp = data;
%initial values for KineticsEqs
x0 = [0,0,3.3e-4,3.03e-11,0,0,1.65e-4,100,0,0,0,0,0];

% Boundary condition of fitting parameter
lb = [0 0 0 0 0  ];  
ub = [1 1 1 1 1  ]*1e3;
% Call the optimizer:
options = optimoptions(@lsqnonlin,'TolX',1e-12,'TolFun',1e-12,'MaxFunEvals',500);
[k,resnorm,residual,exitflag,output,lambda,jacobian] ...
   = lsqnonlin(@ObjFunc,k0,lb,ub,options,tspan,x0,yexp);
%ci = nlparci(k,residual,jacobian);
%Optimized solution
ts = [0,3000];
[ts ys] = ode15s(@KineticsEqs,ts,x0,[],k);% the simulation data base on ts
[ts_p ys_p] = ode15s(@KineticsEqs,tspan,x0,[],k);% the simulation data base on tspan
R2_Mg = 1-sum((yexp(:,1)-ys_p(:,7)-ys_p(:,9)).^2)./sum((yexp(:,1)-mean(ys_p(:,7)+ys_p(:,9))).^2);
R2_PH = 1-sum((yexp(:,2)+log10(ys_p(:,4))).^2)./sum((yexp(:,2)-mean(-log10(ys_p(:,4)))).^2);
fprintf('n\t R2_Mg = %.6f\n',R2_Mg);
fprintf('n\t R2_PH = %.6f\n',R2_PH);
figure(1)
plot(tspan,yexp(:,1),'o',ts,ys(:,7)+ys(:,9)) %plot the data vs solution
title('Parameter fitting of Mg2+ in the bulk,mol/L');
figure(2)
PH=-log10(ys(:,4));
plot(tspan,yexp(:,2),'o',ts,PH) %plot the data vs solution
title('Parameter fitting of PH');
fprintf('\n\nlsqnonlin():\n')
fprintf('\tkn = %.16f \n',k(1))
fprintf('\tkg = %.16f \n',k(2))
fprintf('\tn  = %.16f \n',k(3))
fprintf('\tg  = %.16f \n',k(4))
fprintf('\tf0  = %.16f \n',k(5))
end

%ÓÅ»¯º¯Êý
%Call 'Objfun' function:
function lsq = ObjFunc(k,tspan,x0,yexp)
[t Xsim] = ode15s(@KineticsEqs,tspan,x0,[],k);
%Concentration of Mg2+
Xsim1 = Xsim(:,7)+Xsim(:,9);
%PH
Xsim2 = -log10(Xsim(:,4));
ycal(:,1) = Xsim1;
ycal(:,2) = Xsim2;
size(ycal(:,1));
size(ycal(:,2));
lsq = [(ycal(:,1)-yexp(:,1)) (ycal(:,2)-yexp(:,2))];
end


%¶¯Á¦Ñ§·½³Ì×飨ODE£©
% the reaction of Calc hydroxide[Mg(OH)2] and Carbon dioxide
function dxdt=KineticsEqs(t,x,k)
dxdt = zeros(13,1);

Qg = 1.67e-2;        % L/s          1L/min
N  = 650;  
vl = 2.826;          % vl is the dispersion volum                  L
vg = 2.047*10^(-5)*N^(0.579)*Qg^0.63*vl;  
                     % vg is the gas volum in the gas-liquid mixture m3
           %agitating speed rpm
P = 1;               % P is the atmospheric pressure                atm
pi = 3.14;
kla = 0.0304;        % kla is the mass transfer coefficient of CO2  s^(-1)
                     %(9.6218e-5)*N^0.4316*Qg^0.3840*c^0.1117*E;  
kH = 0.035;          % kh is the Henry's constant               mol/(L*atm)

M_CO2 = 44;          % M_CO2 is the co2 molar mass              g/mol
M_MgOH = 58;         % molar mass of Mg(OH)2               g/mol
M_MgCO3 = 84;        % molar mass of M_MgCO3    g/mol

dd_CO2 = 1.8;        % dd_CO2 is the density of CO2
dd_MgOH = 2.34e3;    % dd_Mg(OH)2 is the density of Mg(OH)2          g/L
dd_MgCO3 = 2.96e3;   % dd_Mg(OH)2 is the density of MgCO3          g/L
dd_mol_MgCO3 = dd_MgCO3/M_MgCO3; % mol/L
ddslurry = 1e3;      % density of slurry g/L                     % ddCO2 = 1960; ddCO2 is the density of CO2
c = 1;               % volume fraction of CO2 in the inlet gas                     
CO2in = dd_CO2/M_CO2*c;% CO2in is the concentration of CO2 entering the reactor mol/L
                     % CO2in = ddCO2/MCO2*0.15 =1800/44*0.05 =6.75  mol/m3
%Ksp1 = 1.8e-11;      % Ksp[Mg(OH)2]          mol2/L2
Ksp2 = 3.5e-8;       % Ksp[MgCO3]            mol2/L2

k11 = 8.4e3;         % L/(mol*s) k11 = 8.4*10^3             L/mol*s
k12 = 2e-4;          % s^(-1)     k12 = 2.0*10^(-4)           s^(-1)
k21 = 6e9;           % L/(mol*s) k21 = 6*10^(9)             L/mol*s
k22 = 1.2e6;         % s^(-1)     k22 = 1.2*10^(6)            s^(-1)
k31 = 1.4e11;        % L/(mol*s) k31 = 1.4*10^(11)          L/mol*s
k32 = 1.3e-3;        % mol/(L*s) k32 = 1.3*10^(-3)          mol/L*s
k41 = 2.4e-2;        % s^(-1)     k41 = 2.4*10^(-2)          s^(-1)
k42 = 5.7e2;         % L/(mol*s) k42 = 5.7*10^4             L/mol*s
k52 = 9e-3;          % s^(-1) k52 = 9e-3                     s^(-1)
k51 = 1.88e6;         %k52/Ksp2;      % L/(mol*s)  


D_OH     = 5.27e-7;  %diffusion coefficeint of OH- dm2/s
D_H      = 9.31e-7;  %diffusion coefficeint of H+ dm2/s
D_Mg     =7.06e-8; %7.06e-8;  %diffusion coefficeint of Mg2+ dm2/s

zk_OH     = -1;
zk_H      = 1;
zk_Mg     = 2;

C_OH     = 3.3e-4;  
C_H      = 3.03e-11;
C_Mg     = 1.65e-4; % concentration on the interface i

d_OH      = C_OH-x(3);
d_H       = C_H-x(4);
d_Mg      = C_Mg-x(7); % Ci-Cb


A_OH      = (C_OH+x(3))/2;
A_H       = (C_H+x(4))/2;
A_Mg      = (C_Mg+x(7))/2;  % (Ci+Cb)/2

Ntot1 = 8.17e10;      %total number of Mg(OH)2 100g = 8.17e10  
                                    %Ntot1 = 100/(3.14*d^3*2340/6)
UL = 1.01e-1; % dynamic viscosity 1.01e-3 Pas = kg*s/m = 1.01e-1 g*s/dm
VL = 1.01e-4; % kinematic viscosity 1.01e-6 m2/s = 1.01e-4 dm2/s

eT = 14028; % total energy dissipation w/kg = m2/s3*100 = dm2/s3
                  
dp = (6*x(8)/(Ntot1*dd_MgOH*3.14))^(1/3); %diameter of solid dm

a = (3.3*x(8)^(2/3)*(3.14*Ntot1)^(1/3)/dd_MgOH^(2/3)/vl);%specific area

if a > 0
   
% mass transfer      
Re = eT^(1/3)*dp^(4/3)/VL;

Sc_OH     = UL/(ddslurry*D_OH);
Sc_H      = UL/(ddslurry*D_H);
Sc_Mg     = UL/(ddslurry*D_Mg);

Sh_OH     = (2^5.8+(0.61*(Re^0.58)*(Sc_OH^(1/3)))^5.8)^(1/5.8);
Sh_H      = (2^5.8+(0.61*(Re^0.58)*(Sc_H^(1/3)))^5.8)^(1/5.8);
Sh_Mg     = (2^5.8+(0.61*(Re^0.58)*(Sc_Mg^(1/3)))^5.8)^(1/5.8);

Ks_OH     = Sh_OH*D_OH/dp;
Ks_H      = Sh_H*D_H/dp;
Ks_Mg     = Sh_Mg*D_Mg/dp;

K = (zk_OH*Ks_OH*d_OH+zk_H*Ks_H*d_H+zk_Mg*Ks_Mg*d_Mg)/...
    (zk_OH^2*Ks_OH*A_OH+zk_H^2*Ks_H*A_H+zk_Mg^2*Ks_Mg*A_Mg);

NOH     = Ks_OH*(d_OH-A_OH*zk_OH*K);
NH      = Ks_H*(d_H-A_H*zk_H*K);
NMg     = Ks_Mg*(d_Mg-A_Mg*zk_Mg*K);

% reaction kinetics

r1 = k11*x(1)*x(3)-k12*x(5);
r2 = k21*x(5)*x(3)-k22*x(6);
r3 = k31*x(3)*x(4)-k32;
r4 = k41*x(1)-k42*x(5)*x(4);
r5 = k51*x(7)*x(6)-k52;

% Crystallization kinetics
% Parameter fitting!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% k(1)-k(4)
cMg=max(x(9),0);
S = max(cMg-sqrt(Ksp2),0);
B = k(1)*(S^k(3));
G = k(2)*(S^k(4));
%current = 2*NMg+NH-NOH
%f=k(5)%%%%%%%%%%%%%%%%%%%%%%%%% k(5)
dxdt(1) = kla*(kH*M_CO2*P*x(2)/dd_CO2-x(1))*(vl+vg)/vl-r1-r4;   
dxdt(2) = (Qg*(CO2in-x(2))-kla*(kH*M_CO2*P*x(2)/dd_CO2-x(1))*(vl+vg))/vg;
dxdt(3) = -r1-r2-r3+NOH*a*k(5);
dxdt(4) = -r3+r4+NH*a*k(5);
dxdt(5) = r1-r2+r4;
dxdt(6) = r2-r5;
dxdt(7) = NMg*a*k(5)-r5;
dxdt(8) = -NMg*a*k(5)*vl*M_MgOH;
dxdt(9) = r5-pi/6*(1e-21)*dd_mol_MgCO3*B-G/2*pi*dd_mol_MgCO3*x(12);
dxdt(10) = B; % m0   
dxdt(11) = G*x(10);%m1
dxdt(12) = 2*G*x(11);%m2
dxdt(13) = 3*G*x(12);%m3
end
end
»Ø¸´´ËÂ¥

» ²ÂÄãϲ»¶

» ±¾Ö÷ÌâÏà¹Ø¼ÛÖµÌùÍÆ¼ö£¬¶ÔÄúͬÑùÓаïÖú:

ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

dingd

Ìú¸Ëľ³æ (Ö°Òµ×÷¼Ò)

¡¾´ð°¸¡¿Ó¦Öú»ØÌû

¸Ðл²ÎÓ룬ӦÖúÖ¸Êý +1
Ҫô×Ô¼ºÏÈд³É1stOptµÄ´úÂëÐÎʽ£¬ÒªÃ´ÓÃÎı¾¡¢Í¼Æ¬°ÑÔ­ÎÊÌâÃèÊöÇå³þ¡£Ò»¶ÑMatlab´úÂ룬Á¬¿´´ø²Â·Ñ¾¡¡£
2Â¥2014-09-25 09:01:27
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

lrk7597

гæ (³õÈëÎÄ̳)

ÒýÓûØÌû:
1Â¥: Originally posted by winterhao at 2014-09-24 16:08:55
ÄúºÃ ÎÒÏëÇóÖúÄú°ïÎÒÓø߰汾1stopt½øÐÐÒ»×é²ÎÊýÄâºÏ ÎÒÔÚmatlabÀïÓÃlsqnonlinÿ´ÎÓÅ»¯³öÀ´µÄ²ÎÊý¶¼ÊÇÎÒ¸øµÄ³õÖµ£¬²¢Ã»ÓÐʵÏÖÓÅ»¯¹¦ÄÜ£¬Ò»Ö±ÊÇlocal minimum possible¡£ÎÒûÓùý1stopt£¬ËùÒÔÎÒÏÖÔÚÖ»ÄܰÑmatlab cod ...

ÎÒÖ»Ïë˵´ó¸ç Äܲ»ÄܰÑÈí¼þ·ÖÏíһϠ1101461558@qq.com
3Â¥2018-04-19 11:35:17
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ ICPP2025 µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] Çóµ÷¼Á Ò»Ö¾Ô¸Î÷ÄϽ»Í¨´óѧ085701»·¾³¹¤³Ì 282·Ö +11 ¶à¶à°®³Ôºº±¤ 2026-04-04 11/550 2026-04-07 08:37 by xihu1109
[¿¼ÑÐ] Ò»Ö¾Ô¸»ª¶«Àí¹¤085601²ÄÁϹ¤³Ì303·ÖÇóµ÷¼Á +6 a1708 2026-04-06 6/300 2026-04-06 22:37 by guanxin1001
[¿¼ÑÐ] Çóµ÷¼Á +11 ÐܶþÏëÉϰ¶ 2026-04-04 11/550 2026-04-05 22:21 by ×íÎÌwl
[¿¼ÑÐ] 302·Ö 085601Çóµ÷¼ÁÍÆ¼ö +11 zyxÉϰ¶£¡ 2026-04-05 11/550 2026-04-05 22:13 by dongzh2009
[¿¼ÑÐ] ²ÄÁÏ»¯¹¤306·ÖÕÒºÏÊʵ÷¼Á +14 ²×º£ÇáÖÛe 2026-04-04 14/700 2026-04-05 09:53 by ÖìÔÆ»¢202
[¿¼ÑÐ] 283Çóµ÷¼Á +4 mcbbc 2026-04-03 5/250 2026-04-04 20:51 by imissbao
[¿¼ÑÐ] ÇóÉúÎïѧµ÷¼Á +14 15172915737 2026-04-01 14/700 2026-04-04 20:13 by babysonlkd
[¿¼ÑÐ] 302Çóµ÷¼ÁÒ»Ö¾Ô¸»ªÖÐʦ·¶´óѧ +8 С½­Ð¡½­½­½­ 2026-04-02 8/400 2026-04-04 19:50 by À¶ÔÆË¼Óê
[¿¼ÑÐ] 265Çóµ÷¼Á +20 ÁºÁºÐ£Ð£ 2026-04-01 21/1050 2026-04-04 00:38 by userper
[¿¼ÑÐ] 350Ò»Ö¾Ô¸±±¾©º½¿Õº½Ìì´óѧ08500²ÄÁÏ¿ÆÑ§Ó빤³ÌÇóµ÷¼Á +5 kjnasfss 2026-04-03 5/250 2026-04-03 22:29 by Î޼ʵIJÝÔ­
[¿¼ÑÐ] 294Çóµ÷¼Á +6 Grey_Ey 2026-04-03 6/300 2026-04-03 20:46 by ÐÀϲ777
[¿¼ÑÐ] 320Çóµ÷¼Á +3 ũҵ¹¤³ÌÓëÐÅÏ¢¼ 2026-04-03 3/150 2026-04-03 11:40 by ÍÁľ˶ʿÕÐÉú
[¿¼ÑÐ] Ò»Ö¾Ô¸°²»Õ´óѧ0817»¯Ñ§¹¤³ÌÓë¼¼Êõ£¬Çóµ÷¼Á +14 ÎÒ²»ÊÇÖ»Òò 2026-04-02 15/750 2026-04-03 09:49 by À¶ÔÆË¼Óê
[¿¼ÑÐ] »¯Ñ§070300-×Ü·Ö378-Çóµ÷¼Á +5 ŲÒÎ×ÓµÄÅÝÅÝÌÇ 2026-04-02 5/250 2026-04-02 22:20 by ZXlzxl0425
[¿¼ÑÐ] Çóµ÷¼Á +7 Aniyaio 2026-04-02 7/350 2026-04-02 16:42 by zzsw+
[¿¼ÑÐ] 321Çóµ÷¼Á Ò»Ö¾Ô¸ Õã½­¹¤Òµ´óѧÉúÎïÒ½Ò© +5 ºÙºÙHC 2026-04-01 6/300 2026-04-02 15:23 by sophie2180
[¿¼ÑÐ] ѧ˶»¯Ñ§¹¤³ÌÓë¼¼Êõ£¬Ò»Ö¾Ô¸Öйúº£Ñó´óѧ320+Çóµ÷¼Á +8 ÅûÐÇºÓ 2026-04-02 8/400 2026-04-02 14:12 by oooqiao
[¿¼ÑÐ] 0805Çóµ÷¼Á +8 ÊÇË®·Ö 2026-03-31 8/400 2026-04-02 10:46 by guanxin1001
[¿¼ÑÐ] 324Çóµ÷¼Á +5 ÏëÉÏѧÇóµ÷ 2026-04-01 6/300 2026-04-02 10:16 by sanrepian
[¿¼ÑÐ] 304Çóµ÷¼Á +12 ËØÄê¼ÀÓï 2026-03-31 15/750 2026-04-01 22:41 by peike
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û