范文一:随机一致性指标
东南大学数学建模与实验课程实验报告-蒋琨-04007539
随机一致性指标求解 (一)实验目的:
1)掌握用matlab求解随机一致性指标的方法
2)加深对随机一致性指标概念的理解
(二)实验内容:
用matlab或C++编写程序分别计算n=2-30时的n阶矩阵的随机一致性检验指标的值RI。为保证随机性,要求每阶创造1000个矩阵。
(三)实验原理及分析:
层次分析发建模问题中,需要用到对矩阵A的一致性检验,然而对于一般的问题,尤其当考虑实际因素比较多时,很难保证判断
,max矩阵A为一致矩阵,因此在计算矩阵A的最大特征值之时,需要检验矩阵A的一致程度。
令:
,n,maxCI, n,1
称CI为一致性指标。显然CI=0是矩阵A为一致矩阵的必要条件。可以看出CI值越大,A的不一致程度越严重。
但是对于一个具体的矩阵来书,很难说其一致性指标CI到底是很大还是很小,Saaty针对上述定义的不严格性,提出了用随机一致性指标RI来检验判断矩阵A是否具有满意的一致性。
东南大学数学建模与实验课程实验报告-蒋琨-04007539
RI是按照下面的方式选取的:
'A对于固定的n,随机构造正互反矩阵,他的元素是从1~9a'ij
'A及其倒数中随机选取的,因此的一致性一般都是很差的,取充分
'A大的子样儿得到最大特征值的平均值k,定义:
k,n RI,n,1
CICR, RI
CR称为随机一致性比率。RI称为随机一致性指标。当CR<0.1时,一般认为矩阵a的不一致程度再容许范围之内,可以用其特征向量作为权向量。>0.1时,一般认为矩阵a的不一致程度再容许范围之内,可以用其特征向量作为权向量。>
(四)问题求解:
根据以上原理分析可得随机一致性指标值RI的求解方法,结合题目要求,求解如下:
1、求RI的函数流程图:
构造1000个n阶随
机正互反矩阵A’,元
素0~9及其倒数,
求1000个矩阵的最
大特征值的平均值k
计算RI的值:
k,nRI, n,1
代码如下:
function RI=ri(n)
% 定义函数
东南大学数学建模与实验课程实验报告-蒋琨-04007539
% 输入n值
n=ceil(n);
if n<=0, error('n必须为正数');="" end="">=0,>
if n==0 || n==1, RI=0; return;
end
% 初始化
times=1000;
scaler=[9 8 7 6 5 4 3 2 1 1/2 1/3 1/4 1/5 1/6 1/7 1/8 1/9];
A=zeros(n);
lamda=zeros(times,1);
% 产生1000组随机正互反矩阵
for num=1:times
rank=ceil(17*rand(n));
% 产生一组n阶正互反矩阵
for i=1:n
for j=i:n
A(i,j)=scaler(rank(i,j));
A(j,i)=1/A(i,j);
A(i,i)=1;
end
end
rigenvector=eig(A); %求最大特征值
lamda(num)=max(rigenvector); %求1000组最大特征值平均值
end
lamda_average=sum(lamda)/times; RI=(lamda_average-n)/(n-1);
%求RI的值
2、求n=2~30的随机一致性指标值 编写程序:
for n=2:30
RI(n)=ri(n);
RI(n)
End
执行结果如下:
ans =
0
东南大学数学建模与实验课程实验报告-蒋琨-04007539
ans =
0.5189
ans =
0.8638
ans =
1.0959
ans =
1.2550
ans =
1.3390
ans =
1.3954
ans =
1.4338
ans =
1.4901
ans =
1.5118
ans =
1.5383
ans =
东南大学数学建模与实验课程实验报告-蒋琨-04007539
1.5550
ans =
1.5808
ans =
1.5848
ans =
1.5958
ans =
1.6044
ans =
1.6103
ans =
1.6251
ans =
1.6244
ans =
1.6344
ans =
1.6426
ans =
东南大学数学建模与实验课程实验报告-蒋琨-04007539
1.6459
ans =
1.6444
ans =
1.6543
ans =
1.6606
ans =
1.6624
ans =
1.6659
ans =
1.6715
ans =
1.6720
得到的结果为:
n 2 3 4 5 6 7 8 9 10 RI 0 0.5189 0.8638 1.0959 1.2550 1.3390 1.3954 1.4338 1.4901 n 11 12 13 14 15 16 17 18 19 20 RI 1.5118 1.5383 1.5550 1.5808 1.5848 1.5958 1.6044 1.6103 1.6251 1.6244 n 21 22 23 24 25 26 27 28 29 30 RI 1.6344 1.6426 1.6459 1.6444 1.6543 1.6606 1.6624 1.6659 1.6715 1.6720
(五)、实验总结
东南大学数学建模与实验课程实验报告-蒋琨-04007539
本次实验通过实践学习了Matlab编程的基本规则以及自定义函数的调用方法。强化了层次分析法中权向量求解的概念,进一步掌握了随机一致性指标求解方法以及随机一致性检验的方法。
范文二:随机一致性指标
随机一致性指标求解
(一) 实验目的:
1)掌握用matlab 求解随机一致性指标的方法 2)加深对随机一致性指标概念的理解
(二)实验内容:
用matlab 或C++编写程序分别计算n=2-30时的n 阶矩阵的随机一致性检验指标的值RI 。为保证随机性,要求每阶创造1000个矩阵。
(三)实验原理及分析:
层次分析发建模问题中,需要用到对矩阵A 的一致性检验,然而对于一般的问题,尤其当考虑实际因素比较多时,很难保证判断矩阵A 为一致矩阵,因此在计算矩阵A 的最大特征值λmax 之时,需要检验矩阵A 的一致程度。 令:
CI =
λmax -n
n -1
称CI 为一致性指标。显然CI=0是矩阵A 为一致矩阵的必要条件。可以看出CI 值越大,A 的不一致程度越严重。
但是对于一个具体的矩阵来书,很难说其一致性指标CI 到底是很大还是很小,Saaty 针对上述定义的不严格性,提出了用随机一致性指标RI 来检验判断矩阵A 是否具有满意的一致性。
RI 是按照下面的方式选取的:
对于固定的n ,随机构造正互反矩阵A ' ,他的元素a ij ' 是从1~9
及其倒数中随机选取的,因此A ' 的一致性一般都是很差的,取充分大的子样儿得到A ' 最大特征值的平均值k ,定义:
R I =
k -n
n -1CI RI
CR =
CR 称为随机一致性比率。RI 称为随机一致性指标。当CR<0.1时,一般认为矩阵a>0.1时,一般认为矩阵a>
(四)问题求解:
根据以上原理分析可得随机一致性指标值RI 的求解方法,结合题目要求,求解如下: 1、求RI
代码如下:
function RI=ri(n) % 定义函数
% 输入n 值 n=ceil(n);
if n<=0, error('n="" 必须为正数'="" );="">=0,>
if n==0 || n==1, RI=0; return ; end
% 初始化 times=1000;
scaler=[9 8 7 6 5 4 3 2 1 1/2 1/3 1/4 1/5 1/6 1/7 1/8 1/9]; A=zeros(n);
lamda=zeros(times,1);
% 产生1000组随机正互反矩阵 for num=1:times
rank=ceil(17*rand(n)); % 产生一组n 阶正互反矩阵 for i=1:n for j=i:n
A(i,j)=scaler(rank(i,j)); A(j,i)=1/A(i,j); A(i,i)=1; end end
rigenvector=eig(A); %求最大特征值
lamda(num)=max(rigenvector); %求1000组最大特征值平均值 end
lamda_average=sum(lamda)/times; RI=(lamda_average-n)/(n-1); %求RI 的值
2、求n=2~30的随机一致性指标值 编写程序: for n=2:30
RI(n)=ri(n); RI(n)
End
执行结果如下:
ans =
ans =
0.5189
ans =
0.8638
ans =
1.0959
ans =
1.2550
ans =
1.3390
ans =
1.3954
ans =
1.4338
ans =
1.4901
ans =
1.5118
ans =
1.5383
ans =
1.5550
ans =
1.5808
ans =
1.5848
ans =
1.5958
ans =
1.6044
ans =
1.6103
ans =
1.6251
ans =
1.6244
ans =
1.6344
ans =
1.6426
ans =
1.6459
ans =
1.6444
ans =
1.6543
ans =
1.6606
ans =
1.6624
ans =
1.6659
ans =
1.6715
ans =
1.6720
(五) 、实验总结
本次实验通过实践学习了Matlab 编程的基本规则以及自定义函数的调用方法。强化了层次分析法中权向量求解的概念,进一步掌握了随机一致性指标求解方法以及随机一致性检验的方法。
范文三:随机一致性指标求解
东南大学《数学实验》报告
学号 11209117 姓名 袁骏杰 成绩 实验内容: 随机一致性指标求解 一 实验目的
1)掌握用matlab求解随机一致性指标的方法
2)加深对随机一致性指标概念的理解
二 实验内容与要求
用matlab或C++编写程序分别计算n=3-30时的n阶矩阵的随机一致性检验指标的值RI。为保证随机性,要求每阶创造1000个矩阵。
三 实验原理
层次分析发建模问题中,需要用到对矩阵A的一致性检验,然而对于一般的问题,尤其当考虑实际因素比较多时,很难保证判断矩阵A为一致矩阵,因此在计算矩阵A的最大
,max特征值之时,需要检验矩阵A的一致程度。
令:
,n,maxCI,n,1
称CI为一致性指标。显然CI=0是矩阵A为一致矩阵的必要条件。可以看出CI值越大,A的不一致程度越严重。
但是对于一个具体的矩阵来书,很难说其一致性指标CI到底是很大还是很小,Saaty针对上述定义的不严格性,提出了用随机一致性指标RI来检验判断矩阵A是否具有满意的一致性。
RI是按照下面的方式选取的:
对于固定的n,随机构造正互反矩阵A’,他的元素a’是从1~9及其倒数中随机选取ij
的,因此A’的一致性一般都是很差的,取充分大的子样儿得到A’最大特征值的平均值k,定义:
k,nRI,n,1
CICR,
RI
1
CR称为随机一致性比率。RI称为随机一致性指标。当CR<>
的不一致程度再容许范围之内,可以用其特征向量作为权向量。
求解随机一致性指标可按如下步骤:
构造1000个n阶随机正互反矩阵A’(元素0~9及其倒数)
求1000个矩阵的最大特征值的平均值k
k,nRI,n,1 计算RI的值:
四 主要实验代码及结果
M文件
function RI=ri(n)
% 输入n值
n=ceil(n);
if n<=0, error('n必须为正数');="">=0,>
end
if n==0 || n==1, RI=0;
return;
end
%初始化
times=1000;
scaler=[9 8 7 6 5 4 3 2 1 1/2 1/3 1/4 1/5 1/6 1/7 1/8 1/9];
A=zeros(n);
lamda=zeros(times,1); %产生1000组随机正互反矩阵 for num=1:times
rank=ceil(17*rand(n)); % 产生一组n阶正互反矩阵
for i=1:n
for j=i:n
A(i,j)=scaler(rank(i,j));
A(j,i)=1/A(i,j);
A(i,i)=1;
end
end
rigenvector=eig(A); %求最大特征值
lamda(num)=max(rigenvector); %求1000组最大特征值平均值 end
lamda_average=sum(lamda)/times; RI=(lamda_average-n)/(n-1); %求RI的值
运行程序
for n=3:30
2
RI(n)=ri(n);
RI(n)
end
运行结果
n 3 4 5 6 7 8 9 10 RI 0.5189 0.8638 1.0959 1.2550 1.3390 1.3954 1.4338 1.4901 n 11 12 13 14 15 16 17 18 19 20 RI 1.5118 1.5383 1.5550 1.5808 1.5848 1.5958 1.6044 1.6103 1.6251 1.6244 n 21 22 23 24 25 26 27 28 29 30 RI 1.6344 1.6426 1.6459 1.6444 1.6543 1.6606 1.6624 1.6659 1.6715 1.6720
五 实验总结
本次实验通过实践学习了Matlab编程的基本规则以及自定义函数的调用方法。实验虽然简单,但我也从中强化了层次分析法中权向量求解的概念,进一步掌握了随机一致性指标求解方法以及随机一致性检验的方法。
3
范文四:求平均随机一致性指标RI
东南大学《数学实验》报告
学号 姓名 成绩 实验题目: 求平均随机一致性指标RI 一 实验目的
使用matlab 编程求平均随机一致性指标RI
二 预备知识
熟悉input ,rand , eig 等matlab 命令
三 实验内容与要求
编写求十万个随机n 阶正互反矩阵的平均一致性指标的程序
function randRI()
%求平均随机一致性指标RI
%09008334所有,使用请注意修改。 disp('输入矩阵的维数'); n=input(''); n=ceil(n);
if n<=0, error('the="" parameter="" must="" be="" a="" positive="" number.');="" end="" if="" n="=0" ||="" n="=1," ri="0;" return;="">=0,>
A=[1 2 3 4 5 6 7 8 9 1/2 1/3 1/4 1/5 1/6 1/7 1/8 1/9]; X=zeros(n); times=100000; lamda=0;
for num=1:times
rand('state',sum(100*clock)*rand(1));%试着产生和时间相关的随机数种子, 与当前时间有关
%同时再加入一个随机数,这样在次数较多的循环中避免了伪随机数重复出现的情况。 for i=1:n
for j=i+1:n
B=ceil(17*rand(n)); X(i,j)=A(B(i,j)); X(j,i)=1/X(i,j); X(i,i)=1; end end [a,b]=eig(X);
lamda=lamda+max(max(b));%求最大特征值的和 end
RI=(lamda/times-n)/(n-1)
%index=find(b==max(max(b)));求最大特征值对应的特征向量 %eigenvector=a(:,index)
反矩阵,不过由于matlab 知识和命令掌握的有限,尝试了很多方法,也在网上找了很长时间,都没有很好的解决办法,最后还是采用了效率比较低的数组运算。由于循环的次数比较多(十万次),所以运行时间比较长,所以希望老师在检查的时候要多多包涵,当然如果把循环次数降低,相对来说,程序运行的速度提升还是很明显的。程序直接调用了matlab 中求最大特征值的命令,所以这一步相对于C++来说,要简单了一些,而且误差也要小了很多,不过有利有弊,这样我对于求最大特征值的方法理解的就不是那么深刻了。
范文五:计算随机一致性指标RI______作业
东南大学《数学实验》报告
学号 06010314 姓名 梅杰 成绩 实验内容:计算随机一致性指标RI
一 实验目的
计算n=3~30时的n阶矩阵的随机一致性指标RI 二 预备知识
(1)熟悉随机一致性指标的含义及计算方法
(2)熟悉eig、rand等Matlab命令
三 实验内容与要求
用MATLAB编制程序,(要求采用和法计算最大特征值),分别计算n=3~30时的n阶矩阵的随机一致性指标RI。
1
RI=zeros(1,30); %定义结果输出格式并初始化,RI(1)直接赋值为0 for n=3:30 %循环计算阶数3到30的随机正互反矩阵的RI
%n=20; %起初以20阶矩阵为例测试
times=10000; %10000个子样,应该够多了吧
enum=[9 8 7 6 5 4 3 2 1 1/2 1/3 1/4 1/5 1/6 1/7 1/8 1/9]; %矩阵元素从enum中取得
lamda = zeros(1, times); %最大特征值向量初始化
A=ones(n,n); %初始化相应阶数的矩阵
for num=1:times %循环
for i=1:n %把矩阵A赋值为正互反矩阵
for j=i+1:n
A(i,j)=enum(ceil(17*rand(1))); %矩阵的上半部分从enum中随机取值
A(j,i)=1/A(i,j); %矩阵的下半部分与上半部分成倒数
A(i,i)=1; %矩阵对角线为1
end
end
V=eig(A); %求得A的特征向量
lamda(num)=max(V); %以最大特征值给lamda向量赋值
end
k=sum(lamda)/times; %最大特征值的平均值
RI(n)=(k-n)/(n-1); %得出对应的RI(n) end
RI %最后输出RI向量,即1,30阶矩阵的平均随机一致性指标
2
四 实验心得
一开始对matlab命令不熟悉,感觉无从下手,通过查阅matlab相关资料,进一步了解matlab后,找到门路和方法,由于对程序和函数的不熟悉,又花费了大量时间,不过终有所获。这一次实验,我初步了解了matlab程序的结构,用到了循环语句,对矩阵的初始化有了更进一步的理解。
3