%%1解权系数计算模型 A=[1 1.6;0.625 1];%定义判断矩阵A function [CI, CR] = myCI_CR(A)% A为判断矩阵 n = size(A, 1); % 获取判断矩阵的大小 W = sum(A, 2) ./ sum(sum(A)); % 计算权重向量 lambda_max = max(eig(A)); % 计算最大特征值 CI = (lambda_max - n) / (n - 1); %计算一致性指数 RI = [0.10, 0.25, 0.58, 0.90, 1.12, 1.24, 1.32, 1.41, 1.45, 1.49]; % 随机一致性指标 CR(n) = CI / RI(n); % 计算一致性比率 if any(CR(n)) > 0.1 % 若一致性比率超过0.1,则判断矩阵不一致 disp('The matrix is inconsistent.') end end哪里有错导致运行不出结果
时间: 2023-11-27 07:50:11 浏览: 51
汇总.zip_coalgs1_matlab解方程_高斯消元法
在这段代码中,有几个问题可能导致没有输出结果:
1. 在计算一致性比率时,应该使用循环来计算每个指标的一致性比率,而不是只计算最后一个指标的一致性比率。所以应该将 `CR(n) = CI / RI(n);` 改成 `for i=1:n, CR(i) = CI / RI(i); end`。
2. 在判断一致性比率是否超过0.1时,应该使用 `if any(CR > 0.1)`,而不是 `if any(CR(n)) > 0.1`,因为 `any(CR(n))` 只会返回一个值,而不是判断整个数组是否有任何一个元素超过0.1。
修改后的代码如下:
```
function [CI, CR] = myCI_CR(A)
% A为判断矩阵
n = size(A, 1); % 获取判断矩阵的大小
W = sum(A, 2) ./ sum(sum(A)); % 计算权重向量
lambda_max = max(eig(A)); % 计算最大特征值
CI = (lambda_max - n) / (n - 1); %计算一致性指数
RI = [0.10, 0.25, 0.58, 0.90, 1.12, 1.24, 1.32, 1.41, 1.45, 1.49]; % 随机一致性指标
for i=1:n
CR(i) = CI / RI(i); % 计算一致性比率
end
if any(CR > 0.1) % 若一致性比率超过0.1,则判断矩阵不一致
disp('The matrix is inconsistent.')
end
end
```
阅读全文