✅作者简介:热爱科研的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
⛄ 运行结果
⛄ 参考文献
[1]王众, 汪和松. 2019新型冠状病毒SEIR模型求解及MATLAB软件实现[J]. 数字技术与应用, 2020, 38(2):2.
❤️ 关注我领取海量matlab电子书和数学建模资料
❤️部分理论引用网络文献,若有侵权联系博主删除