天天看点

引入隔离率与潜伏人员的SIR模型附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进。

🍎个人主页:​​Matlab科研工作室​​

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

​​智能优化算法​​​  ​​神经网络预测​​​ ​​雷达通信 ​​​ ​​无线传感器​​

​​信号处理​​​ ​​图像处理​​​ ​​路径规划​​​ ​​元胞自动机​​​ ​​无人机​​

⛄ 内容介绍

众所周知,病毒会给社会造成巨大危害.根据这次病毒潜伏期都有传染性特点,在经典的SEIR模型上定义了潜伏者传染概率b2和隔离率,并用MATLAB软件实现了数值解.

⛄ 部分代码

clear;clc

close all

%%

load china_data.mat;

load abroad_data.mat;

load C.mat;

 %%

%中国

para=C(1,:);

%用fmincom函数优化

 c0=[0.1 0.125];%beta和sigma的初始值

 lb = [0.1 0.125];%下界  

 ub = [0.2 0.8]; %上界

 true_data=china_data;

 period_true=size(true_data,1);

 period_pre=300;

[Y, fval]=fmincon(@(Y,fval)seir_Obj_fun(Y,para,true_data),c0,[],[],[],[],lb,ub);%优化求解  

beta=Y(1);sigma=Y(2);

K=120000;

 [~,p]=ode45(@(t,p) SEIR_fun(t,p,para,beta,sigma), [1:1:period_pre],[K,10000,0,0]); 

 figure(1);

x1=1:period_true;

y1=true_data(:,3);

x2=1:period_pre;

y2=p(:,3);

hold on

plot(x1,y1,'b*');

plot(x2,y2,'r+');

legend('实际值T-i','拟合值T-i');

true_data=[];

%%

%外国SIR

N=size(C,1)-1;%国家的数量

period_true_begin=[1,29,51,1,1,1,1,1,1,18,27,28];

period_true_end=[208,208,208,176,176,176,176,176,183,183,183];%有效数据段;

for i=1:N   

 period_true=period_true_end(i)-period_true_begin(i)+1;

 para=C(i+1,:);

%用fmincom函数优化

 true_data= abroad_data(period_true_begin(i):period_true_end(i),1+(i-1)*3:3+(i-1)*3);

 [Y2, fval]=fmincon(@(Y2,fval)SIR_Obj_fun(Y2,para,true_data),c0,[],[],[],[],lb,ub);%优化求解  

 beta=Y2(1);

 sigma=Y2(2);

 [t,p]=ode45(@(t,p) SEIR_fun(t,p,para,beta,sigma), [1:1:period_pre],[true_data(1,1),50,0,0]); 

  %画图

    figure(i+1);

    subplot(1,2,1);

    plot(t,p(:,3),'b*');

    title('预测值T-I');

    subplot(1,2,2);

   plot(1:period_true_end(i)-period_true_begin(i)+1,true_data(:,2),'r+'); 

    title('实际值T-I');

end

⛄ 运行结果

引入隔离率与潜伏人员的SIR模型附matlab代码
引入隔离率与潜伏人员的SIR模型附matlab代码

⛄ 参考文献

❤️ 关注我领取海量matlab电子书和数学建模资料
❤️部分理论引用网络文献,若有侵权联系博主删除

继续阅读