数学建模实验答案离散模型Word格式.docx
《数学建模实验答案离散模型Word格式.docx》由会员分享,可在线阅读,更多相关《数学建模实验答案离散模型Word格式.docx(59页珍藏版)》请在冰豆网上搜索。
w=
0.5876
0.3234
0.0890
(2)幂法(见[263])
A为n×
n正互反矩阵,算法步骤如下:
a.任取n维非负归一化初始列向量(分量之和为1)
;
b.计算
c.
归一化,即令
d.对于预先给定的精度ε,当
时,
即为所求的特征向量;
否则返回到步骤b;
e.计算最大特征根
。
函数式m文件如下:
function[lambdaw]=p263MI(A,d)
%幂法——求正互反阵最大特征根和特征向量
%A正互反方阵
%d精度
%lambda最大特征根
%w归一化特征列向量
if(nargin==1)%若只输入一个变量(即A),则d取0.000001
d=1e-6;
end
n=length(A);
%取方阵A的阶数
w0=rand(n,1);
w0=w0/sum(w0);
%任取归一化初始列向量
while1
ww=A*w0;
w=ww/sum(ww);
%归一化
ifall(abs(w-w0)<
d)
break;
end
w0=w;
lambda=sum(ww./w0)/n;
☆
(2)用幂法函数求A的最大特征根和特征向量。
(3)和法(见[264])
a.将A的每一列向量归一化得
b.对
按行求和得
c.将
归一化
即为近似特征向量;
d.计算
,作为最大特征根的近似值。
function[lambdaw]=p264HE(A)
%和法——求正互反阵最大特征根和特征向量
AA=A/diag(sum(A));
%a.将A的每一列向量归一化
ww=sum(AA,2);
%b.对AA按行求和,ww为列向量
w=ww./sum(ww);
%c.归一化,得w为近似特征列向量
lambda=sum(A*w./w)/length(A);
%d.计算最大特征根的近似值λ
☆(3)用和法函数求A的最大特征根和特征向量。
(4)根法(见[264])
按行求积并开n次方得
★(4)编写根法函数,用该函数求A的最大特征根和特征向量。
[提示:
sum,prod,diag]
对矩阵A按行求和的调用为sum(A,2)。
对矩阵A按行求积的调用为prod(A,2)。
diag(V),用向量V构造对角矩阵。
nargin,存放函数输入自变量的数目。
编写的程序和调用及运行结果(见[264]):
function[lambdaw]=p264GEN(A)
%根法——求正互反阵最大特征根和特征向量
%w归一化特征列向量
ww=(prod(AA,2)).^(1/n);
%b.对AA按行求积并开n次方,ww为列向量
lambda=sum(A*w./w)/n;
1.2(验证,编程)旅游决策问题p250~256
在下面程序中,脚本式m文件p250.m调用函数式m文件p250fun.m(求A的最大特征根及归一化特征列向量、一致性指标值CI、一致性比率值CR),p250fun.m中调用另一个函数式m文件p264HE.m(求A的最大特征根及归一化特征列向量)。
(1)脚本式m文件如下:
%旅游决策问题
%文件名:
p250.m
clear;
clc;
formatcompact;
%层次分析法的基本步骤:
%1.建立层次结构模型
%见p250图1选择旅游地的层次结构
%2.构造成对比较阵
%第2层为准则层:
景色、费用、居住、饮食和旅途5个准则
A=[11/2433;
...
21755;
1/41/711/21/3;
1/31/5211;
1/31/5311];
%第3层为方案层:
P1、P2和P3等3个供选择地点
B1=[125;
1/212;
1/51/21];
B2=[11/31/8;
311/3;
831];
B3=[113;
113;
1/31/31];
B4=[134;
1/311;
1/411];
B5=[111/4;
111/4;
441];
B=['
B1'
;
'
B2'
B3'
B4'
B5'
];
%3.计算权向量并做一致性检查
%第2层
[lambda2w2CI2CR2]=p250fun(A);
ifCR2>
=0.1%成对比较阵A的一致性检验
disp(['
CR2='
num2str(CR2),'
0.1,A没有通过一致性检查!
])
return;
%第3层
lambda3=zeros(1,5);
w3k=zeros(3,5);
CI3k=zeros(1,5);
CR3k=zeros(1,5);
fork=1:
5
[lambda3(k)w3k(:
k)CI3k(k)CR3k(k)]=p250fun(eval(B(k,:
)));
ifCR3k(k)>
0.1%成对比较阵B1的一致性检验
CR3k(k)='
num2str(CR3k(k)),'
0.1,B'
num2str(k),'
没有通过一致性检查!
%4.计算组合权向量并做组合一致性检验
w3=w3k*w2;
%最下层(第3层)对目标(第1层)的组合权向量
%第3层组合一致性检验(从第3层开始)
CI3=CI3k*w2;
%随机一致性指标RI的数值(下标对应成对比较方阵的阶数):
RI=[000.580.901.121.241.321.411.451.491.51];
RI3=RI([3,3,3,3,3])*w2;
%标量
CR3=CI3/RI3;
ifCR3>
0.1
CR3='
num2str(CR3),'
0.1,第3层没有通过组合一致性检查!
%最下层(第3层)对第1层的组合一致性比率为
CR=CR2+CR3;
ifCR>
CR='
num2str(CR),'
0.1,没有通过组合一致性检查!
%添加命令用于显示有关结果:
(2)函数式m文件如下:
function[lamdawCICR]=p250fun(A)
%求A的最大特征根及归一化特征列向量、一致性指标值CI、一致性比率值CR
%A成对比较阵(正互反方阵)
%lamda最大特征根值
%wA的归一化特征列向量(权向量)
%CI一致性指标值
%CR一致性比率值
[lamdaw]=p264HE(A);
%求A的最大特征根及归一化特征列向量
CI=(lamda-n)/(n-1);
%一致性指标,CI=0时A为一致阵;
CI越大A的不一致程度越严重
CR=CI/RI(n);
%一致性比率,CR<
0.1时认为A的不一致程度在容许范围之内
要求:
请仔细阅读以上程序,完成以下实验:
在脚本式m文件后面添加命令,使
★①显示第2层的数据。
包括:
最大特征根λ;
特征向量(权向量)w;
一致性指标CI;
一致性比率CR。
添加的命令和运行结果(见[254]):
lambda2,w2,CI2,CR2
★②显示第3层的数据。
一致性指标CI。
添加的命令和运行结果(见[255]表3):
w3k,lambda3,CI3k
★③显示最下层(第3层)对目标(第1层)的组合权向量。
添加的命令和运行结果(见[255]):
w3
★④显示第2层和第3层的组合一致性比率,以及最下层对第1层的组合一致性比率。
添加的命令和运行结果(见[256]):
CR2,CR3,CR
2.循环比赛的名次
2.1(编程,验证)双向连通竞赛图(4顶点)的名次排序p270,271~272
4个顶点的竞赛图(教材p270中图3(4))如下:
4个队得分(获胜场数)为(2,2,1,1)由得分排名为{(1,2),(3,4)},该竞赛图是双向连通图,属于第2种类型,可通过以下方法给出名次排序。
该图的邻接矩阵为:
★
(1)编写一个程序,求出1~8级得分向量,并依据8级得分向量给出排名。
给出程序和运行结果(比较[272]):
formatshortg;
A=[0110;
0011;
0001;
1000];
%邻接矩阵
%方阵A的阶数
s=A*ones(n,1);
disp(s'
);
fork=2:
8
s=A*s;
[~,k]=sort(s,'
descend'
%降序
k'
%排名
(2)求元素互不相等的得分向量法
得分向量为
s=A*ones
其中,
记s
(1)=s
s(k)=A*s(k-1)=Ak*ones,k=2,3,…(s(k)称为k级得分向量)
程序如下:
%双向连通竞赛图的名次排序(求元素不等的得分向量)
p272_1.m
k=1;
whilelength(unique(s))<
n%unique(s)去掉s中的重复元素
s=A*s;
k=k+1;
k%k级得分向量
s'
%元素不等的得分列向量
[~,kk]=sort(s,'
kk'
☆
(2)运行求元素互不相等的得分向量法程序。
运行结果(比较[272]):
(3)特征根法
对于n≥4个顶点的双向连通竞赛图,其邻接矩阵A为素阵(存在正整数r,使Ar>
0),且有
其中,1为全1列向量,λ为最大实特征根且为正,s为其特征列向量。
%双向连通竞赛图的名次排序(特征根法)
p272_2.m
%邻接矩阵
[V,D]=eig(A);
%返回A的特征值和特征向量。
%其中D为A的特征值构成的对角阵,每个特征值
%对应的V的列为属于该特征值的一个特征向量。
D=diag(D);
%返回矩阵D的对角线元素构成列向量。
D=D.*(imag(D)==0);
%复数特征值用0代替,实数的则不变
[lamda,k]=max(D);
lamda
s=V(:
k));
%最大特征根对应的特征列向量(归一化)
k'
☆(3)运行特征根法程序。
给出运行结果(比较[272]):
2.2(验证)双向连通竞赛图(6顶点)的名次排序p270,272~273
6个顶点的竞赛图(教材p270中图1)如下:
使用上题的程序。
☆
(1)求出1~4级得分向量,并依据4级得分向量给出排名。
运行结果:
运行结果(比较[273]):
3.公平的席位分配
3.1(验证)参照惯例的席位分配方法p278~279
某学校有甲乙丙三个系共有200名学生,其中甲系有103人,乙系有63人,丙系有34人。
(1)有20个代表席位,采用参照惯例的席位分配方法,分别求出甲乙丙系的“席位分配结果”。
(2)有21个代表席位,采用参照惯例的席位分配方法,分别求出甲乙丙系的“席位分配结果”。
下面是参照惯例的席位分配方法的求解函数:
function[qi,ni]=p278fun(p,n)
%p各单位人数(列向量)
%n总席位(标量)
%qi按比例分配的席位(列向量)
%ni参照惯例的结果(列向量)
qi=n*p/sum(p);
%按比例各单位所得席位(可能含小数)
ni=fix(qi);
%各单位所得席位取整
m=n-sum(ni);
%可能有没分配完的席位
ifm>
0%席位没分完
[~,k]=sort(qi-ni,'
%按降序排序(缺省为升序)
ni(k(1:
m))=ni(k(1:
m))+1;
%排在前m个,加1
①在命令窗口分别调用以上函数求解(使用最佳定点或浮点格式(5位数字)控制命令formatshortg)。
②两个结果比较,合理吗?
☆题
(1)(20个代表席位)的调用及结果(比较[279]表1)。
☆题
(2)(21个代表席位)的调用及结果(比较[279]表1)。
3.2(验证)Q值方法p280~281
(教材:
8.4公平的席位分配)
(1)有20个代表席位,采用Q值法分别求出甲乙丙系的“席位分配结果”。
(2)有21个代表席位,采用Q值法分别求出甲乙丙系的“席位分配结果”。
下面是Q值法的求解函数:
function[qi,ni]=p280fun(p,n)
qi=n*p/sum(p);
whilesum(ni)<
n
Qi=p.^2./(ni.*(ni+1));
%ni>
[~,i]=max(Qi);
%求最大值元素及下标
ni(i)=ni(i)+1;
☆题
(1)(20个代表席位)的调用及结果(见[281])。
☆题
(2)(21个代表席位)的调用及结果(见[281])。
附1:
实验提示
附2:
第8章离散模型
[249]8.1层次分析模型
[254]题1.2①答案
[255]题1.2②③答案
[256]题1.2④答案
[263]题1.1
(2)幂法
[264]题1.1(3)(4)和法、根法,答案
[269]8.2循环比赛的名次
[272]题2.1、2.2
(1)答案
[273]题2.2(3)答案****本节完****
[278]8.4公平的席位分配
[279]题3.1答案
[281]题3.2答案
[286]****本节完****