matlab程序 层次分析一致性检验
clc;clear;disp('请输入判断矩阵A(n阶)');A=[12;1/21];[n,n]=size(A);x=ones(n,100);y=ones(n,100);...
clc;clear;
disp('请输入判断矩阵A(n阶)');
A=[1 2;1/2 1];
[n,n]=size(A);
x=ones(n,100);
y=ones(n,100);
m=zeros(1,100);
m(1)=max(x(:,1));
y(:,1)=x(:,1);
x(:,2)=A*y(:,1);
m(2)=max(x(:,2));
y(:,2)=x(:,2)/m(2);
p=0.0001;i=2;k=abs(m(2)-m(1));
while k>p
i=i+1;
x(:,i)=A*y(:,i-1);
m(i)=max(x(:,i));
y(:,i)=x(:,i)/m(i);
k=abs(m(i)-m(i-1));
end
a=sum(y(:,i));
w=y(:,i)/a;t=m(i);
disp('权向量');
disp(w);
disp('最大特征值');
disp(t); %以下是一致性检验CI=(t-n)/(n-1);
CI=(t-n)/(n-1);
RI=[0 0 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58 1.59];
CR=CI/RI(n);
if CR<0.10
disp('此矩阵的一致性可以接受!');
disp('CI=');
disp(CI);
disp('CR=');
disp(CR);
else
disp('此矩阵的一致性不可以接受!');
end
为什么通不过一致性检验呢?要怎么改? 展开
disp('请输入判断矩阵A(n阶)');
A=[1 2;1/2 1];
[n,n]=size(A);
x=ones(n,100);
y=ones(n,100);
m=zeros(1,100);
m(1)=max(x(:,1));
y(:,1)=x(:,1);
x(:,2)=A*y(:,1);
m(2)=max(x(:,2));
y(:,2)=x(:,2)/m(2);
p=0.0001;i=2;k=abs(m(2)-m(1));
while k>p
i=i+1;
x(:,i)=A*y(:,i-1);
m(i)=max(x(:,i));
y(:,i)=x(:,i)/m(i);
k=abs(m(i)-m(i-1));
end
a=sum(y(:,i));
w=y(:,i)/a;t=m(i);
disp('权向量');
disp(w);
disp('最大特征值');
disp(t); %以下是一致性检验CI=(t-n)/(n-1);
CI=(t-n)/(n-1);
RI=[0 0 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58 1.59];
CR=CI/RI(n);
if CR<0.10
disp('此矩阵的一致性可以接受!');
disp('CI=');
disp(CI);
disp('CR=');
disp(CR);
else
disp('此矩阵的一致性不可以接受!');
end
为什么通不过一致性检验呢?要怎么改? 展开
2个回答
展开全部
一致性检验能不能通过和RI矩阵有关系的,你这个检验要求更严格一些所以通过不了。我这有推荐的RI矩阵,你可以用我的这个函数试试,应该没问题。或者你自己更改一下RI矩阵。不过不能改的太大,如果要求太松了,检验就没有意义了。
function A=myjudge()
disp('输入要判定的矩阵');
A=input('A=');
disp('特征值为:');
[V,D]=eig(A);
D1=diag(D);
D1=D1.'
disp('对应的特征向量为:');
V
disp('最大特征值为:');
m=max(D(:))
[n,z]=size(A);
CI=(m-n)/(n-1);
RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];
ri=RI(n);
CR=CI/ri
disp('是否通过一致性检验?');
if(CR>0.1)
disp('not pass')
else
disp('pass')
[r,c]=find(m==D);
v=V(:,c);
disp('权向量为')
B=v./sum(v)
end
end
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
用MATLAB进行一致性检验,必须有UGYK程序才可以。
追问
可以进行一致性检验,只是没法通过,但是书上一模一样的矩阵是能通过的,不知道是不是我程序的问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询