我需要使用MATLAB为我的系统生物学课程建模基因的负、正和简单调节。问题是,负调节和简单调节的函数起作用,而正调节函数只输出零。
我的脚本如下:
% Simulation of simple regulation, negative autoregulation and positive
% autoregulation
% Define constants
global a b K n
a = 1;
b = 1;
K = 0.5;
n = 2; % Hill coefficient
% Simulation time
tspan = [0,10];
% Initial condition
X0 = 0;
% Run simulations
[t1,X1] = ode45(@autoregulation_f0,tspan,X0); % Simple regulation
[t2,X2] = ode45(@autoregulation_f1,tspan,X0); % Negative autoregulation
[t3,X3] = ode23(@autoregulation_f2,tspan,X0); % Positive autoregulation
% Plot results
figure;
plot(t1,X1,t2,X2,t3,X3);
legend('simple','negative','Location','southeast');
我的功能是:
function dxdt = autoregulation_f0(t,X)
global a b
dxdt = b - a*X;
end
function dxdt = autoregulation_f1(t,X)
global a b K n
dxdt = b/(1+(X^n)/(K^n)) - a*X;
end
function dxdt = autoregulation_f2(t,X)
global a b K n
dxdt = b*X.^n./(K.^n+X.^n) + a*X;
end
第三个函数"autoregulation_f2(t,X("是输出零的函数,因此在绘制图时,我只得到一条直线。
有人知道是什么原因造成的吗?
提前感谢!
它看起来是给定函数的正确结果。您提供的dxdt
在每个学期都有一个X
。初始的X0=0
将产生dxdt=0
,而不会对X
进行更改。结果你只得到了一条平坦的线。