西安交通大学数学建模实验报告.docx

上传人:b****4 文档编号:4897008 上传时间:2022-12-11 格式:DOCX 页数:18 大小:112.22KB
下载 相关 举报
西安交通大学数学建模实验报告.docx_第1页
第1页 / 共18页
西安交通大学数学建模实验报告.docx_第2页
第2页 / 共18页
西安交通大学数学建模实验报告.docx_第3页
第3页 / 共18页
西安交通大学数学建模实验报告.docx_第4页
第4页 / 共18页
西安交通大学数学建模实验报告.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

西安交通大学数学建模实验报告.docx

《西安交通大学数学建模实验报告.docx》由会员分享,可在线阅读,更多相关《西安交通大学数学建模实验报告.docx(18页珍藏版)》请在冰豆网上搜索。

西安交通大学数学建模实验报告.docx

西安交通大学数学建模实验报告

数学建模实验报告

儿童受教育水平的研究

解决思路

i.第一问

X1(N),X2(N),X3(N)分别代表第N代中,教育程度分别为E,S,C的比例。

则第N代与第N-1代有以下关系:

X1(N)=0.6X1(N-1)+0.4X2(N-1)+0.1X3(N-1);

X2(N)=0.3X1(N-1)+0.4X2(N-1)+0.2X3(N-1);

X3(N)=0.1X1(N-1)+0.2X2(N-1)+0.7X3(N-1);

X(N)=

X(0);

ii.第二问

X1(N),X2(N),X3(N)分别代表第N代中,教育程度分别为E,S,C的比例。

则第N代与第N-1代有以下关系:

X1(N)=0.6X1(N-1)+0.4X2(N-1);

X2(N)=0.3X1(N-1)+0.4X2(N-1);

X3(N)=0.1X1(N-1)+0.2X2(N-1)+X3(N-1);

X(N)=

X(0);

1)主要程序

第一问

L=[0.60.40.1;0.30.40.2;0.10.20.7];%传递方程

x=[0.4;0.4;0.2];%S的第一代的受教育水平

M=L*L*x%S的第三代的受教育水平

第二问

L=[0.60.40;0.30.40;0.10.21];%传递方程

x=[0.4;0.4;0.2];%S的第一代的受教育水平

k=2;

M=L*x;

s=[x';M';];%记录S后代中各种类型的比率

whileM(3,1)<0.999

M=L*M;

s=[s;M'];

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');

gtext('S');

gtext('C');

xlabel('generation');

ylabel('rate');

title('S类子女受高等教育水平比率的变化图');

s

C代

L=[0.60.40;0.30.40;0.10.21];%´«µÝ·½³Ì

x=[0.6;0.3;0.1];%cµÄµÚÒ»´úµÄÊܽÌÓýˮƽ

k=2;

M=L*x;

s=[x';M';];%¼Ç¼cºó´úÖи÷ÖÖÀàÐ͵ıÈÂÊ

whileM(3,1)<0.999

M=L*M;

s=[s;M'];

k=k+1;

end

holdon;

t1=[1:

1:

47];

t0=0:

0.1:

47;

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');

gtext('S');

gtext('C');

xlabel('generation');

ylabel('rate');

title('CÀà×ÓÅ®ÊܸߵȽÌÓýˮƽ±ÈÂʵı仯ͼ');

s

k

2)结果输出

i.S类

k=

46

ii.C类

k=

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

Pleaseinputthescaleofthesamples

1000

therateis6.170000e-001

Pleaseinputthescaleofthesamples

10000

therateis5.938000e-001

Pleaseinputthescaleofthesamples

100000

therateis5.994300e-001

Pleaseinputthescaleofthesamples

1000000

therateis5.998900e-001

 

3.流水问题

1)解决思路

上液面水失去的体积等于小孔流出的体积,对其两边微分,求出微分方程。

描点显示液面高度的变化情况。

2)主要程序

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;];

end

hh

fprintf('经过%d秒之后,容其中的水全部流出\n',t0);

3)结果输出

经过7445秒之后,容其中的水全部流出

4.立方体问题

1)解决思路

