层次分析法的使用
待补充
代码
%输入判断矩阵
% A=input("请输入判断矩阵:")
A=[1 2 3;
1/2 1 3/2;
1/3 2/3 1]
disp(A);clc;
%一致性检验
E=eig(A);
disp('矩阵的最大特征值:');
l_max=max(E(:))
CI=(l_max-3)/(3-1)
RI=0.52 %平均随机一致性指标
CR=CI/RI
if CR<0.01
disp("判断矩阵通过一次性检验")
else
disp(['判断矩阵值为:' ,num2str(CR),',请调整判断矩阵'])
end
%算法平均法
%第一步 列归一化
for j=1:3
s=sum(A(:,j));
A(:,j)=A(:,j)/s;
end
% disp(A);
%第二步 行相加
w1=sum(A,2);
%第三步 算术平均
disp('算术平均:');disp(w1/3);
A=[1 2 3;
1/2 1 3/2;
1/3 2/3 1];
% disp(A);
%几何平均法
A_prod=prod(A,2);
A_prod_n=A_prod.^(1/3);
disp('几何平均法:');disp(A_prod_n/sum(A_prod_n));
%特征向量法
[V,D]=eig(A)
max_eig=max(D(:));%找到对角矩阵中最大的特征值
[r,c]=find(D==max_eig,1);%找到第一个最大特征值的行列
w=V(:,c)/sum(V(:,c));
disp('特征向量为:');disp(w);