数学建模之锁具装箱问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数学建模之锁具装箱
问题
Revised on November 25, 2020
P181 锁具装箱
1.某厂生产一种弹子锁具,每个锁具有n个槽,每个槽的高度从{1,2,3,4}
这4个数(单位略)中任取一个,限制至少有一个相邻的槽高之差等于3,且至少有3个不同的槽高,每个槽的高度取遍这4个数且满足上面这两个限制时生产出一批锁(例如,当n等于3时,3个槽高为1,4,2的锁符合要求,而3个槽高为1,4,4的锁不满足要求)。求一批锁的把数。
解:取不同的n的值,通过matlab编程,求出对应的锁的把数
(1)当n=3时:
源程序:
s=0;n=3;
for j1=1:n+1
for j2=1:n+1
for j3=1:n+1
a1=j1;a2=j2;a3=j3;
amax=max([a1,a2,a3]');
amin=min([a1,a2,a3]');
numbers=(amax-a1)*(a1-amin)+(amax-a2)*(a2-
amin)+(amax-a3)*(a3-amin);
neighbors=max([abs(a1-a2),abs(a2-a3)]');
if numbers>
if neighbors==3
s=s+1;
end
end
end
end
end
s
输出结果:
s =8
所以当每个锁具有3个槽时,满足要求的这批锁的把数为8把。
(2)当n=4时:
源程序:
s=0;n=3;
for j1=1:n+1
for j2=1:n+1
for j3=1:n+1
for j4=1:n+1
a1=j1;a2=j2;a3=j3;a4=j4;
amax=max([a1,a2,a3,a4]');
amin=min([a1,a2,a3,a4]');
numbers=(amax-a1)*(a1-amin)+(amax-a2)*(a2-amin)+(amax-a3)*(a3-amin)+(amax-a4)*(a4-amin);
neighbors=max([abs(a1-a2),abs(a2-a3),abs(a3-a4)]');
if numbers>
if neighbors==3
s=s+1;
end
end
end
end
end
end
s
输出结果:
s =64
所以当每个锁具有4个槽时,满足要求的这批锁的把数为64把。(3)当n=5时:
源程序:
s=0;n=3;
for j1=1:n+1
for j2=1:n+1
for j3=1:n+1
for j4=1:n+1
for j5=1:n+1
a1=j1;a2=j2;a3=j3;a4=j4;a5=j5;
amax=max([a1,a2,a3,a4,a5]');
amin=min([a1,a2,a3,a4,a5]');
numbers=(amax-a1)*(a1-amin)+(amax-a2)*(a2-amin)+(amax-a3)*(a3-amin)+(amax-a4)*(a4-amin)+(amax-a5)*(a5-amin);
neighbors=max([abs(a1-a2),abs(a2-a3),abs(a3-a4),abs(a4-a5)]');
if numbers>
if neighbors==3
s=s+1;
end
end
end
end
end
end
end
s
输出结果:
s =360
所以当每个锁具有5个槽时,满足要求的这批锁的把数为360把。
(4)当n=6时:
源程序:
s=0;n=3;
for j1=1:n+1
for j2=1:n+1
for j3=1:n+1
for j4=1:n+1
for j5=1:n+1
for j6=1:n+1
a1=j1;a2=j2;a3=j3;a4=j4;a5=j5;a6=j6;
amax=max([a1,a2,a3,a4,a5,a6]');
amin=min([a1,a2,a3,a4,a5,a6]');
numbers=(amax-a1)*(a1-amin)+(amax-a2)*(a2-amin)+(amax-a3)*(a3-amin)+(amax-a4)*(a4-amin)+(amax-a5)*(a5-amin)+(amax-a6)*(a6-amin); neighbors=max([abs(a1-a2),abs(a2-a3),abs(a3-a4),abs(a4-a5),abs(a5-a6)]');
if numbers>
if neighbors==3
s=s+1;
end
end
end
end
end
end
end
end
s
输出结果:
s =1776
所以当每个锁具有6个槽时,满足要求的这批锁的把数为1776把。
(5)当n=7时:
源程序:
s=0;n=3;
for j1=1:n+1
for j2=1:n+1
for j3=1:n+1
for j4=1:n+1
for j5=1:n+1
for j6=1:n+1
for j7=1:n+1
a1=j1;a2=j2;a3=j3;a4=j4;a5=j5;a6=j6;a7=j7;
amax=max([a1,a2,a3,a4,a5,a6,a7,]');
amin=min([a1,a2,a3,a4,a5,a6,a7]');
numbers=(amax-a1)*(a1-amin)+(amax-a2)*(a2-amin)+(amax-a3)*(a3-amin)+(amax-a4)*(a4-amin)+(amax-a5)*(a5-amin)+(amax-a6)*(a6-
amin)+(amax-a7)*(a7-amin);
neighbors=max([abs(a1-a2),abs(a2-a3),abs(a3-a4),abs(a4-a5),abs(a5-a6),abs(a6-a7)]');
if numbers>
if neighbors==3
s=s+1;
end
end
end
end
end
end
end
end
end
s
输出结果:
s =8216
所以当每个锁具有7个槽时,满足要求的这批锁的把数为8216把。
(6)当n=8时:
源程序: