数学建模实验答案离散模型.docx

上传人:b****4 文档编号:4031112 上传时间:2022-11-27 格式:DOCX 页数:59 大小:4.32MB
下载 相关 举报
数学建模实验答案离散模型.docx_第1页
第1页 / 共59页
数学建模实验答案离散模型.docx_第2页
第2页 / 共59页
数学建模实验答案离散模型.docx_第3页
第3页 / 共59页
数学建模实验答案离散模型.docx_第4页
第4页 / 共59页
数学建模实验答案离散模型.docx_第5页
第5页 / 共59页
点击查看更多>>
下载资源
资源描述

数学建模实验答案离散模型.docx

《数学建模实验答案离散模型.docx》由会员分享,可在线阅读,更多相关《数学建模实验答案离散模型.docx(59页珍藏版)》请在冰豆网上搜索。

数学建模实验答案离散模型.docx

数学建模实验答案离散模型

实验09离散模型(2学时)

(第8章离散模型)

1.层次分析模型

1.1(验证,编程)正互反阵最大特征根和特征向量的实用算法p263~264

已知正互反阵

注:

[263]定理2n阶正互反阵A的最大特征根≥n。

(1)用MATLAB函数求A的最大特征根和特征向量。

调用及运行结果(见[264]):

>>A=[126;1/214;1/61/41];

>>[V,D]=eig(A)

V=

0.8685-0.8685-0.8685

0.47790.2390-0.4139i0.2390+0.4139i

0.13150.0658+0.1139i0.0658-0.1139i

D=

3.009200

0-0.0046+0.1663i0

00-0.0046-0.1663i

>>D=diag(D)

D=

3.0092

-0.0046+0.1663i

-0.0046-0.1663i

>>D=D.*(imag(D)==0)

D=

3.0092

0

0

>>[lambda,k]=max(D)

lambda=

3.0092

k=

1

>>w=V(:

k)/sum(V(:

k))

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)

break;

end

w0=w;

end

lambda=sum(ww./w0)/n;

(2)用幂法函数求A的最大特征根和特征向量。

调用及运行结果(见[264]):

(3)和法(见[264])

A为n×n正互反矩阵,算法步骤如下:

a.将A的每一列向量归一化得

b.对

按行求和得

c.将

归一化

即为近似特征向量;

d.计算

,作为最大特征根的近似值。

函数式m文件如下:

function[lambdaw]=p264HE(A)

%和法——求正互反阵最大特征根和特征向量

%A正互反方阵

%lambda最大特征根

%w归一化特征列向量

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的最大特征根和特征向量。

调用及运行结果(见[264]):

(4)根法(见[264])

A为n×n正互反矩阵,算法步骤如下:

a.将A的每一列向量归一化得

b.对

按行求积并开n次方得

c.将

归一化

即为近似特征向量;

d.计算

,作为最大特征根的近似值。

★(4)编写根法函数,用该函数求A的最大特征根和特征向量。

[提示:

sum,prod,diag]

对矩阵A按行求和的调用为sum(A,2)。

对矩阵A按行求积的调用为prod(A,2)。

diag(V),用向量V构造对角矩阵。

nargin,存放函数输入自变量的数目。

编写的程序和调用及运行结果(见[264]):

function[lambdaw]=p264GEN(A)

%根法——求正互反阵最大特征根和特征向量

%A正互反方阵

%lambda最大特征根

%w归一化特征列向量

n=length(A);

AA=A/diag(sum(A));%a.将A的每一列向量归一化

ww=(prod(AA,2)).^(1/n);%b.对AA按行求积并开n次方,ww为列向量

w=ww./sum(ww);%c.归一化,得w为近似特征列向量

lambda=sum(A*w./w)/n;%d.计算最大特征根的近似值λ

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;

end

%第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的一致性检验

