24小时热门版块排行榜    

查看: 3917  |  回复: 26
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

feng198800

金虫 (正式写手)


[交流] 动力学参数拟合

CO变换反应,CO+H2O=CO2+H2,用固定床管式积分反应器,要拟合动力学方程中的参数!动力学方程如下图。转化后的东西学方程为dy/dw=-22.4./v*k(1)*exp(-k(2)/R.*T).*yco^k(3).*(yh2oin-(ycoin-yco))^k(4).*(yco2in+(ycoin-yco))^k(5).*(yh2in+(ycoin-yco))^k(6).*(1-β),其中β是逆反应程度,要拟合指前因子、反应活化能和四个反应级数(k1~k6)。整理后的数据是已知反应器进口一氧化碳、二氧化碳、氢气、水蒸气的湿基组成和反应器出口一氧化碳湿基组成,主要是一个微分方程dy/dw=f(y),其中f(y)中含有要拟合的6个参数,涉及到微分方程的初值问题和最小二乘法问题。自己编了一个m文件,可是运行不了,纠结好长时间也没有发现问题,想大家帮我看一下!代码如下
function kinetics
clear all
clc
global t T R kp ycoin yh2oin yco2in yh2in v
t=[448.69 449.03 450.18 450.71 450.47 430.01 430.31 430.03 430.17 427.29 410.13 410.08 410.37 410.00 409.96 390.00 390.00 389.99 390.00 390.00];%反应温度
T=t+273.15;%绝对温度K
R=8.314;%气体常数
kp=exp(4575./T-4.33);%平衡常数
ycoin=[0.09865 0.13296 0.18299 0.23883 0.13809 0.13918 0.15477 0.14327 0.16374 0.13077 0.10624 0.11253 0.19904 0.20900 0.19895 0.12235 0.17431 0.14712 0.18064 0.16864];%进口CO含量
yh2oin=[0.52349 0.45073 0.39759 0.33124 0.45811 0.30844 0.39573 0.51067 0.54215 0.32203 0.48650 0.54179 0.32176 0.42416 0.32176 0.41059 0.32107 0.50444 0.48270 0.31474];%进口H2O含量
yco2in=[0.09440 0.08103 0.07302 0.05747 0.09028 0.11332 0.11931 0.04328 0.05115 0.10654 0.06181 0.03400 0.13821 0.09236 0.13688 0.04807 0.07740 0.07265 0.09696 0.08260];%进口CO2含量
yh2in=[0.09363 0.14281 0.17864 0.22005 0.13013 0.20040 0.20556 0.10088 0.10997 0.20593 0.17479 0.13200 0.16644 0.09602 0.17151 0.14214 0.13702 0.18113 0.16127 0.13905];%进口H2含量
v=[21.3952 18.2224 15.0234 13.5257 19.5599 14.5256 18.8683 19.0081 20.6600 16.2300 18.4185 20.6734 13.9253 15.8444 13.9233 16.3679 13.9538 20.7244 17.0155 14.2337];%总原料流量
ycoout=[0.07304 0.08526 0.12500 0.16207 0.08445 0.10695 0.13233 0.10264 0.11417 0.09878 0.09192 0.08657 0.17122 0.17377 0.17204 0.10501 0.14913 0.13370 0.15282 0.14068];%出口CO含量
k0=[3.5e5 8.4e4 0.9 0.6 -0.5 -0.04]; % k(指前因子、活化能、反应级数)初始向量
lb=[1e5 3e4 0 0 -1 -0.1];
ub=[1e6 1.5e5 1 1 0.5 0.5];% k上下限

% 使用函数lsqnonlin()进行参数估计
[k,resnorm,residual,exitflag]=lsqnonlin(@ObjFunc,k0,lb,ub,[],ycoin,ycoout);      

% ------------------------------------------------------------------
function f=ObjFunc(k,ycoin,ycoout)     % 目标函数
wspan=[0 0.6091];         % 即催化剂装填量/g
ycow=zeros(1,length(ycoout));
[w yco] =ode45(@Euqations,wspan,ycoin,[],k);%4,5阶龙格库塔法求解

ycow=yco(length(yco));%出口CO含量

f=ycoout-ycow;

% --------此方程定义微分方程等号右端项
function dydw=Euqations(w,yco,k)        % w催化剂质量
global T R kp ycoin yh2oin yco2in yh2in v
dydw=-22.4./v*k(1)*exp(-k(2)/R.*T).*yco^k(3).*(yh2oin-(ycoin-yco))^k(4).*(yco2in+(ycoin-yco))^k(5).*(yh2in+(ycoin-yco))^k(6).*(1-(yco2in-(ycoin-yco).*yh2in-(ycoin-yco))./(kp.*yco.*yh2oin-(ycoin-yco)));% 反应速率




[ 来自科研家族 化工工程工艺 ]
回复此楼

» 收录本帖的淘帖专辑推荐

matlab

» 本帖已获得的红花(最新10朵)

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

» 抢金币啦!回帖就可以得到:

查看全部散金贴

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)



feng198800(金币+2): 谢谢参与
送鲜花一朵
微分方程拟合这类问题试试1stOpt,应该是最简单好用的了。
9楼2012-06-01 12:01:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 27 个回答
.*,.^不完全,行向量和列向量不分,请检查公式。
8楼2012-06-01 10:18:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

feng198800

金虫 (正式写手)


引用回帖:
8楼: Originally posted by csgt0 at 2012-06-01 10:18:18
.*,.^不完全,行向量和列向量不分,请检查公式。

你好,.*,.^不完全——可是公式中有的不是矩阵相乘处,可以不用点乘除的。请问您说的行向量和列向量不分指的是??谢谢了
11楼2012-06-01 14:47:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
★ ★
cenwanglai: 金币+2, 公式输入辛苦了~ 2012-06-02 09:45:35
引用回帖:
11楼: Originally posted by feng198800 at 2012-06-01 14:47:56
你好,.*,.^不完全——可是公式中有的不是矩阵相乘处,可以不用点乘除的。请问您说的行向量和列向量不分指的是??谢谢了...

dydw=-22.4./v*k(1)*exp(-k(2)/R.*T).*yco^k(3).*(yh2oin-(ycoin-yco))^k(4).*(yco2in+(ycoin-yco))^k(5).*(yh2in+(ycoin-yco))^k(6).*(1-(yco2in-(ycoin-yco).*yh2in-(ycoin-yco))./(kp.*yco.*yh2oin-(ycoin-yco)));% 反应速率

比如:yco^k(3)得用点的吧
ycoin和yco就一个横一个竖
12楼2012-06-01 15:25:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见