Как мне использовать 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 единиц за один цикл.

Другие вопросы по тегам