24小时热门版块排行榜    

查看: 2742  |  回复: 0

xwndf250

银虫 (小有名气)

[求助] 基于WS小世界下的SIR模型

流行病模型 sir
dI/dt=a*S*I-b*I
dS/dt=-a*S*I
dR/dt=b*I

m文件
function y=SIR(t,x)
a=10;b=0.4;
y=[a*x(1)*x(2)-b*x(1);
-a*x(1)*x(2);
b*x(3)];
窗口命令
ts=0:50;
x0=[0.04,0.96,0];
[t,x]=ode45('SIR',ts,x0);
figure,plot(t,x(:,1),t,x(:,2),t,x( :,3))

最近听说基于WS小世界网络系统可以解决SIR模型问题,而且更加真实,我想请问下怎样基于WS小世界网络系统构建SIR模型,求matlab代码。
这是找到的一个其他小世界模型,可能对大神们有帮助
function ws_net()
disp('WS小世界网络模型')
N=input('请输入网络节点数');
K=input('请输入与节点左右相邻的K/2的节点数');
p=input('请输入随机重连的概率');
angle=0:2*pi/N:2*pi-2*pi/N;
x=100*cos(angle);
y=100*sin(angle);
plot(x,y,'r.','Markersize',30);
hold on;
%生成最近邻耦合网络;
A=zeros(N);
disp(A);
for i=1:N
    if i+K<=N
       for j=i+1:i+K
           A(i,j)=1;
       end
    else
        for j=i+1:N
            A(i,j)=1;
        end
        for j=1(i+K)-N)
            A(i,j)=1;
        end
    end
    if K         for j=i-K:i-1
          A(i,j)=1;
        end
    else
        for j=1:i-1
             A(i,j)=1;
        end
        for j=N-K+i:N
            A(i,j)=1;
        end
    end
end
disp(A);
%随机化重连
for i=1:N
    for j=i+1:N
      if  A(i,j)==1
        pp=unifrnd(0,1);
        if pp<=p
            A(i,j)=0;
            A(j,i)=0;
            b=unidrnd(N);
            while i==b
                b=unidrnd(N);
            end
            A(i,b)=1;
            A(b,i)=1;
        end
      end
    end
end
%根据邻接矩阵连线
for i=1:N
    for j=1:N
        if A(i,j)==1
            plot([x(i),x(j)],[y(i),y(j)],'linewidth',1);
            hold on;
        end
    end
end
hold off
aver_path=aver_pathlength(A);
disp(aver_path);
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 xwndf250 的主题更新
信息提示
请填处理意见