数模-微分方程(SEIR模型)

数模-微分方程(SEIR模型)#模型#代码1fun1.mfunctiondx=fun1(t,x)%大家可以修改里面的参数,来看结果的变化beta=0.1;%易感染者与已感染者接触且被传染的强度sigma=0.2;%潜伏者转换为感染者的速率gamma=0.02;%康复率dx=zero

大家好,欢迎来到IT知识分享网。

模型

image
image

代码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

image

代码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

image

把两个图放到一起看看区别

image

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/30796.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信