本文為北海的數模課程學習筆記,課程出自微信公眾號:數學建模BOOM。
求贊!求收藏!求關注!
微分方程結合傳染病模型(如指數傳播、SI、SIS、SIR模型)提供了一種用數學公式描述疾病傳播動態(tài)的方法,有助于理解和預測疾病在人群中的傳播路徑和速度。
目錄
指數傳播模型
SI模型
SIS模型
SIR模型
代碼求解微分方程數值解
指數傳播模型
最簡單
假設:每個病人,單位時間內會傳染到的人數為大于0的常數,有
?
?該模型適用于傳染病爆發(fā)初期??紤]到在封閉區(qū)域內,患病人數+健康人數=總人數,總人數是相對固定的,所以不能一直指數增長下去。由此升級為SI模型。
SI模型
設人口總數為常數N。人群分為易感染者(Susceptible)和易感染者(Infective),所占比例在t時刻為s(t)和i(t),s(t)+i(t)=1。?
?
?
?但是本模型假設了只有健康者可以變?yōu)椴∪?,但病人不會變?yōu)榻】嫡?。升級后為SIS模型。
SIS模型
MATLAB的dsolve函數可以求解析解?
?
把換掉?
SIR模型
考慮免疫性,改進為SIR模型。
?
?
?
? 該類問題往往難以求得精確的解析解,可以使用MATLAB求數值解
代碼求解微分方程數值解
通用的求常微分方程數值解的函數ode45。
clc,clear
% 參數初始化
lam = 0.4; % 日接觸率
mu = 0.1; % 日治愈率
I = 0.4;
S = 0.5; %因為S+I+R=1,所以求出I和S就夠了
% ode45是一個通用型ODE求解器
tspan = [0:1:50]; % 變量t范圍0到50,每隔1取一個
y0 = [I S]; % 傳遞模型參數
[t,y] = ode45(@(t,y)SIRfunc(t,y,lam,mu), tspan, y0);
%后面的tspan,y0傳給@中的(t,y),再傳遞給SIRfunc中的(t,y,~,~)
% 求解返回的y中,第一列y1是第一個方程組的解,第二列y2是第二個微分方程的解
r = 1-y(:,1)-y(:,2); % 移出者的比例
%畫圖
plot(t,y(:,1),t,y(:,2),t,r,'k','LineWidth',2);
legend('患病:i(t)','易感染者:s(t)','移除者:r(t)','Location','Best');
ylabel('占人口比例%');
xlabel('時間t');
title('SIR模型(ode)');
%下面有一個分節(jié)符,因為要在同一個文件中再寫一個函數
function dydt = SIRfunc(t,y,lam,mu)
dydt = zeros(2,1);
dydt(1) = lam*y(1)*y(2) - mu*y(1);
dydt(2) = -lam*y(1)*y(2);
end
結果文章來源:http://www.zghlxwxcb.cn/news/detail-755913.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-755913.html
到了這里,關于微分方程+傳染病模型(指數傳播、SI、SIS、SIR模型)+MATLAB求解的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!