数学建模社区-数学中国

标题: 跪求基于MATLAB的层次分析法程序!! [打印本页]

作者: ninipig    时间: 2009-8-16 11:08
标题: 跪求基于MATLAB的层次分析法程序!!
哪位高手有基于MATLAB的层次分析法程序,可否贡献出来大家一起分享了~~~
O(∩_∩)O谢谢!
作者: yyfanghui010    时间: 2009-8-16 11:15
A=[1 2 3 2;1/2 1 2 1;1/2 1 2 1;1/3 1/2 1 1/2;1/2 1 2 1]
[x,y]=eig(A);%y是特征值且从大到小排列。x是特征矩阵,每一列为相应特征值的一个特征向量。
eigenvalue=diag(y);
lamda=eigenvalue(1);
y_lamda=x(:,1)
v1=y_lamda./norm(x,1) % 单位化
ads(v1) %绝对化
不知道是不是你要的,A是判断矩阵
作者: dsshirley    时间: 2009-8-17 17:19
没有学习讨论的专区 就没有长期固定的活跃网友
作者: ninipig    时间: 2009-8-28 08:33
喔,谢谢大家了。O(∩_∩)O~
作者: chendaolee    时间: 2011-6-5 15:40

作者: muyitianmo    时间: 2012-12-7 22:03
好像菏泽个拉丁火把节说的话
作者: 568506561    时间: 2013-4-27 23:18
yyfanghui010 发表于 2009-8-16 11:15
A=[1 2 3 2;1/2 1 2 1;1/2 1 2 1;1/3 1/2 1 1/2;1/2 1 2 1]
[x,y]=eig(A);%y是特征值且从大到小排列。x ...

你的标点都错了,不一致,而且矩阵也不是方阵,怎么可能求出来呢?
作者: 568506561    时间: 2013-4-27 23:19
%层次分析法的matlab程序  
disp('请输入判断矩阵A(n阶)');
A=input('A=');
[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);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
不知道能否帮到你
作者: EvanZQ    时间: 2016-9-3 19:52






欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5