Как мне использовать dde23 в MATLAB
Недавно я работаю над моделированием генетических цепей, которое включает дифференциальное уравнение с задержкой:
∂A/∂t=CA*[1−(d/d0)^4]*P(α,τ)− γa*A/(1+f*(A+ I))
∂I/∂t=CI*[1−(d/d0)4]*P(α,τ)− γi*I/1+f*(A+ I)
∂Hi/∂t=bI/(1+kI)−γh*A*Hi/(1+g*A)+D(He−Hi)
∂He/∂t=(−d/1−d)*D*(He−Hi)−µ*He
P(α,τ)= (δ+α*H(t)^2)/(1+k1*H(t)^2)
H(t)=Hi(t−τ)
Полт Привет должен колебаться, однако код MATLAB, который я написал, похоже, не работает таким образом. Может кто-нибудь, пожалуйста, посмотрите, что не так с моим кодом?
history=[0;0;0;0];
tau=10;
sol=dde23(@ddex2de,[tau], zeros(4,1),[0,200]);
figure
plot(sol.x,sol.y(3,:),'--r',sol.x,sol.y(2,:),'-b')
function dydt=ddex2de(t,y,Z)
ylag1=Z(:,1);
H=ylag1(3);
x1=y(1);%A
x2=y(2);%I
x3=y(3);%Hi
x4=y(4);%He
dx1dt=CA*(1-(d/d0)^4)*(delta+alpha*(H.^n1))/(1+k1*(H.^n1)) - gammaA*x1/(1+f*(x1+x2));
dx2dt=CI*(1-(d/d0)^4)*(delta+alpha*power(H, n1))/(1+k1*power(H, n1)) - gammaI*x2/(1+f*(x1+x2));
dx3dt=(b*x2/(1+k*x2))-(gammaH*x1*x3/(1+g*x1))+D*(x4-x3);
dx4dt=(-d/(1-d))*D*(x4-x3)-mu*x4;
dydt=[dx1dt,dx2dt,dx3dt,dx4dt]';
end
1 ответ
В вашем примере кода большинство переменных не определены, каковы значения: d d0 CA CI delta alpha ...
? Возможно, некоторые из этих параметров имеют неправильное значение.
Или попробуйте изменить временной интервал tspan
, поскольку ваше входное значение [0,200]
скажем [0,10000]
или больше, так как ваши колебания могут занять больше времени, чем 200 единиц за один цикл.