SEIR模型案例
原理說明
https://zhuanlan.zhihu.com/p/142117573
%N是群體總樣本數
E=0; %潛伏期人數
I=1; %患者人數
S=N-I; %易感者人數
R=0; %康復者人數
r=20; %每個患者平均每天能接觸的人數
B=0.03; %患者每天接觸的人中被感染的概率
a=0.1; %潛伏期裝變為患者的概率
y=0.1; %患者痊愈概率
r2=20; %處於潛伏期的人每天接觸的人數
B2=0.03; %潛伏期的人每天接觸的人中被感染的概率
T=1:140; %模擬從第一天到第140天的狀況
for idx =1:length(T)-1 %循環遍歷
S(idx+1) = S(idx)- r*B*S(idx)*I(idx)/N - r2*B2*S(idx)*E(idx)/N;
E(idx+1) = E(idx) + r*B*S(idx)*I(idx)/N - a*E(idx) + r2*B2*S(idx)*E(idx)/N;
I(idx+1) = I(idx) + a*E(idx) - y*I(idx);
R(idx+1) = R(idx) + y*I(idx);
end
%{迭代計算每天的感染情況 idx代表天數
S(idx+1) = S(idx)- r*B*S(idx)*I(idx)/N -r2*B2*S(idx)*E(idx)/N;
這里S(idx+1)代表第idx+1天的易感者人數
其數值等於第idx天的易感者人數減去由於 潛伏者接觸易感染者所造成的感染人數 和 患者接觸易感染者所造成的感染人數
r*I(idx)表示所有患者每天接觸的人的總數 S(idx)/N表示所有人中易感染者占比
r*B*S(idx)*I(idx)/N 即所有患者一天因為易感染者所造成的感染數
同理r2*B2*S(idx)*E(idx)/N 即所有潛伏者一天因為易感染者所造成的感染數
E(idx+1) = E(idx) + r*B*S(idx)*I(idx)/N - a*E(idx) + r2*B2*S(idx)*E(idx)/N;
第idx+1天的潛伏者人數等於
第idx天的潛伏者人數 加上 潛伏者接觸易感染者所造成的感染人數 和 患者接觸易感染者所造成的感染人數
減去由潛伏者轉化為患者的人數
y*I(idx)第idx天的患者痊愈人數
以下分析同理
%}
plot(T,S,T,E,T,I,T,R);grid on; %以下是繪圖部分
xlabel('天');ylabel('人數')
legend('易感者','潛伏者','傳染者','康復者')