数学建模实验报告.docx
《数学建模实验报告.docx》由会员分享,可在线阅读,更多相关《数学建模实验报告.docx(15页珍藏版)》请在冰豆网上搜索。
数学建模实验报告
数学建模实验报告
一、实验目的
1、通过具体的题目实例,使学生理解数学建模的基本思想和方法,掌握数学建模分析和解决的基本过程。
2、培养学生主动探索、努力进取的的学风,增强学生的应用意识和创新能力,为今后从事科研工作打下初步的基础。
二、实验题目
(一)题目一
1、题目:
电梯问题有r个人在一楼进入电梯,楼上有n层。
设每个乘客在任何一层楼出电梯的概率相同,试建立一个概率模型,求直到电梯中的乘客下完时,电梯需停次数的数学期望。
2、问题分析
(1)由于每位乘客在任何一层楼出电梯的概率相同,且各种可能的情况众多且复杂,难于推导。
所以选择采用计算机模拟的方法,求得近似结果。
(2)通过增加试验次数,使近似解越来越接近真实情况。
3、模型建立
建立一个n*r的二维随机矩阵,该矩阵每列元素中只有一个为1,其余都为0,这代表每个乘客在对应的楼层下电梯(因为每个乘客只会在某一层下,故没列只有一个1)。
而每行中1的个数代表在该楼层下的乘客的人数。
再建立一个有n个元素的一位数组,数组中只有0和1,其中1代表该层有人下,0代表该层没人下。
例如:
给定n=8;r=6(楼8层,乘了6个人),则建立的二维随机矩阵及与之相关的应建立的一维数组为:
m=
001000
100000
000000
010000
000000
000001
000010
000100
c=11010111
4、解决方法(MATLAB程序代码):
n=10;r=10;d=1000;
a=0;
forl=1:
d
m=full(sparse(randint(1,r,[1,n]),1:
r,1,n,r));
c=zeros(n,1);
fori=1:
n
forj=1:
r
ifm(i,j)==1
c(j)=1;
break;
end
continue;
end
end
s=0;
forx=1:
n
ifc(x)==1
s=s+1;
end
continue;
end
a=a+s;
end
a/d
5、实验结果
ans=6.5150那么,当楼高11层,乘坐10人时,电梯需停次数的数学期望为6.5150。
(二)题目二
1、问题:
某厂生产甲乙两种口味的饮料,每百箱甲饮料需用原料6千克,工人10名,可获利10万元;每百箱乙饮料需用原料5千克,工人20名,可获利9万元.今工厂共有原料60千克,工人150名,又由于其他条件所限甲饮料产量不超过8百箱.问如何安排生产计划,即两种饮料各生产多少使获利最大.进一步讨论:
1)若投资0.8万元可增加原料1千克,问应否作这项投资.
2)若每百箱甲饮料获利可增加1万元,问应否改变生产计划.
2、问题分析
(1)题目中共有3个约束条件,分别来自原料量、工人数与甲饮料产量的限制。
(2)目标函数是求获利最大时的生产分配,应用MATLAB时要转换成求其相反数最小时的生产分配。
(3)扩展讨论部分只需将模型中部分参数修改即可。
3、模型建立
(1)设定变量:
x
(1)表示甲饮料产量,x
(2)表示甲饮料产量,z表示总获利。
(2)线性规划模型:
z=10*x
(1)+9*x
(2)
6*x
(1)+5*x
(2)<=60
10*x
(1)+20*x
(2)<=150
x
(1)<=8
4、解决方法(MATLAB程序代码)
c=[-10,-9];
A=[6,5;10,20;1,0];
b=[60,150,8];
x=linprog(c,A,b);
x=floor(x);
x
z=10*x
(1)+9*x
(2);
z
5、实验结果
x=
6
4
z=96
扩展1)将参数b改为[61,150,8],得到结果为:
x=
6
4
z=96
投资后,总利润并没有增加,而且花费了投资成本。
所以,不应该作这项投资。
扩展2)将参数c改为[-11,-9],得到结果为:
x=
7
2
z=88
每百箱甲饮料获利增加1万元,若按模型改变生产计划,则总利润反而会减小。
所以,不应改变生产计划。
(三)题目三
1、问题:
27个立方形排成3*3*3的三维阵列。
如果三个盒子在同一水平线上,或同一条垂直线上,或同一条对角线上,则认为三盒一线,这样的线共有49条:
水平线18条,垂直线9条,水平面对角线6条,垂直面对角线12条,对角面对角线4条。
现有白球13个,黑球14个,每个盒子中放入一球,如何投放,使有单一色球的线数最少?
2、问题分析
(1)题目属于排列组合问题,情况较多且规律性不强,因此难于使用理论推导,故考虑采用计算机模拟。
(2)根据题目信息,找出形成单一色球线的各种情况的一些规律,统计每种情况下单色球线数,并计录比较出最小情况。
3、模型建立
(1)建立一个27个单元的一维向量数组,分别代表27格方格单元,列出49种出现单色线的情况。
(2)建立计数器,记录每种情况下的单色球线数并比较出最少情况
4、解决方法(MATLAB程序)
由于程序较长,此处只给出部分代码。
建立模拟向量及计数器:
a=zeros(1,27);
sum=49;
insert=zeros(1,14);
统计各种情况单色线数:
fori=1:
9temp=linecolor(a(3*i)+a(3*i+1)+a(3*i+2));
iftemp>0templine=templine+1;end
end
fori=1:
9:
26
forj=1:
3
temp=linecolor(a(i)+a(i+3)+a(i+6));
i=i+1;
iftemp>0templine=templine+1;end
end
i=i-3;
end
fori=1:
9
temp=linecolor(a(i)+a(i+9)+a(i+18));
iftemp>0
templine=templine+1;end
end
fori=1:
26
temp1=linecolor(a(i)+a(i+4)+a(i+8));
temp2=linecolor(a(i+2)+a(i+4)+a(i+6));
iftemp1>0templine=templine+1;end
iftemp2>0templine=templine+1;end
end
fori=1:
3:
7
temp1=linecolor(a(i)+a(i+10)+a(i+20));
temp2=linecolor(a(i+2)+a(i+10)+a(i+18));
iftemp1>0templine=templine+1;end
iftemp2>0templine=templine+1;end
end
fori=1:
3
temp1=linecolor(a(i)+a(i+12)+a(i+24));
temp2=linecolor(a(i+6)+a(i+12)+a(i+18));
iftemp1>0templine=templine+1;end
iftemp2>0templine=templine+1;end
endtemp1=linecolor(a(0)+a(13)+a(26));
temp2=linecolor(a(8)+a(13)+a(18));
temp3=linecolor(a
(2)+a(13)+a(24));
temp4=linecolor(a(6)+a(13)+a(20));
iftemp1>0templine=templine+1;end
iftemp2>0templine=templine+1;end
iftemp3>0templine=templine+1;end
iftemp4>0templine=templine+1;end
子函数:
functionr=linecolor(n)
ifn==3||n==0
r=1;
else
r=0;
end
return;
5、实验结果
sum=4
insert=123581215181921222527
即最少单色球线数为4条,其中放黑球单元为:
123581215181921222527。
(四)题目四
1、问题:
在某海域测得一些点(x,y)处的水深z由下表给出,穿的吃水深度为5英尺,在矩形区域(75,200)*(-50,150)里的哪些地方船要避免进入。
2、问题分析
分析该区域内各个地方的水深情况,比较各点的水深与船的吃水深度,深度小于或等于船的吃水深度的地方即为船要避免进入的危险区域。
3、模型建立
(1)利用插值法,得到海底各处深度的分布情况,并画出海底地貌图像。
(2)通过与船吃水深度的条件比较,得到危险区域的平面图。
4、解决方法(MATLAB程序)
画出此区域海底深度图像:
x=[129,140,103.5,88,185.5,195,105,157.5,107.5,77,81,162,162,117.5];
%x=sort(x);
y=[7.5,141.5,23,147,22.5,137.5,85.5,-6.5,-81,3,56.5,-66.5,84,-33.5];
%y=sort(y);
z=[-4,-8,-6,-8,-6,-8,-8,-9,-9,-8,-8,-9,-4,-9];
[X,Y,Z]=griddata(x,y,z,linspace(75,200)',linspace(-75,150),'v4');
surf(X,Y,Z)
画出深度为5英尺的等深线:
contour(X,Y,Z,[-5,-5],'r.')
5、实验结果
下图中红色等深线内为危险区域。
(五)题目五
1、问题:
一位四年级大学生正在从若干个招聘单位中挑选合适的工作岗位,他考虑的主要因素包括发展前景、经济收入、单位信誉、地理位置等。
试建立模型给他提出决策建议。
2、问题分析
(1)这是一个决策问题,是半定性、半定量的。
因此,考虑使用层次分析法进行分析解决。
(2)将问题分解为若干层次和若干因素,在各因素之间进行简单的比较和计算,得出不同方案的权重。
3、模型建立
(1)假设设定:
有3家公司,分别是XX、腾讯与阿里巴巴。
选择中考虑的主要因素为:
发展前景、经济收入、单位信誉和地理位置。
分别用x1、x2、x3、x4代表这四个因素,y代表综合评价参数,w代表权值向量。
所以,综合评价方程模型可设为:
y=w1x1+w2x2+w3x3+w4x4
(2)主要数据:
(将评价转换成百分制分数)
公司\因素
发展前景
经济收入
单位信誉
地理位置
XX
93
4000元/月(80)
90
北京(85)
腾讯
91
4400元/月(88)
86
深圳(88)
阿里巴巴
94
3800元/月(76)
89
杭州(90)
3)层次分析图:
4、解决方法
赋值:
x1/x2=3/4;
x1/x3=3/2;
x1/x4=3/2;
x2/x3=2;
x2/x4=2;
x3/x4=1.
则该问题的判断矩阵为:
A=
1,3/4,3/2,3/2
4/3,1,2,2
2/3,1/2,1,1
2/3,1/2,1,1
经过一下MATLAB程序可求出各因数在综合评价中的权值:
A=[1,3/4,3/2,3/2;4/3,1,2,2;2/3,1/2,1,1;2/3,1/2,1,1];
[n,n]=size(A);
p=ones(n,100);
q=ones(n,100);
m=zeros(1,100);
m
(1)=max(p(:
1));
q(:
1)=p(:
1);
p(:
2)=A*q(:
1);
m
(2)=max(p(:
2));
q(:
2)=p(:
2)/m
(2);
l=0.0001;i=2;k=abs(m
(2)-m
(1));
whilek>p
i=i+1;
p(:
i)=A*q(:
i-1);
m(i)=max(p(:
i));
q(:
i)=p(:
i)/m(i);
k=abs(m(i)-m(i-1));
end
a=sum(q(:
i));
w=q(:
i)/a;
t=m(i);
w
5、实验结果
综合评价的权值向量为:
w=0.2727
0.3636
0.1818
0.1818
所以综合评价方程为:
y=0.2727x1+0.3636x2+0.1818x3+0.1818x4.
那么三家公司的综合评价得分为:
XX:
y=0.2727*93+0.3636*80+0.1818*90+0.1818*85.
=86.2641
腾讯:
y=0.2727*91+0.3636*88+0.1818*86+0.1818*88.
=88.4457
阿里巴巴:
y=0.2727*94+0.3636*76+0.1818*89+0.1818*90.
=85.8096
结果显示,腾讯的评价分数最高。
所以,建议该生选择腾讯集团作为自己未来的工作单位最佳。
三、实验总结
通过本次实验,我对数学建模有了根深的理解,特别是对数学建模的过程和思想有了更清晰的认识。
这次实验,提高了我的分析问题及解决问题的能力,以及将所学知识、方法及重要工具灵活运用的实际中的应用能力。
实验过程中,根据不同的题目,我应用了多种数学建模的思想方法,并发挥计算机仿真在数学建模处理问题时的巨大优势。
但是,在题目的解决中,还存在这一些问题,如:
问题理解不全面、模型建立不完善以及问题解答不准确等。
对此,请老师批评指正,我也会继续努力加以改正完善。
而且,我进一步感觉到数学建模作为一个强大的工具在实际生活中解决问题时起到的重要作用、巨大优势和实际意义
四、参考文献
数学建模实验(第2版).周义仓、赫孝良编著.西安西安交通大学出版社,2007.8
数学实验.李继成主编.北京高等教育出版社,2006.10