数学建模实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数学建模实验报告
一、实验目的
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 =
0 0 1 0 0 0
1 0 0 0 0 0
0 0 0 0 0 0
0 1 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 1
0 0 0 0 1 0
0 0 0 1 0 0
c = 1 1 0 1 0 1 1 1
4、解决方法(MATLAB程序代码):
n=10;r=10;d=1000;
a=0;
for l=1:d
m=full(sparse(randint(1,r,[1,n]),1:r,1,n,r));
c=zeros(n,1);
for i=1:n
for j=1:r
if m(i,j)==1
c(j)=1;
break;
end
continue;
end
end
s=0;
for x=1:n
if c(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);
统计各种情况单色线数:
for i=1:9
temp=linecolor(a(3*i)+a(3*i+1)+a(3*i+2));
if temp>0 templine=templine+1; end
end
for i=1:9:26
for j=1:3
temp=linecolor(a(i)+a(i+3)+a(i+6));
i=i+1;
if temp>0 templine=templine+1; end
end
i=i-3;
end
for i=1:9