📄 fit_2.m
字号:
%function
clc;clear;
tic;
starttime=datestr(now)
m0=5;m=5;
t=1500;
N=2000;
%t1=5;t2=95;
A=sparse([]);
node1_degree=zeros(1,m0);
node2_degree=zeros(1,N);
%先生成全耦合网络
for i=1:m0
for j=1:m0
if j~=i
A(i,j)=1;
end
end
end
y=exprnd(1,1,N);%产生服从指数分布的适应度随机数
for j=m0+1:N %增长
M=size(A,1);
p=sparse(1,M);
k=sum(A,1);%每个节点的度
for i=1:M
summ(i)=k(i)*y(i);%每个节点的度k(i)与其适应度y(i)的乘积
end
for i=1:M
p(1,i)=k(i)*y(i)/(sum(summ));%优先连接的概率
end
sump=cumsum(p); %求累计概率
while(1)
for i=1:m
rand_dat=rand(1);
choose(i)=min(find(sump>rand_dat));%择优选择一个节点
end
if(length(unique(choose))==length(choose))%选择m的不同的点就退出while循环
break;
end
end
for i=1:m
A(j,choose(i))=1 ;%把m个节点添加到新的网络中
A(choose(i),j)=1 ;
end
if j==t
n=size(A,2);
for i=1:n
Degree(i)=sum(A(i,:));
end
max1=max(Degree);
for i=1:max1+1
DeN(i)=sum(Degree==i-1);
end
figure;
loglog([0:max1(1)],DeN(1:max1+1)/sum(DeN),'rs','markersize',4);
hold on;
end
% if j>=t1
% node1_degree(j)=sum(A(t1,:)); %t1的增长度
% end
% if j>=t2
% node2_degree(j)=sum(A(t2,:)); %t2的增长度
% end
%
end
n=size(A,2);
for i=1:n
Degree(i)=sum(A(i,:));
end
max1=max(Degree);
for i=1:max1+1
DeN(i)=sum(Degree==i-1);
end
loglog([0:max1(1)],DeN(1:max1+1)/sum(DeN),'o','markersize',4);
hold on;
%y1=2*m^2*k .^(-2.9);
%loglog(k,y1,'r');% 与平均场结果进行比较 p(k)=2*m^2*k^(-3)
title('适应度服从指数分布,m0=m=5,N=2000');
legend('1500','2000');
xlabel('j');
ylabel('P(j)');
%figure
%loglog(1:N,node1_degree,'r*','markersize',4);
%hold on;
%loglog(1:N,node2_degree,'*','markersize',4);
%hold on;
%title('适应度模型,m0=m=5,N=2000');
%legend('t1=5','t2=95');
%xlabel('t');
%ylabel('k_i(t)');
endtime=datestr(now)
toc;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -