天天看點

引入隔離率與潛伏人員的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電子書和數學模組化資料
❤️部分理論引用網絡文獻,若有侵權聯系部落客删除

繼續閱讀