原题目是这样的:
在反应器中进行液相反应制备产物B,反应可在180~260℃的温度范围内进行,反应物X大量过剩,而C, D和E为副产物。各反应均为一级动力学关系:r=-kC,式中已知参数:k01=5.78052×1010,k02=3.92317×1012,k03=1.64254×104,k04=6.264×108,Ea1=124670,Ea2=150386,Ea3=77954,Ea4=111528。初始浓度:CA=1kmol/m3,其余物质浓度为0。已知是产物B收率最大的最优反应温度为224.6℃ 试计算在最优反应温度(224.6℃)下各组分浓度随时间的动态变化(这一段程序如下),如果我想看从180℃升温到(每分钟10℃)224.6℃,并且在224.6℃恒温10分钟再升温到260℃(每分钟10℃)这段过程中的各组分浓度随时间的动态变化应该怎么改?(就是把程序里的T从常量改成变量的意思)
function Cha5demo4
T = 224.6 + 273.15; % 1℃ = 1+273.15K
R = 8.31434;
k0 = [5.78052E+10 3.92317E+12 1.64254E+4 6.264E+8];
Ea = [124670 150386 77954 111528];
C0 = [1 0 0 0 0]; % Initial concentration:C0(i), kmol/m^3
tspan = [0 1e4];
opt=odeset('reltol',1e-4,'outputfcn','odephas2','outputsel',[1;4])
[t,C] = ode45(@MassEquations, tspan, C0,opt,k0,Ea,R,T)
plot(t,C(:,1),'r-',t,C(:,2),'k:',t,C(:,3),'b-.',t,C(:,4),'k--');
xlabel('Time (s)');
ylabel('Concentration (kmol/m^3)');
legend('A','B','C','D')
% ------------------------------------------------------------------
function dCdt = MassEquations(t,C,k0,Ea,R,T)
k = k0.*exp(-Ea/(R*T)); k(5) = 2.16667E-04; % Reaction rate constants, 1/s
rA = -(k(1)+k(2))*C(1); rB = k(1)*C(1)-k(3)*C(2);rC = k(2)*C(1)-k(4)*C(3); rD = k(3)*C(2)-k(5)*C(4);
rE = k(4)*C(3)+k(5)*C(4); % Reaction rates, kmoles/m3 s
dCdt = [rA; rB; rC; rD; rE]; % Mass balances