在 Matlab 中求解延迟微分方程以重现已发布的图形
Solving a delayed differential equation in Matlab to reproduce a published figure
我正在尝试在 Matlab 中求解延迟微分方程:
mRNA' = k0 + k*Activator(t-delta_t) - gamma*mRNA(t)
在这个等式中
k0 is constant, representing basal transcription (production) of mRNA;
k is another constant parameter representing the rate of Activator stimulated mRNA production that is dependent on the amount of Activator at time t-delta_t;
gamma is another constant representing the rate of degradation of mRNA
mRNA at time t is the amount of mRNA at time t.
我正在尝试模拟这个方程,这样我就可以四处看看它在不同参数下的表现(即不同的时间延迟、与 ODE 的比较等)。我按照代码示例 here 取得了有限的成功。
到目前为止我的代码是:
function General_mRNA_DDE
sol = dde23(@General_mRNA_DDE2,2,@input_function,[0,5])
figure;
plot(sol.x,sol.y)
function dydt = General_mRNA_DDE2(t,y,z)
k0=1;
k=10;
mRNA0=1; %initial concentration of mRNA
gamma=0.1;
z
dydt= [k0 + k*z - gamma*y];
end
function hist = input_function(t)
hist = 1;
end
end
但我所拥有的基本上看起来像是一条非常陡峭的指数曲线。这是我要重现的内容:
来自这篇论文 doi: 10.15252/msb.20177554 (http://msb.embopress.org/content/msb/13/5/928.full.pdf)
有没有人对我准确地再现这个数字有什么建议?
提前致谢
这不是时滞微分方程,未知mRNA的导数和值是同时取的。如果激活值不依赖于先前时间的 mRNA 值,那么控制函数的值来自延迟时间并不重要。
你可以应用一个积分因子exp(gamma*t)
,这样新的微分方程
( exp(gamma*t) * mRNA(t) )' = exp(gamma*t) * ( k0 + k*Activator(t-delta_t) )
可以通过简单的集成来解决,尤其是。如果 Activator 函数是分段常数。
我正在尝试在 Matlab 中求解延迟微分方程:
mRNA' = k0 + k*Activator(t-delta_t) - gamma*mRNA(t)
在这个等式中
k0 is constant, representing basal transcription (production) of mRNA;
k is another constant parameter representing the rate of Activator stimulated mRNA production that is dependent on the amount of Activator at time t-delta_t;
gamma is another constant representing the rate of degradation of mRNA
mRNA at time t is the amount of mRNA at time t.
我正在尝试模拟这个方程,这样我就可以四处看看它在不同参数下的表现(即不同的时间延迟、与 ODE 的比较等)。我按照代码示例 here 取得了有限的成功。
到目前为止我的代码是:
function General_mRNA_DDE
sol = dde23(@General_mRNA_DDE2,2,@input_function,[0,5])
figure;
plot(sol.x,sol.y)
function dydt = General_mRNA_DDE2(t,y,z)
k0=1;
k=10;
mRNA0=1; %initial concentration of mRNA
gamma=0.1;
z
dydt= [k0 + k*z - gamma*y];
end
function hist = input_function(t)
hist = 1;
end
end
但我所拥有的基本上看起来像是一条非常陡峭的指数曲线。这是我要重现的内容:
来自这篇论文 doi: 10.15252/msb.20177554 (http://msb.embopress.org/content/msb/13/5/928.full.pdf)
有没有人对我准确地再现这个数字有什么建议?
提前致谢
这不是时滞微分方程,未知mRNA的导数和值是同时取的。如果激活值不依赖于先前时间的 mRNA 值,那么控制函数的值来自延迟时间并不重要。
你可以应用一个积分因子exp(gamma*t)
,这样新的微分方程
( exp(gamma*t) * mRNA(t) )' = exp(gamma*t) * ( k0 + k*Activator(t-delta_t) )
可以通过简单的集成来解决,尤其是。如果 Activator 函数是分段常数。