【发布时间】:2016-11-27 18:31:13
【问题描述】:
我尝试使用 dde23 求解延迟微分方程,但似乎我没有正确理解它,所以我编写的函数有错误,我无法纠正它以运行以查看输出是否正确。
我不明白如何将最后五个等式添加到程序中。我必须使用 table 1 参数 来解决这个系统,以获得图像中的 fig 1 等输出。
这是我写的代码:
clear all;
clc;
lags=1;
sol=dde23(@eq24,lags,@eqh,[0 80]);
plot(sol.x,sol.y)
function v=eqh(t)
v=zeros(6,1);
function v=eq24(t,s,Ia,Is,R,N)
Alfa=0.1;
beta1=0.09;
beta2=0.1;
sigma1=0.3;
sigma2=0.4;
mu=0.01;
alfa=0.2;
rho=0.4;
r1=0.4;
r2=0.2;
d1=0.2;
d2=0.15;
k=0.1;
p=0.8;
tau=1;
T=4;
dsdt=Alfa-beta1*((s*Ia)/(1+sigma1*s))-beta2*((s*Is)/(1+sigma2*s))-mu*s+alfa*R;
dIadt=rho.*exp(-mu*tau).*s(((beta1.*Ia)/(1+sigma1.*s))+((beta2.*Is)/(1+sigma2.*s)))-(r1+d1+mu).*Ia;
dIsdt=(1-rho).*exp(-mu.*tau).*s(((beta1.*Ia)/(1+sigma1.*s))+((beta2.*Is)/(1+sigma2.*s)))+(1-k).*r1.*Ia-(r2+d2+mu).*Is;
dRdt=k.*r1.*Ia+r2.*Is-mu.*R-alfa.*R;
dNdt=Alfa-mu.*N-d1.*Ia-d2.*Is;
【问题讨论】:
-
符号
t⁺是什么意思?您的代码中的哪个条件是t ≠ nT?您的微分方程不符合dde23的预期;应该是dydt = ddefun(t,y,Z)和Z(:,n) = y(t-τₙ)的形式。此外,您的代码无效;dIadt=rho.*exp(...).*s(((...)))将尝试indexs,而不是与s(t-τ)相乘。 -
看起来这是您第一次在 MATLAB 中尝试 DDE。我认为您最好在尝试此问题之前实现一些非常更简单的 DDE,以便您可以进行一些练习。
-
嗨,Oldenhuis 先生,是否可以将延迟方程与其他未使用 dde23 或不使用 dde23 求解的方程分开
-
什么意思?所有导数都是耦合的,所以...不。现在,符号
t⁺是什么意思?
标签: matlab