基于实验数据预测反应动力学常数

18次浏览(最近30天)
BobbyJoe
BobbyJoe 2021年1月9日
评论: 明星黾 2021年1月11日
根据实验,我得到如下优化反应:A + 1.7B -> C (A =利福霉素恶嗪;B =哌嗪;C =利福平)
因此,我假设的利率定律是:
r_A=-k*C_A*C_B^1.7
r _B = - k * C_A * C_B ^ 1.7
r _C = k * C_A * C_B ^ 1.7
使用我的实验数据,我使用了下面的代码来尝试并准确地找到k(目标是得到R^2 > 90%):
函数API2
函数C =动力学(θ,t)
c0 = (0.752, 1.278, 0);
[T,Cv]=ode45(@DifEq,T,c0);
%
函数dC=DifEq(t,c)
dcdt=零(3,1);
dcdt(1)=-theta(1)。*(c(1)。^(1)).*(c(2)。^(1.7));
dcdt(2)=-θ(1)。*(c(1)。^(1)).*(c(2)。^(1.7));
dcdt(3) =θ(1)。* (c(1) ^(1))。* (c (2) ^ (1.7));
dC=dcdt;
终止
C=Cv;
终止
T = [0 1 2 5 10 15];
t = t ';
%a的y值
A_ydata = [0.752 0.0596 0.0596 0.0596 0.0502 0.0424];
A_Ydata=A_Ydata';
%b的y值
B_ydata = [1.278 0.378 0.101 0.101 0.085 0.072];
B_Ydata = B_Ydata ';
C_ydata = [0 0.692 0.692 0.692 0.702 0.71];
C_Ydata=C_Ydata';
c = [A_Ydata B_Ydata C_Ydata];
theta0 = [0.5];
[θ,Rsdnrm, Rsd, ExFlg OptmInfo, Lmda, Jmat] = lsqcurvefit (@kinetics theta0 t、c);
fprintf(1,“\t存储常数:\n”)
对于k1 = 1:长度(θ)
fprintf(1,'\t\t色塔(%d)=%8.5f\n', k1,θ(k1))
终止
tv=linspace(最小(t),最大(t));
Cfit = kinetics(theta, tv);
图(1)
H = t, c,'.');
设置(h{“标记”}, {'s';“d”;“^”}, {“MarkerFaceColor”}, {“r”;“b”;“k”}, {“MarkerEdgeColor”}, {“r”;“b”;“k”});
持有
= plot(tv, Cfit,“线宽”, 1.5);
集(hlp, {“颜色”}, {“r”;“b”;“k”});
持有
网格
包含('时间(分钟)')
ylabel (浓度(M)的)
传奇(hlp“利福霉素嗪的,“哌嗪”,“利福平”,“位置”,“不”)
终止
然而,当我运行代码并生成一个图表时,我的模拟曲线和我的实验数据之间似乎有明显的差异(特别是哌嗪)。我一直在摆弄代码,但似乎不能使它与我的数据很好地匹配。我不知道该怎么办。有人能帮我吗?

接受的答案

明星黾
明星黾 2021年1月9日
如果您有全局优化工具箱,我所附的代码将以合理的精度估计参数,尽管您的模型只估计三个微分方程中的一个参数。(这不是我以前观察到的,所以您重新考虑这个模型可能是合适的。)
这一边, ga 尽管每次运行的估计值有所不同,但还是设法实现了收敛。
注意: 我将初始条件设置为要在代码中估计的参数。
典型参数为:
常数:
θ(1)=2.55140
θ(2)=0.92250
θ(3)=0.99550
θ(4)= 0.01400
常数:
θ(1)= 10.25306
θ(2)= 0.88801
θ(3)=0.98375
θ(4)=0.00308
使用基本相同的适应度值,生成此图:
用第二组参数。
这对你的模特来说可能是最好的。
.
4评论
明星黾
明星黾 2021年1月11日
鲍比·乔-
如果我的回答帮助你解决了你的问题,请 接受 信息技术
.

登录以发表评论。

更多答案(1)

图像分析
图像分析 2021年1月9日
我不确定我是否遵循了你的代码(比如函数API2是什么,值θ和t),但为了它的价值,我附加了一个程序,将数据拟合到速率方程中。
2评论
图像分析
图像分析 2021年1月9日
从Star答案中的数据来看,在曲线的陡峭部分,几乎没有足够的数据点来估计速率。就是做不到。只有初始值和最终稳态值。你需要更多的数据来准确地确定“膝盖”的位置和速率方程系数。请提供更多数据。否则你知道他们说什么:“垃圾进垃圾出”。

登录以发表评论。

类别

s manbetx 845

社区寻宝

在MATLAB Central中查找宝藏,了解社区如何帮助您!

开始狩猎!