声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1989|回复: 9

[编程技巧] 请帮我看下这个程序运行结果是什么?

[复制链接]
发表于 2007-6-5 10:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
disp('请输入判断矩阵A(n阶)');
A=[1        1     1       4      1       1/2
1        1     2       4      1       1/2
     1        1/2   1      5      3       1/2
   1/4     1/4    1/5    1     1/3      1/3
       1        1      1/3    3      1        1
       2        2       2      3      1        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(w);disp(t);
         %以下是一致性检验
CI=(t-n)/(n-1);RI=[0.17   0.19   0.22  0.05   0.15   0.22];
CR=CI/RI(n);
if CR<0.10
    disp('此矩阵的一致性可以接受!');
    disp('CI=');disp(CI);
    disp('CR=');disp(CR);
end





请帮我看下这个程序有问题吗? 如果没有运行结果是什么? 我这里没有MATLAB软件  谢谢了!
回复
分享到:

使用道具 举报

发表于 2007-6-5 10:08 | 显示全部楼层
有错误,RI=[0.17   0.19   0.22  0.05   0.15   0.22];未定义RI是什么
??? Error: File: C:\matlab\work\c.m Line: 31 Column: 18
Missing variable or function.
发表于 2007-6-5 10:12 | 显示全部楼层
原帖由 艾艾 于 2007-6-5 10:04 发表
disp('请输入判断矩阵A(n阶)');
A=[1        1     1       4      1       1/2
1        1     2       4      1       1/2
     1        1/2   1      5      3       1/2
   1/4     1/4    1/5    1   ...


结果如下:
结果.bmp
发表于 2007-6-5 10:16 | 显示全部楼层
没有软件也可以写啊,强人啊.

中间好多地方看不懂,x,y初始化都是1的矩阵,怎么还要求最大值,又把x第一列赋给y
 楼主| 发表于 2007-6-5 10:30 | 显示全部楼层
随机一致性指标RI的取值根据[1]取

我不会MATLAB 着急要交论文 所以请大家帮帮忙  这个结论对吗?
 楼主| 发表于 2007-6-5 10:37 | 显示全部楼层
层次分析法的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(w);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);
end



这是我网上下的 拒阵A是给的 然后RI我不知道是什么就把权向量换上去了  权向量就是[0.17   0.19   0.22  0.05   0.15   0.22]的转置  或者你们谁帮我做出来应该正确的程序是什么 我下午等着交论文 谢谢拉 ~!
发表于 2007-6-5 11:12 | 显示全部楼层
权向量是[0.17   0.19   0.22  0.05   0.15   0.22]时,CR>0.10,不显示结果,也就是
此矩阵的一致性不可以接受
发表于 2007-6-6 23:50 | 显示全部楼层
RI  表示修正值,是给出的固定值。例如,判断矩阵是1维的时候,RI=0;判断矩阵是5维的时候,
    RI=1.12
发表于 2007-6-7 13:02 | 显示全部楼层
A=[1        1      1       4      1       1/2
   1        1      2       4      1       1/2
   1        1/2    1       5      3       1/2
   1/4      1/4    1/5     1      1/3     1/3
   1        1      1/3     3      1       1
   2        2      2       3      1       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(w);
disp(t);
%以下是一致性检验
CI=(t-n)/(n-1);
RI=[0.17   0.19   0.22  0.05   0.15   0.22];
CR=CI/RI(n);
if CR<0.10
    disp('此矩阵的一致性可以接受!')
    disp('CI=')
    disp(CI)
    disp('CR=')
    disp(CR)
else disp('此矩阵的一致性不可以接受!')
end
%%%%%%%%%%%%%%%%%%%
answer:
    0.1584
    0.1892
    0.1980
    0.0483
    0.1502
    0.2558

    6.4204

此矩阵的一致性不可以接受!
发表于 2007-6-7 16:12 | 显示全部楼层
还是提示你一句吧: 千万不要生搬硬套,应该先弄懂程序的含义,更应该看看书,弄懂层次分析法的计算步骤.
对于你的这个问题, 很明显有三层(在另一版面看到), 你的方案层判断矩阵都没有写出,更别谈正确计算了...

[ 本帖最后由 xjzuo 于 2007-6-7 16:14 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-21 15:39 , Processed in 0.067115 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表