matlab第二次实验报告

  • 格式:doc
  • 大小:596.50 KB
  • 文档页数:16

下载文档原格式

  / 16
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数学建模实验》上机实验报告

班级:计算机35班

学号:2130505099

姓名:田博文

【实验一】

一上底面半径2米、下底面半径4米、高4米的圆台形水池内盛满了水,由池底一横截面积为0.001平方米的小孔放水。求在任意时刻的水面高度和将水放空所需的时间。

一、问题分析:

在dt很小一段时间内,水的流速v可以看成是不变的与水面高度h有关的函数,即v=gh

2;

在dt时间内流出的水量,可以近似的为一圆柱,

对应的圆柱高为dh;

由于容器下降的水量与流出的水量相等,令小孔面积为b,

即dV=π2r dh=bvdt;

可得dh与dt的关系为:dh=bvdt/(π2r);

根据相似三角形原理可得,

r=4-h/2;

初始条件有;

h(0)=4;

为表示方便,引入变量L=4-h

故r=2+L/2

二、代码:

T=0;

for L=0:0.001:4-0.001 %选取积分微元为0.001,即dh

V=0.001*pi*(2+(1/2*L))^2; %水面处的dV,b=0.001

t=V/(sqrt(2*(4-L)*9.8)*0.001) %dV与dt关系

T=T+t;

plot(T,(4-L),'red'); hold on

end

三、运行结果:

四、结论:

在任意时刻的水面高度和将水放空所需的时间如上图红线所示,横轴为时间,纵轴为水面高度。

【实验二】

有A、B、C三个场地,每一个场地都出产一定数量的原料,同时也消耗一定数量的产品,具体数据如下表所示。已知制成每吨产品需要消耗3吨原料,A、B两地,A、C两地和B、C两地之间的距离分别为150千米、100千米和200千米,假设每万吨原料运输1千米的运费为5000元,每万吨产品运输1千米的运费为6000元。由于地区条件的差异,在不同地区设厂的费用不同,由于条件的限制,在B处建厂的规模不能超过5万吨,问:在这三地如何建厂、规模建多大才能使得总费用最小?

地点年产原料(万

吨)

年销产品(万吨)生产费用(万元/万吨)

A 20 7 150

B 16 13 120

C 24 0 100

一、问题分析:

设nij为i地运往j地的原料量,mij为i地运往j地的产品量,设A地为1地,B 为2地,C地为3地。因制成每吨产品需要消耗3吨原料故设A、B、C三地生产规模分别为a、b、c 。

a=(n21+n31)/3,

b=(n12+n32)/3,

c=(n13+n23)/3,

约束条件为:

n12+n13==20,

n21+n23==16,

n31+n32==24, %年产原料

m21+m31==7,

m12+m32==13,

m13+m23==0, %年销产品

b<=5, %B处建厂规模不能超过5万吨

a==m12+m13,

b==m21+m23,

c==m31+m32, %保证三地原料无浪费

生产费用:

150a+120b+100c

运输原料费用:

0.5[150(n12+n21)+200(n23+n32)+100(n13+n31)]

运输产品费用:

0.6[150(m12+m21)+200(m23+m32)+100(m13+m31)] 可用矩阵实现

二、代码:

c=[75 75 50 50 100 100 150 240 210 120 160 220]; a=[1 -1 1 -1 0 0 3 3 0 0 0 0

-1 1 0 0 1 -1 0 0 3 3 0 0

0 0 -1 1 -1 1 0 0 0 0 3 3

0 0 0 0 0 0 0 0 1 1 0 0];

b=[20;16;24;5];

aeq=[0 0 0 0 0 0 0 0 1 0 1 0

0 0 0 0 0 0 0 1 0 1 0 1];

beq=[7;13];

vlb=zeros(12,1);

[x,final]=linprog(c,a,b,aeq,beq,vlb,[])

三、运行结果:

四、结论:

总方案为:A地生产7万吨,B地生产5万吨,C地生产8万吨,

总费用为:3485万元

【实验三】

27个立方形空盒排成3×3×3的三位列阵。如果三个盒子在同一条水平线上,或同一条垂直线上,或同一条对角线上,则认为三盒一线。这样的线共有49条:水平线18条,垂直线9条,水平面对角线6条,垂直面对角线12条,对角面对角线4条。现有白球13个,黑球14个,每个盒子中放入一个球,如何投放,使有单一色球的线数最少?

一、问题分析:

每个立方体按顺序编号,成为数组。要想表示单一色球,则盒中装白球置0,黑球置1,如此一来,一条线上均为单一色球则可表示为此线上三个立方体对应值为0或3。

引入函数,功能为算出每种投放方法对应的单一色球的线数。计算机模拟所有情况,最终比较得出单一色球线数最少的数组取值。则可得到白球黑球投放方案。

二、代码:(参考网络资源,自己编译的没通过……)

#include

int f(int x,int num)

{

if(x==0)

num=num+1;

else if(x==3)

num=num+1;

return num ;

}

int main()

{

int s=49;

int a[30],b[30];

for(int n1=1;n1<=14;n1++)

for(int n2=n1+1;n2<=15;n2++)

for(int n3=n2+1;n3<=16;n3++)

for(int n4=n3+1;n4<=17;n4++)

for(int n5=n4+1;n5<=18;n5++)

for(int n6=n5+1;n6<=19;n6++)

for(int n7=n6+1;n7<=20;n7++)

for(int n8=n7+1;n8<=21;n8++)

for(int n9=n8+1;n9<=22;n9++)

for(int n10=n9+1;n10<=23;n10++)

for(int n11=n10+1;n11<=24;n11++)

for(int n12=n11+1;n12<=25;n12++)

for(int n13=n12+1;n13<=26;n13++)

for(int n14=n13+1;n14<=27;n14++) { for(int l=1;l<=27;l++)

a[l]=0;

a[n1]=1;

a[n2]=1;