河北大学《数学模型》实验 实验报告
班级专业
计算机1班
姓名
张建华
学号
20144138021
实验地点
C1-229
指导老师
司建辉
成绩
实验项目
层次分析模型
实验9-1 层次分析模型——正互反阵最大特征根和特征向量的实用算法
一、实验目的 1、了解层次分析模型;
2、了解幂法函数及和法函数;
3、掌握根法函数;
二、实验要求
1. 用给出的幂法函数求A的最大特征根和特征向量。调用命令和运行结果。
2. 用给出的和法函数求A的最大特征根和特征向量。调用命令和运行结果。
3. 编写根法函数,用该函数求A的最大特征根和特征向量。程序、调用命令和运行结果。
三、实验内容
1、幂法:
%输入参数:A为正互反方阵,精度e
%输出参数:lamda为最大特征根,w为其归一化特征列向量
function [lamda w]=MIfun(A,e)
if(nargin==1)%如果只输入一个变量(即A),则e取0.000001
e=0.000001;
end
n=size(A,1);%取A的行数
w0=ones(n,1)/n;%归一向量
while 1
ww=A*w0;
w=ww/sum(ww);%归一化
if all(abs(w-w0)<e)
break;
end
w0=w;
end
lamda=sum(ww./w0)/n;
2、和法:
%输入参数:A为正互反方阵
%输出参数:lamda为最大特征根,w为其归一化特征列向量
function [lamda w]=HEfun(A)
n=size(A,1);
for k=1:n %a.将A的每一列向量归一化
AA(:,k)=A(:,k)./sum(A(:,k));
end
ww=sum(AA,2); %b.对AA按行求和,ww为列向量
w=ww./sum(ww); %c.归一化,得w为近似特征列向量
lamda=sum(A*w./w)/n; %d.计算最大特征根的近似值λ
3、根法:
function [lamda w]=RTfun(A)
n=size(A,1);
for k=1:n
AA(:,k)=A(:,k)./sum(A(:,k));
end
ww=prod(AA,2).^(1/n);
w=ww./sum(ww);
lamda=sum(A*w./w)/n;
四、实验结果及其分析
幂法:
和法:
根法:
实验9-2 层次分析模型——旅游决策问题
实验目的掌握层次分析法;
实验要求
1. 显示第2层的以下数据:
最大特征根λ;特征向量(权向量)w;一致性指标CI;一致性比率CR。
2. 显示第3层的以下数据:
特征向量(权向量)w(3)k;最大特征根λk;一致性指标CIk。
3. 显示最下层(第3层)对目标(第1层)的组合权向量。
4. 显示第2层和第3层的组合一致性比率,以及最下层对第1层的组合一致性比率。
实验内容
1、脚本式M文件:
format compact;
A=[1 1/2 4 3 3 ;2 1 7 5 5 ;1/4 1/7 1 1/2 1/3 ;1/3 1/5 2 1 1;1/3 1/5 3 1 1];
B1=[1 2 5 ; 1/2 1 2 ; 1/5 1/2 1];
B2=[1 1/3 1/8; 3 1 1/3; 8 3 1];
B3=[1 1 3 ; 1 1 3 ; 1/3 1/3 1];
B4=[1 3 4 ; 1/3 1 1 ; 1/4 1 1];
B5=[1 1 1/4; 1 1 1/4; 4 4 1];
[lamda2 w2 CI2 CR2]=TRfun(A);
if CR2>=0.1
disp(['CR2=',num2str(CR2),'>0.1,A óDí¨1yòDì2é£?'])
return;
end
[lamda3_1 w3_1 CI3_1 CR3_1]=TRfun(B1);
if CR3_1>0.1
disp(['CR3_1=',num2str(CR3_1),'>0.1,B1 óDí¨1yòDì2é£?'])
return;
end
[lamda3_2 w3_2 CI3_2 CR3_2]=TRfun(B2);
if CR3_2>0.1
disp(['CR3_2=',num2str(CR3_2),'>0.1,B2 óDí¨1yòDì2é£?'])
return;
end
[lamda3_3 w3_3 CI3_3 CR3_3]=TRfun(B3);
if CR3_3>0.1
disp(['CR3_3=',num2str(CR3_3),'>0.1,B3 óDí¨1yòDì2é£?'])
return;
end
[lamda3_4 w3_4 CI3_4 CR3_4]=TRfun(B4);
if CR3_4>0.1
disp(['CR3_4=',num2str(CR3_4),'>0.1,B4 óDí¨1yòDì2é£?'])
return;
end
[lamda3_5 w3_5 CI3_5 CR3_5]=TRfun(B5);
if CR3_5>0.1
disp(['CR3_5=',num2str(CR3_5),'>0.1,B5 óDí¨1yòDì2é£?'])
return;
end
w3=[w3_1,w3_2,w3_3,w3_4,w3_5]*w2;
CI3=[CI3_1 CI3_2 CI3_3 CI3_4 CI3_5]*w2;
RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];
RI3=[RI(3) RI(3) RI(3) RI(3) RI(3)]*w2;
CR3=CI3/RI3;
if CR3>0.1
disp(['CR3=',num2str(CR3),'>0.1,μú 3 2óDí¨1y×éo?òDì2é£?'])
return;
end
CR=CR2+CR3;
if CR>0.1
disp(['CR=',num2str(CR),'>0.1,óDí¨1y×éo?òDì2é£?'])
return;
end
[lamda2 w2 CI2 CR2]=TRfun(A)
[lamda3_1 w3_1 CI3_1]=TRfun(B1)
[lamda3_2 w3_2 CI3_2]=TRfun(B2)
[lamda3_3 w3_3 CI3_3]=TRfun(B3)
[lamda3_4 w3_4 CI3_4]=TRfun(B4)
[lamda3_5 w3_5 CI3_5]=TRfun(B5)
w3
CR2
CR3
CR
2、函数式M文件:
%输入参数:A为成对比较阵(正互反方阵)
%输出参数:
% lamda为最大特征根值
% w为A的归一化特征列向量(权向量)
% CI为一致性指标值
% CR为一致性比率值
function [lamda w CI CR]=TRfun(A)
[lamda w]=HEfun(A); %求A的最大特征根及归一化特征列向量
%随机一致性指标RI的数值(下标对应成对比较方阵的阶数):
RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];
n=size(A,1);
CI=(lamda-n)/(n-1); %一致性指标,CI=0时A为一致阵;CI越大A的不一致程度越严重
CR=CI/RI(n); %一致性比率,CR<0.1时认为A的不一致程度在容许范围之内
实验结果及分析