大家好,欢迎来到IT知识分享网。
模型
代码1
fun1.m
function dx=fun1(t,x) % 大家可以修改里面的参数,来看结果的变化
beta = 0.1; % 易感染者与已感染者接触且被传染的强度
sigma = 0.2; % 潜伏者转换为感染者的速率
gamma = 0.02; % 康复率
dx = zeros(4,1); % x(1)表示S x(2)表示E x(3)表示I x(4)表示R
C = x(1)+x(2)+x(3); % 传染病系统中的有效人群,也就是课件中的N' = S+E+I
dx(1) = - beta*x(1)*x(3)/C;
dx(2) = beta*x(1)*x(3)/C - sigma*x(2);
dx(3) = sigma*x(2) - gamma*x(3);
dx(4) = gamma*x(3);
end
code.m
%% 最简单的SEIR模型: E不具有传染性
clc;clear
N = 1000; % 总人数
i0 = 1; % 初始时刻患者(已感染者)的人数
[t,x]=ode45('fun1',[1:500],[N-i0 0 i0 0]);
% x = round(x); % 对x进行四舍五入(人数为整数)
figure(1)
% x的第一列是易感染者S的数量,x的第二列是潜伏者E的数量
% x的第三列是患者I的数量, x的第四列是康复者R的数量
plot(t,x(:,1),'r-',t,x(:,2),'m-',t,x(:,3),'b-',t,x(:,4),'g-','Linewidth',1.5)
legend('易感染者S','潜伏者E','患者I','康复者R')
结果1
代码2
fun2.m
function dx=fun2(t,x) % 大家可以修改里面的参数,来看结果的变化
beta1 = 0.1; % 易感染者与已感染者接触且被传染的强度
beta2 = 0.05; % 易感染者与潜伏者接触且被传染的强度
sigma = 0.2; % 潜伏者转换为感染者的速率
gamma = 0.02; % 康复率
dx = zeros(4,1); % x(1)表示S x(2)表示E x(3)表示I x(4)表示R
C = x(1)+x(2)+x(3); % 传染病系统中的有效人群,也就是课件中的N' = S+E+I
dx(1) = - beta1*x(1)*x(3)/C - beta2*x(1)*x(2)/C;
dx(2) = beta1*x(1)*x(3)/C + beta2*x(1)*x(2)/C - sigma*x(2);
dx(3) = sigma*x(2) - gamma*x(3);
dx(4) = gamma*x(3);
end
code.m
%% E具有传染性
clc;clear
N = 1000; % 总人数
i0 = 1; % 初始时刻患者(已感染者)的人数
[t,x]=ode45('fun2',[1:500],[N-i0 0 i0 0]);
% x = round(x); % 对x进行四舍五入(人数为整数)
figure(2)
% x的第一列是易感染者S的数量,x的第二列是潜伏者E的数量
% x的第三列是患者I的数量, x的第四列是康复者R的数量
plot(t,x(:,1),'r-',t,x(:,2),'m-',t,x(:,3),'b-',t,x(:,4),'g-','Linewidth',1.5)
legend('易感染者S','潜伏者E','患者I','康复者R')
% 把两个图放到一起看看区别
figure(3)
[t,x1]=ode45('fun1',[1:500],[N-i0 0 i0 0]);
plot(t,x1(:,1),'r-',t,x1(:,2),'m-',t,x1(:,3),'b-',t,x1(:,4),'g-','Linewidth',1.5)
hold on
[t,x2]=ode45('fun2',[1:500],[N-i0 0 i0 0]);
plot(t,x2(:,1),'r--',t,x2(:,2),'m--',t,x2(:,3),'b--',t,x2(:,4),'g--','Linewidth',1.5)
legend('易感染者S','潜伏者E','患者I','康复者R')
结果2
把两个图放到一起看看区别
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/30796.html