运行了一下发现出大问题
为什么这串代码的M只取了最后的M=0.8,而中间的M=0和M=0.4都没有生效啊
求大佬解释
S=N-E-I-R-D-M*N
for i =1:length(T)-1
if i>=0&&i<=30
M=0;
S(i+1)=S(i)- contact_I*infect_rate*S(i)*I(i)/N -contact_E*infect_rate*S(i)*E(i)/N;
E(i+1) = E(i) + contact_I*infect_rate*S(i)*I(i)/N-A*E(i) + contact_E*infect_rate*S(i)*E(i)/N;
I(i+1) = I(i) + A*E(i) - r*I(i)-Death_from_illness_rate*I(i);
R(i+1) = R(i) + r*I(i);
elseif i>=31&&i<=60
M=0.4;
S(i+1)=S(i)- contact_I*infect_rate*S(i)*I(i)/N -contact_E*infect_rate*S(i)*E(i)/N;
E(i+1) = E(i) + contact_I*infect_rate*S(i)*I(i)/N-A*E(i) + contact_E*infect_rate*S(i)*E(i)/N;
I(i+1) = I(i) + A*E(i) - r*I(i)-Death_from_illness_rate*I(i);
R(i+1) = R(i) + r*I(i);
else
M=0.8;
S(i+1)=S(i)- contact_I*infect_rate*S(i)*I(i)/N -contact_E*infect_rate*S(i)*E(i)/N;
E(i+1) = E(i) + contact_I*infect_rate*S(i)*I(i)/N-A*E(i) + contact_E*infect_rate*S(i)*E(i)/N;
I(i+1) = I(i) + A*E(i) - r*I(i)-Death_from_illness_rate*I(i);
R(i+1) = R(i) + r*I(i);
end
end
plot(T,S,T,E,T,I,T,R,T,D);grid on;