|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
代码如下;
3 }9 b4 d7 _0 F3 t) N0 Y& Dfunction Kinetics4
( }- C7 m& M7 ]4 I* Y" N: Rclear all
; ~' y- M+ |2 E' N0 s7 X2 iclc/ @6 B0 [+ _* k* |; K6 ]
k0 = [2.159*10^8 4.734*10^6 174686 149892 0.99 0.7 0.5 0.78];%参数初值,其实是不知道的
, a% b. c# s5 f' S- xlb = [-inf -inf -inf -inf -inf -inf -inf -inf]; % 参数下限
9 y- ^) k- L! f4 ~) E: @$ d- X) M" {ub = [inf inf inf inf inf inf inf inf]; % 参数上限
2 ?3 T- n0 W* K' e0 nu0 = [0,0]; %y初值; F& x5 ^$ y `' ^# K
a=[0;0.06680583;0.192617534;0.301693824;0.419783943;0.527041818;0.598345407;0.65055108;0.6876854;0;0.0295189820000000;0.0760025420000000;0.143652564000000;0.303435528000000;0.419715167000000;0.525496977000000;0.565069320000000;0.743536298000000;0;0.0411725930000000;0.0608472370000000;0.0986899250000000;0.241132264000000;0.324760943000000;0.466871464000000;0.531688237000000;0.683614442000000];$ b8 S8 ^. g, F+ f# ?' }4 v
b=[0;0.2378;0.3288;0.3556;0.39;0.3877;0.3766;0.3580;0.3384;0;0.1373;0.2123;0.2755;0.3561;0.3549;0.3475;0.3486;0.2518;0;0.115879961000000;0.178182567000000;0.219982937000000;0.315058656000000;0.339244190000000;0.348664305000000;0.351963292000000;0.313743618000000];% O' c) L- A. N" k$ @
yexp=[a,b];
R) T5 ~8 {' {9 _% 使用函数lsqnonlin()进行参数估计
6 |& N9 Y7 l7 _ o8 J. Z) m1 C$ U6 i2 {
[k,resnorm,residual,exitflag,output,lambda,jacobian] = ...
* Y6 O$ _5 k* Y$ `. T. I4 p, W& P lsqnonlin(@ObjFunc4LNL,k0,lb,ub,[],u0,yexp);
+ O( ]3 |' k$ q% Q1 o1 }ci = nlparci(k,residual,jacobian);& H- B6 [4 {7 `
fprintf('\tk1 = %.4f ± %.4f\n',k(1),ci(1,2)-k(1))
7 A) W1 Y6 J* ^# ]1 U* }& ]9 ffprintf('\tk2 = %.4f ± %.4f\n',k(2),ci(2,2)-k(2))
8 r; A) L. S5 l- n8 qfprintf('\tk3 = %.4f ± %.4f\n',k(3),ci(3,2)-k(3))
3 Q* C$ J* x6 @9 \: Zfprintf('\tk4 = %.4f ± %.4f\n',k(4),ci(4,2)-k(4))/ l+ w( s' B: K0 f( q
fprintf('\tk5 = %.4f ± %.4f\n',k(5),ci(5,2)-k(5))
& ~6 E4 s1 M8 m" Xfprintf('\tk6 = %.4f ± %.4f\n',k(6),ci(6,2)-k(6))) q! l* a _, ]9 D9 b
fprintf('\tk7 = %.4f ± %.4f\n',k(7),ci(7,2)-k(7))
% j' X2 a' ?2 K' S& ~& Cfprintf('\tk8 = %.4f ± %.4f\n',k(8),ci(8,2)-k(8))
( Z% Y; h* f7 A2 I+ vfprintf(' The sum of the squares is: %.1e\n\n',resnorm)
, R7 L+ U' ` m( W w3 X9 r ^fprintf('\n\n使用函数lsqnonlin()估计得到的参数值为:\n')
7 n# O8 }- J; I. P' T' S%目标函数$ ?& _% A m" O2 f
function f =ObjFunc4LNL(k,u0,yexp); R/ |. {4 a6 [0 U
global theta Pt Ac R T Fa0
) u1 { w7 {4 y2 x# }. L0 |theta=zeros(5,1);9 ~* t. x* U+ D1 Y
r0= 1.24*10^-3; % Outer diameter of the membrane, [m]
6 r8 j! G8 |; ?6 H; Z& qri= 9.4*10^-4;% Inner diameter of the membrane, [m]! F8 _3 P& _8 v2 U+ d& _
r=(r0-ri)/log(r0/ri);% equivalent diameter ,[m]
) ?, w) p2 K! c, l6 c- Q7 WPi=3.14159;
! W' D5 e: {. R$ Z: ?8 R0 E! \% J) nL=0.05;% membrane length,[m]8 K4 V$ n4 w; N7 z. L
Ac=Pi*r*L;% membrane area [m^2]
, N( T8 {# Q2 M, G6 k" pR=8.314; % [J/K.mol]: }3 R0 U8 \0 n& K
Pt=101.325;
1 R- F# F, n. D7 ^' L( B/ d8 aFtot=[2.678*10^-2;2.678*10^-2*1.5;2.678*10^-2*2];
6 j# ]) X! q- k6 L! |, ^Kmax=length(Ftot);8 M( A3 _$ m7 r- Q; V) V% h
: ~5 D, b2 D0 H, T aT0=600+273;% Inlet temperature [K]
' G0 M! M2 C" w4 q7 V4 Vnmax=9;# p! w4 {4 b! l
X1=zeros(nmax,Kmax);X2=zeros(nmax,Kmax);
: B* u4 L- p3 ?4 }$ C% E7 m; kfor K=1:Kmax( p0 C4 C: v- q
Fa0=Ftot(K); % If Pt is the parameter/Matrix4 c0 T9 y9 c# @) [# ?
%Pt=Pt0+(k-1)*1; % If Pt is an axis
% f& x8 G9 v) U$ X" m%L=Lsize(k); % If L is the parameter/Matrix
2 X; L7 U1 J* b%theta(2)=H2Oratio+(k-1)*1; % If m is the parameter/Matrix
7 O8 K! Z8 J+ Rtheta(2)=3; % F0(H2O)/F0(CH4)' @, X9 n# J6 {. [+ S+ A
theta(3)=0; % F0(CO)/F0(CH4)
9 g* M1 l* f2 J# L1 z3 Xtheta(4)=0; % F0(CO2)/F0(CH4)% v8 }8 ?0 f% j& H. d0 A/ z( F
theta(5)=0; % F0(H2)/F0(CH4)( g) u6 u+ l% ]( N) ^- Q* k8 s! k
for n=1:nmax$ k, q6 x% E/ l2 x3 _) x6 l; R
%delta=delta0+(n-1)*1e-6; % If delta is the parameter/Matrix5 V8 l0 B1 K1 k$ B* z0 ~
%rit=r0+delta; % inner tube radius [m]" S8 E' r& E0 B1 r" I- `2 G3 G
%sweep=s0+(n-1); % If sweep is the parameter/Matrix
1 f, d4 ]% ~( l) P; r" ^( R%T=T0; % If T is a constant
, E* ~1 s5 ^+ g% ^0 L' a. jT=T0+(n-1)*50;0 G9 x3 n* g- k: l+ v" ^; @1 g/ {5 k7 L
ksispan=(0:0.1:1); % precision
5 W6 ]3 {( `: D ][ksi,S1]=ode23s(@KineticEqs,ksispan,u0,[],k); % PBR reactor" }1 _1 _8 Q% _- ]! r2 M- v
X1(n,Kmax)=real(S1(end,1)); % methane finale conversion
" J$ B; s V' Z7 F8 ^ C9 vX2(n,Kmax)=real(S1(end,2)); % carbon dioxide finale conversion0 U5 U5 l5 u' {5 K' E! F( h& k
end
8 |+ ~5 a. M# P# @; C4 u5 `end
, S# A% p$ d: Xf1=X1(n,Kmax)-yexp(:,1);
/ C' [# V. w* z$ z- s: V: zf2=X2(n,Kmax)-yexp(:,2);7 ?2 o* U" c: Y) N& n$ [
f=[f1;f2];8 {9 i9 R$ L3 c. a
%T0=T0-273.15;T=T-273.15; % Temperature expressed in Celsius 9 P5 b2 Z/ r k3 p5 T: a# a
%Tspan=(T0:1:T);3 R! Z8 z4 v s+ i, D
%Pspan=(Pt0:1 t);
: m: S7 v: c8 y, g2 z7 l/ o% V%DSPan=(delta0*1e6:1:delta*1e6);
1 q+ z0 Y) L3 _: p%Sspan=(s0:1:sweep);
* _2 _& P, p+ g6 c! ?%D(:, =X3(:, -X1(:, ; % Delta = XCH4(MR) - XCH4(PBR)
& N* q( A& J, O; y, j6 o9 v t7 A- p5 f
' R0 [( u( [/ E5 x: @function diff=KineticEqs(ksi,u,k)
2 P9 l8 M: A" [/ v' Uglobal theta Pt Ac Fa0 T R0 `1 Q1 J% y. n$ X, c
S=Pt/(1+theta(2)+theta(3)+theta(4)+theta(5)+2*(u(1)+u(2)));
5 {1 C* S" j" ]/ ~P(1)=(1-u(1)-u(2))*S;9 V# ^5 J" y( l3 d* ^, e4 i
P(2)=(theta(2)-u(1)-2*u(2))*S;
9 `9 X' w! @5 n; aP(3)=(theta(3)+u(1))*S;
/ b' v7 K4 |9 w8 T# m0 c, h2 ZP(4)=(theta(4)+u(2))*S;
, C- V! j& _+ j9 c4 L7 e$ B: x9 oP(5)=(theta(5)+3*(u(1)+u(2))+u(2))*S;
0 u- v/ X; T) F. f0 Y1 j9 f8 l% Differential System
! ~- W# K' P5 u5 o' u: ?diff1=Ac/Fa0*k(1)*exp(-k(3)/R/T)*P(1)^k(5)*P(2)^k(7);
+ s% v4 c$ x$ X; M8 Gdiff2=Ac/Fa0*k(2)*exp(-k(4)/R/T)*P(1)^k(6)*P(2)^k(8);% S! u8 Z( s0 g0 J C
diff=[diff1 diff2]';8 H# r: q" B% T
( Y" L$ [8 x% ?; o; C. ^运行结果:
6 b# J, H5 d% Z$ n: H6 K% RIn nlparci (line 104). _( Y* W9 U5 ^+ F4 C
In Kinetics4 (line 15)' ?. z* V$ D- @& v
警告: 矩阵为奇异工作精度。, a0 R. g8 H( ?) j: b- b" g# P
k1 = 215900000.0000 ± NaN1 w/ O0 t/ [, C* f: i
k2 = 4734000.0000 ± NaN# h1 _( E/ s# L m4 ? d' ]
k3 = 174686.0000 ± NaN9 U) p! Q( Z) [, O
k4 = 149892.0000 ± NaN. ^( K2 w- Q: P' M! d( ~# d
k5 = 1.2381 ± NaN
' V% D9 V8 \% j7 c; X5 M k6 = 0.5426 ± NaN, F/ _1 f: k" g; D# f4 f
k7 = -0.3426 ± NaN
3 \0 l$ |* Z ~0 I7 y) U% z k8 = 0.4455 ± NaN
. l, D. u. A" ?! m0 p2 L1 f The sum of the squares is: 2.0e+00+ R' v [0 l6 e$ g! w7 g
|
|