24小时热门版块排行榜    

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

heisekaishui

银虫 (小有名气)


[交流] Matlab同时拟合活化能,反应级数,速率常数

各位,您好!
本人研究的方向是催化化学,最近在评估催化剂效果时想引入动力学的内容,对其中的一些地方有一些疑问。
受月之蓝版主的这个帖子http://muchong.com/bbs/viewthread.php?tid=6425538&target=self&page=1以及其它前辈的启发,对于反应级数以及反应速率常数的拟合有一定的了解。
但是如果我的动力学模型是这种形式:-dC/dt=k0*exp(-E/R*T)*C^m*P^n(只有一个反应物和氢气),其中P与T分别为压力与时间,就是说是一个加氢反应,试验中可以得到不同压力、不同温度下浓度随时间的变化值,应该如何拟合k0,E,m,n。
我的一个想法是先拟合不同压力下的k1(k1=k0*exp(-E/R*T)*P^n)(例如以上述帖子的代码方法),再根据k1=k2*P^n(k2=k0*exp(-E/R*T))拟合出k2和n,此后拟合出不同温度下的k2,根据k2=k0*exp(-E/R*T))拟合出E和k0
但是我觉得这种方法较为复杂,一个matlab里有好几个拟合程序,不知道是否有更简洁的CODE。

PS:不知道版里有没有相似的帖子有类似的CODE可以让我学习一下(我没搜到啊)。谢谢
回复此楼

» 猜你喜欢

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

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

查看全部散金贴

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

guanwei

银虫 (小有名气)



小木虫: 金币+0.5, 给个红包,谢谢回帖
引用回帖:
12楼: Originally posted by whqs8426212 at 2014-08-26 00:14:30
楼主方不方便给我一些数据,如:

某T,P(应该是多个吧?)
t(/s)    C(mol)   
0             XX                  
1             XX                  
2             XX

function KineticsEst1_int11

clear all
clc

t=[0 20 40 100 270 450 750 1410 1590 1810];%时间
rA=[0.0004765 0.0004507  0.0004250  0.0003477 0.001549 0.0001117 0.0000396 0.0000018  0.0000038 0.0000062];%反应速率
Pa=[0.042729739 0.041609737 0.040801805 0.038526838 0.033412812 0.030519156 0.028695168 0.02792077 0.027918742 0.0278887981]; %乳酸的摩尔分率
Pb=[0.123670897  0.122550895  0.121742963 0.119467996 0.11435397  0.111460314  0.109636326  0.108861928 0.1088599 0.108829956];%正T醇的摩尔分率
Pc=[0.833599364  0.834719366 0.835527299 0.837802265 0.842916291 0.845809947 0.847633933 0.848408333 0.848410361 0.848440305];%水的摩尔分率
Pd=[0.001120002 0.001927934 0.004202901 0.009316927 0.012210583 0.014034571 0.014808969 0.014810996  0.014840941  0.014850941];%乳酸正丁酯的摩尔分率
%线性拟合
P=2.337132745*Pa.*Pb-0.564655417*Pc.*Pd;y=rA';X=[ones(size(y))  P'];

b=X\y;k=b(2);     
%非线性拟合
beta0=[k]
[beta,resnorm,residual,exitflag,output,lambda,jacobian] = ...
    lsqnonlin(@ObjFunc,beta0,[],[],[],rA,Pa,Pb,Pc,Pd)  


%拟合效果图(实验与拟合的比较)
figure(1);plot(t,rA,'.')
r_poly=beta(1)*(2.337132745*Pa.*Pb-0.564655417*Pc.*Pd);
hold on;plot(t, r_poly,'g')
figure(2);plot(Pb,rA,'.'); hold on;plot(Pb, r_poly,'g')

%-----------------------------------------------------------------------------一
Function f=ObjFunc(beta,rA,Pa,Pb,Pc,Pd)
f=rA-beta(1)*(2.337132745*Pa.*Pb-0.564655417*Pc.*Pd);

我用的这个程序拟合反应速率常数为什么有问题的呢
22楼2014-09-05 17:20:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 27 个回答

heisekaishui

银虫 (小有名气)


纯粹的初学者,如果叙述有什么问题希望大家指出。
2楼2014-08-25 17:31:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tangjiguo

木虫 (职业作家)



heisekaishui(金币+5): 谢谢参与
得金币了,说声谢谢!
5楼2014-08-25 17:54:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

heisekaishui

银虫 (小有名气)


同学们金币诚可贵,回答更重要啊。
9楼2014-08-25 18:17:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
简单回复
coal-xust13楼
2014-08-26 15:56   回复  
普通表情 高级回复(可上传附件)
信息提示
请填处理意见