• 大小: 5KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-17
  • 语言: Matlab
  • 标签: HIV  matlab  

资源简介

HIV传染动力学模型 matlab 一次作业的题

资源截图

代码片段和文件信息

%1、	建立一个模型(在一个或多个已存在的模型上修改或建造),来模仿TIPs在抑制疾病在人群中的传播时的用处。
%2、 利用模型通过执行TIPs和HIV在不同模式设定下的计算仿真从数量上评估TIPs在抑制HIV-1在人群中的传播时的有效性。根据建立的模型的结构,我们可以在Matlab上执行这些模拟仿真。

%   HIV微分方程模型 by iceiceice 根据《部分hiv数据.doc》
%   2011-3-19

clear;
clc;
%   参数设定
beta=0.1/100;   %   hiv感染率 1-1.5%
d=95/100;    %   因病死亡率,大多文献取为1,《部分hiv数据.doc》中可能书写有误
mu=0.5/100;  %   自然死亡率
beta1=0.1/100;  %   双重携带者的感染率1-1.5%
gamma1=0.3; %   双重携带者无效率

%   缺失数据参数,由3-17的邮件中的附件:HIV的发病率和AIDS的死亡率(参考).pdf,设定为0.1
gamma=0.1;

%   初值
tic
A=1500;     %   人口输入
S=8000;     %   易感人口
I=150;     %   HIV携带者
P=50;      %   AIDS患者

%   间隔时间数
dt=0.0001;

%   模型
N=10/dt;    %   步数

S=zeros(1N);
I=zeros(1N);
Id=zeros(1N);
It=zeros(1N);
P=zeros(1N);

rate=zeros(101101);

%for n1=0:100                                %   直接对alpha1、alpha2做线性变换做rate会报错
 %   for n2=0:100   
        S(1)=8000;   
        I(1)=150;
        Id(1)=0;
        It(1)=0;
        P(1)=50;
       % alpha1=n1/100;
        %alpha2=n2/100;
        alpha1=0.4;
        alpha2=0.4;
        for i=1:(N-1)
            S(i+1)=S(i)+dt*(A-beta*I(i)*S(i)-beta1*Id(i)*S(i)-(alpha1+mu)*S(i)); %   原模型中该行最后一部分书写有误
            %if S(i+1)<0  S(i+1)=0;  end
            I(i+1)=I(i)+dt*(beta*I(i)*S(i)-alpha2*I(i)-mu*I(i)-gamma*I(i)+gamma1*Id(i)-beta1*I(i)*Id(i));
            Id(i+1)=Id(i)+dt*(beta1*Id(i)*S(i)+beta*I(i)*It(i)+beta1*It(i)*Id(i)-gamma1*Id(i)-mu*Id(i)+alpha2*I(i)+beta1*I(i)*Id(i));  %   原模型中该行最后一部分书写有误
            It(i+1)=It(i)+dt*(alpha1*S(i)-beta*I(i)*It(i)-beta1*It(i)*Id(i)-mu*It(i));
            %if It(i+1)<0  It(i+1)=0; end
            P(i+1)=P(i)+dt*(gamma*I(i)-(mu+d)*P(i));
        end
  %      rate(n1+1n2+1)=(P(i+1)+I(i+1))/(S(i+1)+I(i+1)+Id(i+1)+It(i+1)+P(i+1));     %   已感染及发病者所占总人口比例,这里没有考虑gamma1*Id,因为觉得没有必要添加这一项
 %   end
%end
% figure; plot(I‘g‘); xlabel(‘I‘);
% legend(‘I:hiv携带者‘);
% hold on;
%  plot(Id); xlabel(‘Id‘)
%  legend(‘Id:双重携带者‘);
%  hold on;
%  plot(P‘m‘);  xlabel(‘P‘)
%  legend(‘P:AIDS患者‘);
%  hold on;
% plot(It‘k‘);  xlabel(‘It‘)
% legend(‘It:TIPS携带者‘);
% hold on;
%  plot(S‘r‘);  xlabel(‘S‘)
% legend(‘S:易感者‘);
k=1:1:100000;
subplot(211);
plot(kI(k)‘g‘kId(k)kP(k)‘m‘kIt(k)‘k‘kS(k)‘r‘);
xlabel(‘year/10000‘);ylabel(‘population‘);
title(‘XXX‘);
legend(‘I:hiv携带者‘‘Id:双重携带者‘‘P:AIDS患者‘‘It:TIPS携带者‘‘S:易感者‘)
% S
% I
% Id
% It
% P
toc

评论

共有 条评论