⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 powerconvergence.m

📁 网络分析法(ANP)的一个实现
💻 M
字号:
% 方阵收敛时的 K 次幂矩阵 W^K
% version 1.0

% 根据 《王莲芬,蔡海鸥. 网络分析法(ANP)的理论与算法,2001.》 中的关于存在性的讨论
% 来判断(加权)超矩阵中的 Wnn 是否存在无穷次幂,计算收敛时 W 的无穷次幂

% PowerConvergence 函数开始

function [matrix_infpower,flag] = PowerConvergence(Matrix)

[lineCount columeCount] = size(Matrix);
if lineCount ~= columeCount % 保证 Matrix 是方阵
    message = '该矩阵不是方阵,无法进行幂运算!';
    disp(message);
    return;
end

Dimension = lineCount;

% 求最大特征值
[lineCount,columeCount] = size(Matrix);
if lineCount ~= columeCount
    disp('矩阵不是方阵,无法求解最大特征值');
    return;
end
lmd_max = eigs(Matrix,1);
% [ev_lmd_max,lmd_max] = MaxEV(Matrix);
% if lmd_max < 0
%     lmd_max = abs(lmd_max);
% end
% ev_lmd_max = Unitize(ev_lmd_max');

for i = 1:1:Dimension
    LineSum(i) = 0;
    for j = 1:1:Dimension
        LineSum(i) = LineSum(i) + Matrix(i,j);
    end
end

MAX = max(LineSum');
MIN = min(LineSum');

flag = 0;
if lmd_max >= MIN && lmd_max <= MAX
    % 求最大特征值对应的归一化特征向量
    [max_eigenvector,power] = PowerMethod(Matrix);
    for j = 1:1:Dimension
        for i = 1:1:Dimension
            matrix_infpower(i,j) = max_eigenvector(i);
        end
    end
    flag = 1;
else
    message = '该矩阵不是列随机阵,无穷次幂不存在!';
    disp(message);
    return;
end

% PowerConvergence 函数结束


% 幂法求最大特征值对应的归一化特征向量
% PowerMethod 函数开始

function [v,k] = PowerMethod(A)
% v 最大特征值对应的归一化特征向量
% k 迭代次数(收敛时的幂指数)

[m,n]=size(A);
v=[1;ones(m-1,1)];
p=v'*A*v;
k=1;
tol(1)=1;
while tol(k)>1e-6
    v1=A*v;
    v2=norm(v1);
    v=v1/v2;
    p=v'*A*v;
    k=k+1;
    a=A*v-p*v;
    tol(k)=norm(a)/norm(A*v);
end
[m,n]=size(tol);
toll=tol(2:n);
k=k-1;
v = Unitize(v);

% PowerMethod 函数结束

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -