MatlabCode

本站所有资源均为高质量资源,各种姿势下载。

您现在的位置是:MatlabCode > 教程资料 > matlab教程 > matlab代码实现sir建模

matlab代码实现sir建模

下面是一个简单的MATLAB代码实现SIR模型:

function SIRModel(beta, gamma, N, I0, tmax)
    % 参数说明:
    % beta: 传播率
    % gamma: 治愈率
    % N: 总人口数
    % I0: 初始感染人数
    % tmax: 模拟的时间长度

    % 初始化初始感染人数
    S0 = N - I0;
    R0 = 0;

    % 初始化人群的数组
    S = zeros(tmax, 1);
    I = zeros(tmax, 1);
    R = zeros(tmax, 1);

    % 设置初始值
    S(1) = S0;
    I(1) = I0;
    R(1) = R0;

    % 模拟传播过程
    for t = 1:tmax-1
        S(t+1) = S(t) - beta*S(t)*I(t)/N;
        I(t+1) = I(t) + beta*S(t)*I(t)/N - gamma*I(t);
        R(t+1) = R(t) + gamma*I(t);
    end

    % 绘制图形
    plot(1:tmax, S, 'b', 'LineWidth', 2);
    hold on;
    plot(1:tmax, I, 'r', 'LineWidth', 2);
    plot(1:tmax, R, 'g', 'LineWidth', 2);
    legend('Susceptible', 'Infected', 'Recovered');
    xlabel('Time');
    ylabel('Population');
    title('SIR Model');
    hold off;
end

这个函数可以通过传入不同的参数来模拟不同的SIR模型。参数beta表示传播率,gamma表示治愈率,N表示总人口数,I0表示初始感染人数,tmax表示模拟的时间长度。

此函数将绘制出随时间变化的易感者(Susceptible)、感染者(Infected)和康复者(Recovered)的人数曲线。

你可以调用这个函数来进行SIR模型的模拟,如下所示:

beta = 0.3;
gamma = 0.1;
N = 1000;
I0 = 10;
tmax = 100;

SIRModel(beta, gamma, N, I0, tmax);

这将模拟一个传播率为0.3,治愈率为0.1,总人口数为1000,初始感染人数为10,模拟时间长度为100的SIR模型,并绘制出结果。

你可以根据需要调整参数来进行模拟,并进一步扩展这个函数以满足更复杂的SIR模型的需求。