题目如图所示
MATLAB层次分析法代码:
clc
% 初始化随机一致性指数 RI 的常用值
RI = [0, 0, 0.58, 0.90, 1.12, 1.24, 1.32, 1.41, 1.45];
% 定义函数来处理矩阵
function [lambda_max, CI, CR, priority_vector] = processMatrix(matrix, RI)
normalized_matrix = matrix ./ sum(matrix, 1);
priority_vector = mean(normalized_matrix, 2);
composite_score = matrix * priority_vector;
lambda_max = mean(composite_score ./ priority_vector);
n = size(matrix, 1);
CI = (lambda_max - n) / (n - 1);
CR = CI / RI(n);
end
% 矩阵 A, B1, B2, B3, B4 的定义
matrices = {
'A', [1, 3, 7, 8; 1/3, 1, 5, 5; 1/7, 1/5, 1, 3; 1/8, 1/5, 1/3, 1];
'B1', [1, 2, 3; 1/2, 1, 2; 1/3, 1/2, 1];
'B2', [1, 1/5, 1/2; 5, 1, 7; 2, 1/7, 1];
'B3', [1, 3, 5; 1/3, 1, 4; 1/5, 1/4, 1];
'B4', [1, 1/5, 3; 5, 1, 7; 1/3, 1/7, 1];
};
% 循环处理每个矩阵,并显示结果
for i = 1:size(matrices, 1)
matrix_name = matrices{i, 1};
matrix = matrices{i, 2};
[lambda_max, CI, CR, priority_vector] = processMatrix(matrix, RI);
% 输出结果
fprintf('对于矩阵 %s:\n', matrix_name);
fprintf('最大特征值: %f\n', lambda_max);
fprintf('一致性指数 CI: %f\n', CI);
fprintf('一致性比率 CR: %f\n', CR);
fprintf('权重向量: [');
fprintf('%g ', priority_vector);
fprintf(']\n\n');
end
输出结果为:
对于矩阵 A:
最大特征值: 4.206029
一致性指数 CI: 0.068676
一致性比率 CR: 0.076307
权重向量: [0.575485 0.276142 0.0965361 0.0518362 ]
对于矩阵 B1:
最大特征值: 3.009209
一致性指数 CI: 0.004604
一致性比率 CR: 0.007939
权重向量: [0.538961 0.297258 0.163781 ]
对于矩阵 B2:
最大特征值: 3.122316
一致性指数 CI: 0.061158
一致性比率 CR: 0.105445
权重向量: [0.11092 0.73107 0.15801 ]
对于矩阵 B3:
最大特征值: 3.086691
一致性指数 CI: 0.043345
一致性比率 CR: 0.074734
权重向量: [0.619352 0.284228 0.0964194 ]
对于矩阵 B4:
最大特征值: 3.065819
一致性指数 CI: 0.032909
一致性比率 CR: 0.056740
权重向量: [0.193186 0.723506 0.0833079 ]
>>
习题解答: