SIR模型是一種常見的傳染病傳播模型,通常用於病毒、細菌等傳染性疾病的研究。本文將從多個方面詳細闡述SIR模型的Matlab代碼。
一、模型介紹
SIR模型是一種基於微分方程的傳染病傳播模型,它假設人群可以分為三類:易感者(S),感染者(I)和康復者(R)。每個人在單位時間內可與周圍的人進行接觸,接觸後的傳染過程可以看作是一個不可逆的生命過程。SIR模型的公式如下:
dS/dt = -βSI
dI/dt = βSI - γI
dR/dt = γI
其中,β表示傳染的速率,γ表示康復的速率,S表示易感者的人數,I表示感染者的人數,R表示康復者的人數。
二、代碼實現
為了更好地理解SIR模型的實現,我們將展示如下的Matlab代碼片段:
function [T, Y] = SIR_model(beta, gamma, I0, N, tspan)
% 狀態向量
Y0 = [N-I0; I0; 0];
% 求解微分方程
[T, Y] = ode45(@(t,y) ode(t, y, beta, gamma), tspan, Y0);
% 繪製結果
plot_results(T, Y, N);
end
function dy = ode(t, y, beta, gamma)
dy = zeros(3,1);
% 易感者
S = y(1);
% 感染者
I = y(2);
% 康復者
R = y(3);
% 微分方程
dS_dt = -beta*S*I;
dI_dt = beta*S*I - gamma*I;
dR_dt = gamma*I;
dy(1) = dS_dt;
dy(2) = dI_dt;
dy(3) = dR_dt;
end
function plot_results(T, Y, N)
% 繪製易感者、感染者、康復者的人數變化圖
plot(T, Y(:, 1)./N, 'b-', 'LineWidth', 2); hold on;
plot(T, Y(:, 2)./N, 'r-', 'LineWidth', 2);
plot(T, Y(:, 3)./N, 'g-', 'LineWidth', 2);
% 加入標註和圖例
xlabel('時間 (天)');
ylabel('人數 (佔總人口的比例)');
title('SIR模型');
legend('易感者', '感染者', '康復者', 'Location', 'best');
end
在上述代碼中,我們首先定義了一個函數SIR_model,該函數使用了ode45函數對微分方程進行求解,並調用plot_results函數生成SIR模型的結果圖。在ode函數中,我們定義了一個dy函數,用於計算微分方程的結果。在plot_results函數中,我們使用了Matlab的繪圖函數,生成易感者、感染者、康復者人數隨時間變化的圖表。
三、模型參數調節
SIR模型中,β和γ是兩個關鍵參數,它們分別決定了傳染的速率和康復的速率。在實際應用中,我們可以根據具體的疾病和人口數據對這兩個參數進行調節。
例如,下面的代碼展示了如何使用SIR_model函數模擬COVID-19疫情在不同β和γ參數下的傳播趨勢:
% 模擬COVID-19疫情傳播
N = 6.5e7; % 人口總數
I0 = 50; % 初始感染人數
tspan = [0 365]; % 時間段
[T, Y] = SIR_model(0.3, 0.05, I0, N, tspan);
[T2, Y2] = SIR_model(0.6, 0.1, I0, N, tspan);
[T3, Y3] = SIR_model(1.2, 0.2, I0, N, tspan);
% 繪製結果
figure(1); clf;
plot(T, Y(:, 2)./N, 'r-', 'LineWidth', 2); hold on;
plot(T, Y2(:, 2)./N, 'g-', 'LineWidth', 2);
plot(T, Y3(:, 2)./N, 'b-', 'LineWidth', 2);
xlabel('時間 (天)');
ylabel('感染率 (佔總人口的比例)');
title('COVID-19疫情傳播趨勢');
legend('\beta=0.3, \gamma=0.05', '\beta=0.6, \gamma=0.1', '\beta=1.2, \gamma=0.2', 'Location', 'best');
在本代碼中,我們根據模擬實驗進行了三次運算,分別代表了傳染速率低、中、高的三種情況。通過比較三種情況的感染者人數隨時間變化的圖表,我們可以看出當β和γ增大時,感染者人數的增長速度也會隨之增大。
四、結論
本文從模型介紹、代碼實現、模型參數調節三個方面詳細闡述了SIR模型的Matlab代碼。通過對該模型的實現與分析,我們可以更好地理解傳染病的傳播規律,對防控傳染病具有重要意義。
原創文章,作者:QCLEF,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/370162.html