函数部分
function [r,eps,count] = powerthod(alpha,tol,Q)
[n,n]=size(Q);
for i=1:n
if Q(:,i)==0
continue;
else%输入矩阵规范化
Q(:,i)=Q(:,i)/norm(Q(:,i),1);
end
end
z=rand(n,1);
z=z/sum(z);
y=alpha*(Q*z);
count=0;
for i=1:1000
if norm(y-z)>tol
b=1-norm(y,1);
v=1/n*(ones(n,1));
y=y+b*v;
count=i;
else
break
end
end
x=1:100;
plot(x,y(1:100),'-*b');
eps=norm(y-z);
r=y;
end
## 测试代码1(使用真实数据1,可私信我要)
load('C:\Users\李炳玉\Desktop\实验程序\数据挖掘Pagerank数据\hollins6012(1).mat')
alpha=0.85;
tol=1e-6;
P=A;
[R1,wucha]=powerthod(alpha,tol,A);
disp(R1)
[Y1,I1]=sort(R1);
disp(Y1)
disp(I1)
disp(wucha)
## 测试代码2(使用加利福尼亚真实数据2)
load('C:\Users\李炳玉\Desktop\实验程序\数据挖掘Pagerank数据\California (1).mat')
t1=clock;
A=Problem.A;
% i=A(:,1);
% j=A(:,2);
% P=zeros(9664);
% P(i,j)=1;
alpha=0.85;
tol=1e-6;
[R1,wucha,count]=powerthod(alpha,tol,A);
disp(R1)
[Y1,I1]=sort(R1);
disp(Y1)
disp(I1)
disp(wucha)
t2=clock;
etime(t2,t1)