西安交通大学数学建模实验报告文档格式.docx
《西安交通大学数学建模实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《西安交通大学数学建模实验报告文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
M'
];
%记录S后代中各种类型的比率
whileM(3,1)<
0.999
M=L*M;
s=[s;
k=k+1;
end
holdon;
t1=[1:
1:
46];
t0=0:
0.1:
46;
v1=s(:
3);
cz1=interp1(t1,v1,t0);
v2=s(:
2);
cz2=interp1(t1,v2,t0);
v3=s(:
1);
cz3=interp1(t1,v3,t0);
plot(t0,cz1,'
r'
);
plot(t0,cz2,'
b'
plot(t0,cz3,'
g'
gtext('
E'
S'
C'
xlabel('
generation'
ylabel('
rate'
title('
S类子女受高等教育水平比率的变化图'
s
C代
%´
«
µ
Ý
·
½
³
Ì
x=[0.6;
0.3;
0.1];
%cµ
Ä
Ú
Ò
»
´
ú
Ê
Ü
Ó
ý
Ë
®
Æ
%¼
Ç
Â
¼
cº
ó
Ö
Ð
¸
÷
À
à
Í
±
È
47];
47;
CÀ
×
Å
ß
ä
¯
'
k
2)结果输出
i.S类
k=
46
ii.C类
47
1.等车问题
1)解决思路
生成随机数,判断时间。
2)主要程序
n=input('
Pleaseinputthescaleofthesamples'
a=60*rand(1,n);
a=a-floor(a./5)*5;
k=0;
fori=1:
n
if(a(1,i)>
2)
k=k+1;
end
end
fprintf('
therateis%d\n'
k/n);
3)结果输出
Pleaseinputthescaleofthesamples
100
therateis5.900000e-001
1000
therateis6.170000e-001
10000
therateis5.938000e-001
100000
therateis5.994300e-001
1000000
therateis5.998900e-001
3.流水问题
上液面水失去的体积等于小孔流出的体积,对其两边微分,求出微分方程。
描点显示液面高度的变化情况。
h=8;
%初始水面高度
hh=[8;
%记录水面高度的数组
dt=5;
%时间间隔
t0=0;
tt=[0;
%记录时间间隔的数组
while(h>
0.001)
A=pi*(8+h)*(8+h)/64;
dh=-0.001*sqrt(2*9.8*h)/A*dt;
h=h+dh;
hh=[hh,h;
t0=t0+dt;
tt=[tt,t0;
hh
fprintf('
经过%d秒之后,容其中的水全部流出\n'
t0);
经过7445秒之后,容其中的水全部流出
4.立方体问题
i.递归生成十三个0与十四个1的全排列。
ii.将每种排列从一维数组转为三维数组。
iii.分别判定每一种数组的条数
iv.比较出最小值
v.根据最小值搜索所有的情况
#include<
stdio.h>
intmin=49;
//记录最小的边数
intcount=0;
//记录符合条件的方法的个数
voidreshape(intD1[27],intD3[3][3][3])//将一维数组转化为三维数组
{
inti,j,k;
intx=0;
for(i=0;
i<
3;
i++)
for(j=0;
j<
j++)
for(k=0;
k<
k++)
{
D3[i][j][k]=D1[x];
x++;
}
}
voidprint3d(intd3[3][3][3])//打印三维数组
printf("
第1层第2层第3层\n"
{
for(k=0;
{
for(j=0;
printf("
%d"
d3[i][j][k]);
printf("
"
}
printf("
\n"
}
intjudge(inta[3][3][3])//判断
inti,j,sum;
sum=0;
if(a[i][j][0]==a[i][j][1]&
&
a[i][j][1]==a[i][j][2])sum++;
//9条竖线的判断
if(a[i][0][j]==a[i][1][j]&
a[i][1][j]==a[i][2][j])sum++;
//9条左右方向的横线的判断
if(a[0][i][j]==a[1][i][j]&
a[1][i][j]==a[2][i][j])sum++;
//9条前后方向的横线的判断
if(a[i][0][0]==a[i][1][1]&
a[i][1][1]==a[i][2][2])sum++;
//3条左低右高的正面的面对角线
if(a[0][i][0]==a[1][i][1]&
a[1][i][1]==a[2][i][2])sum++;
//3条左高右低的侧面的面对角线
if(a[0][0][i]==a[1][1][i]&
a[1][1][i]==a[2][2][i])sum++;
//3条左高右低的上面的面对角线
if(a[i][2][0]==a[i][1][1]&
a[i][1][1]==a[i][0][2])sum++;
if(a[2][i][0]==a[1][i][1]&
a[1][i][1]==a[0][i][2])sum++;
if(a[2][0][i]==a[1][1][i]&
a[1][1][i]==a[0][2][i])sum++;
if(a[0][0][0]==a[1][1][1]&
a[1][1][1]==a[2][2][2])sum++;
//4条体对角线
if(a[2][0][0]==a[1][1][1]&
a[1][1][1]==a[0][2][2])sum++;
if(a[0][2][0]==a[1][1][1]&
a[1][1][1]==a[2][0][2])sum++;
if(a[2][2][0]==a[1][1][1]&
a[1][1][1]==a[0][0][2])sum++;
returnsum;
voidcompare(intt)//比较
if(t<
min)
min=t;
voidcube_permutation(intn,int*P,int*A,intcur)//递归生成全部不同的排列
inti,j;
if(cur==n)
ints[3][3][3];
reshape(A,s);
compare(judge(s));
if(judge(s)==4)
count++;
第%d种情况\n"
count);
print3d(s);
elsefor(i=0;
i<
n;
if(!
i||P[i]!
=P[i-1])
intc1=0,c2=0;
cur;
j++)if(A[j]==P[i])c1++;
j++)if(P[i]==P[j])c2++;
if(c1<
c2)
A[cur]=P[i];
cube_permutation(n,P,A,cur+1);
intmain()
intP[27]={1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
intA[27];
cube_permutation(27,P,A,0);
单一色球的最小数量为%d个\n"
min);
return0;
5.锁具装箱
循环生成每一个尺的长度,判断每一种情况是否合乎要求,记录合乎要求的种类的数目。
s=0;
forj1=1:
4
forj2=1:
forj3=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);
if(numbers>
0.5)
if(abs(a1-a2)==3|abs(a2-a3)==3)
s=s+1;
thereare%dkindsofkeys(3teeth)\n'
s);
forj4=1:
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);
if(abs(a1-a2)==3|abs(a2-a3)==3|abs(a3-a4)==3)
thereare%dkindsofkeys(4teeth)\n'
forj5=1:
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);
if(abs(a1-a2)==3|abs(a2-a3)==3|abs(a3-a4)==3|abs(a4-a5)==3)
thereare%dkindsofkeys(5teeth)\n'
forj6=1:
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);
if(abs(a1-a2)==3|abs(a2-a3)==3|abs(a3-a4)==3|abs(a4-a5)==3|abs(a5-a6)==3)
thereare%dkindsofkeys(6teeth)\n'
forj7=1:
end
thereare%dkindsofkeys(7teeth)\n'
thereare%dkindsofkeys(8teeth)\n'
thereare8kindsofkeys(3teeth)
thereare64kindsofkeys(4teeth)
thereare360kindsofkeys(5teeth)
thereare1776kindsofkeys(6teeth)
thereare7104kindsofkeys(7teeth)
thereare28416kindsofkeys(8teeth)