disp(['CR3k(k)=',num2str(CR3k(k)),'>0.1,B',num2str(k),'没有通过一致性检查!

'])

return;

end

end

%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

disp(['CR3=',num2str(CR3),'>0.1,第3层没有通过组合一致性检查!

'])

return;

end

%最下层(第3层)对第1层的组合一致性比率为

CR=CR2+CR3;

ifCR>0.1

disp(['CR=',num2str(CR),'>0.1,没有通过组合一致性检查!

'])

return;

end

%添加命令用于显示有关结果:

(2)函数式m文件如下:

function[lamdawCICR]=p250fun(A)

%求A的最大特征根及归一化特征列向量、一致性指标值CI、一致性比率值CR

%A成对比较阵(正互反方阵)

%lamda最大特征根值

%wA的归一化特征列向量(权向量)

%CI一致性指标值

%CR一致性比率值

[lamdaw]=p264HE(A);%求A的最大特征根及归一化特征列向量

%随机一致性指标RI的数值(下标对应成对比较方阵的阶数):

RI=[000.580.901.121.241.321.411.451.491.51];

n=length(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层的数据。

包括:

特征向量(权向量)w;最大特征根λ;一致性指标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]):

clear;clc;formatcompact;formatshortg;

A=[0110;0011;0001;1000];%邻接矩阵

n=length(A);%方阵A的阶数

s=A*ones(n,1);disp(s');

fork=2:

8

s=A*s;disp(s');

end

[~,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

clear;clc;formatcompact;formatshortg;

A=[0110;0011;0001;1000];%邻接矩阵

n=length(A);%方阵A的阶数

s=A*ones(n,1);k=1;

whilelength(unique(s))

s=A*s;k=k+1;

end

k%k级得分向量

s'%元素不等的得分列向量

[~,kk]=sort(s,'descend');%降序

kk'%排名

(2)运行求元素互不相等的得分向量法程序。

运行结果(比较[272]):

(3)特征根法

对于n≥4个顶点的双向连通竞赛图,其邻接矩阵A为素阵(存在正整数r,使Ar>0),且有

其中,1为全1列向量,λ为最大实特征根且为正,s为其特征列向量。

%双向连通竞赛图的名次排序(特征根法)

%文件名:

p272_2.m

clear;clc;formatcompact;formatshortg;

A=[0110;0011;0001;1000];%邻接矩阵

[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)/sum(V(:

k));%最大特征根对应的特征列向量(归一化)

[~,k]=sort(s,'descend');%降序

s',k'

☆(3)运行特征根法程序。

给出运行结果(比较[272]):

2.2(验证)双向连通竞赛图(6顶点)的名次排序p270,272~273

6个顶点的竞赛图(教材p270中图1)如下:

该图的邻接矩阵为:

要求:

使用上题的程序。

(1)求出1~4级得分向量,并依据4级得分向量给出排名。

运行结果(比较[272]):

(2)运行求元素互不相等的得分向量法程序。

运行结果:

☆(3)运行特征根法程序。

运行结果(比较[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,'descend');%按降序排序(缺省为升序)

ni(k(1:

m))=ni(k(1:

m))+1;%排在前m个,加1

end

要求:

①在命令窗口分别调用以上函数求解(使用最佳定点或浮点格式(5位数字)控制命令formatshortg)。

②两个结果比较,合理吗?

☆题

(1)(20个代表席位)的调用及结果(比较[279]表1)。

☆题

(2)(21个代表席位)的调用及结果(比较[279]表1)。

3.2(验证)Q值方法p280~281

(教材:

8.4公平的席位分配)

某学校有甲乙丙三个系共有200名学生,其中甲系有103人,乙系有63人,丙系有34人。

(1)有20个代表席位,采用Q值法分别求出甲乙丙系的“席位分配结果”。

(2)有21个代表席位,采用Q值法分别求出甲乙丙系的“席位分配结果”。

下面是Q值法的求解函数:

function[qi,ni]=p280fun(p,n)

%p各单位人数(列向量)

%n总席位(标量)

%qi按比例分配的席位(列向量)

%ni参照惯例的结果(列向量)

qi=n*p/sum(p);

ni=fix(qi);

whilesum(ni)

Qi=p.^2./(ni.*(ni+1));%ni>0

[~,i]=max(Qi);%求最大值元素及下标

ni(i)=ni(i)+1;

end

要求:

①在命令窗口分别调用以上函数求解(使用最佳定点或浮点格式(5位数字)控制命令formatshortg)。

②两个结果比较,合理吗?

☆题

(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]****本节完****

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1