使用matlab建立传染源模型

编程入门 行业动态 更新时间:2024-10-09 00:39:51

使用matlab建立传染源<a href=https://www.elefans.com/category/jswz/34/1771358.html style=模型"/>

使用matlab建立传染源模型

这个是去年数模校赛的传染病模型。今年学人工智能,加上图论的学习,再翻出来再看看,还是有点收获的。

这是主脚本,名称为sir001。

gamma=0.005;%恢复率
beta=0.05;%传染率
n=1;
T=20;
g=0;
T_Ni=0;
T_Nn=0;
T_Nr=0;
sir001;
NodeWeight=randi([1 3],410,1);
% NodeWeight=3.*ones(410,1);
% NodeWeight(randi([1 410]))=1;
unit_statistics;
Edges=table2array(G.Edges);
[G1,g]=graghColor_withWeight(NodeWeight,Edges,g,n,N);
for n=2:T[NodeWeight,Edges]=updateNodeState2(G1,gamma,beta);%unit_statistics;[G1,g]=graghColor_withWeight(NodeWeight,Edges,g,n,N);pause(2);
end
subplot(2,2,4);
plot([1:T],T_Ni,[1:T],T_Nn,[1:T],T_Nr);
legend('infected','noninfected','recovered');

其中,

% NodeWeight=3.*ones(410,1);
% NodeWeight(randi([1 410]))=1;

 是当时校赛第一问中要求:画出一个网格图。这两句的意义在于,我将点权重阈值化为1。这句和上一句

NodeWeight=randi([1 3],410,1);

是冲突的。如果将这两句取消注释且注释掉上一句。将代码运行到此处,图将会是这样的:

 这样就满足第一问的要求了。

一、sir001

infectious=csvread('infectious.csv',0,0);
A=zeros(410);
for i=1:size(infectious)
A(infectious(i,1),infectious(i,2))=1;
end
G=graph(A,'upper');
p=plot(G,'-b','Layout','force');
p.NodeColor = 'r';
p.MarkerSize =6;
p.NodeLabel=[1:410];

这个脚本是为了引入题目中给的点与点的对应关系转化成邻接矩阵并转化成无向无权图。

其中,

A(infectious(i,1),infectious(i,2))=1;

是为了构造邻接矩阵A。

 而

G=graph(A,'upper');

 通过matlab的help可知:

更多推荐

使用matlab建立传染源模型

本文发布于:2024-03-14 15:37:59,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1736788.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:模型   传染源   matlab

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!