i.递归生成十三个0与十四个1的全排列。

ii.将每种排列从一维数组转为三维数组。

iii.分别判定每一种数组的条数

iv.比较出最小值

v.根据最小值搜索所有的情况

2)主要程序

#include

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<3;j++)

for(k=0;k<3;k++)

{

D3[i][j][k]=D1[x];

x++;

}

}

voidprint3d(intd3[3][3][3])//打印三维数组

{

inti,j,k;

printf("第1层第2层第3层\n");

for(i=0;i<3;i++)

{

for(k=0;k<3;k++)

{

for(j=0;j<3;j++)

{

printf("%d",d3[i][j][k]);

}

printf("");

}

printf("\n");

}

}

intjudge(inta[3][3][3])//判断

{

inti,j,sum;

sum=0;

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

{

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=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++;

printf("第%d种情况\n",count);

print3d(s);

}

}

elsefor(i=0;i

if(!

i||P[i]!

=P[i-1])

{

intc1=0,c2=0;

for(j=0;j

for(j=0;j

if(c1

{

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);

printf("单一色球的最小数量为%d个\n",min);

return0;

}

3)结果输出

5.锁具装箱

1)解决思路

循环生成每一个尺的长度,判断每一种情况是否合乎要求,记录合乎要求的种类的数目。

2)主要程序

s=0;

forj1=1:

4

forj2=1:

4

forj3=1:

4

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;

end

end

end

end

end

fprintf('thereare%dkindsofkeys(3teeth)\n',s);

s=0;

forj1=1:

4

forj2=1:

4

forj3=1:

4

forj4=1:

4

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);

if(numbers>0.5)

if(abs(a1-a2)==3|abs(a2-a3)==3|abs(a3-a4)==3)

s=s+1;

end

end

end

end

end

end

fprintf('thereare%dkindsofkeys(4teeth)\n',s);

s=0;

forj1=1:

4

forj2=1:

4

forj3=1:

4

forj4=1:

4

forj5=1:

4

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);

if(numbers>0.5)

if(abs(a1-a2)==3|abs(a2-a3)==3|abs(a3-a4)==3|abs(a4-a5)==3)

s=s+1;

end

end

end

end

end

end

end

fprintf('thereare%dkindsofkeys(5teeth)\n',s);

s=0;

forj1=1:

4

forj2=1:

4

forj3=1:

4

forj4=1:

4

forj5=1:

4

forj6=1:

4

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);

if(numbers>0.5)

if(abs(a1-a2)==3|abs(a2-a3)==3|abs(a3-a4)==3|abs(a4-a5)==3|abs(a5-a6)==3)

s=s+1;

end

end

end

end

end

end

end

end

fprintf('thereare%dkindsofkeys(6teeth)\n',s);

s=0;

forj1=1:

4

forj2=1:

4

forj3=1:

4

forj4=1:

4

forj5=1:

4

forj6=1:

4

forj7=1:

4

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);

if(numbers>0.5)

if(abs(a1-a2)==3|abs(a2-a3)==3|abs(a3-a4)==3|abs(a4-a5)==3|abs(a5-a6)==3)

s=s+1;

end

end

end

end

end

end

end

end

end

fprintf('thereare%dkindsofkeys(7teeth)\n',s);

s=0;

forj1=1:

4

forj2=1:

4

forj3=1:

4

forj4=1:

4

forj5=1:

4

forj6=1:

4

forj7=1:

4

forj7=1:

4

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);

if(numbers>0.5)

if(abs(a1-a2)==3|abs(a2-a3)==3|abs(a3-a4)==3|abs(a4-a5)==3|abs(a5-a6)==3)

s=s+1;

end

end

end

end

end

end

end

end

end

end

fprintf('thereare%dkindsofkeys(8teeth)\n',s);

3)结果输出

thereare8kindsofkeys(3teeth)

thereare64kindsofkeys(4teeth)

thereare360kindsofkeys(5teeth)

thereare1776kindsofkeys(6teeth)

thereare7104kindsofkeys(7teeth)

thereare28416kindsofkeys(8teeth)

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

当前位置:首页 > 求职职场 > 简历

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

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