matlab第二次实验报告Word下载.docx
- 文档编号:5744198
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:20
- 大小:343.29KB
matlab第二次实验报告Word下载.docx
《matlab第二次实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《matlab第二次实验报告Word下载.docx(20页珍藏版)》请在冰点文库上搜索。
t=V/(sqrt(2*(4-L)*9.8)*0.001)%dV与dt关系
T=T+t;
plot(T,(4-L),'
red'
);
holdon
end
3、运行结果:
4、结论:
在任意时刻的水面高度和将水放空所需的时间如上图红线所示,横轴为时间,纵轴为水面高度。
【实验二】
有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
100
1、问题分析:
设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=[75755050100100150240210120160220];
a=[1-11-100330000
-11001-1003300
00-11-11000033
000000001100];
b=[20;
16;
24;
5];
aeq=[000000001010
000000010101];
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<
studio.h>
intf(intx,intnum)
{
if(x==0)
num=num+1;
elseif(x==3)
num=num+1;
returnnum;
}
intmain()
{
ints=49;
inta[30],b[30];
for(intn1=1;
n1<
=14;
n1++)
for(intn2=n1+1;
n2<
=15;
n2++)
for(intn3=n2+1;
n3<
=16;
n3++)
for(intn4=n3+1;
n4<
=17;
n4++)
for(intn5=n4+1;
n5<
=18;
n5++)
for(intn6=n5+1;
n6<
=19;
n6++)
for(intn7=n6+1;
n7<
=20;
n7++)
for(intn8=n7+1;
n8<
=21;
n8++)
for(intn9=n8+1;
n9<
=22;
n9++)
for(intn10=n9+1;
n10<
=23;
n10++)
for(intn11=n10+1;
n11<
=24;
n11++)
for(intn12=n11+1;
n12<
=25;
n12++)
for(intn13=n12+1;
n13<
=26;
n13++)
for(intn14=n13+1;
n14<
=27;
n14++)
{for(intl=1;
l<
l++)
a[l]=0;
a[n1]=1;
a[n2]=1;
a[n3]=1;
a[n4]=1;
a[n5]=1;
a[n6]=1;
a[n7]=1;
a[n8]=1;
a[n9]=1;
a[n10]=1;
a[n11]=1;
a[n12]=1;
a[n13]=1;
a[n14]=1;
intnum=0;
for(intm1=0;
m1<
=8;
m1++)
num=f(a[3*m1+1]+a[3*m1+2]+a[3*m1+3],num);
for(intm2=0;
m2<
=2;
m2++)
for(intm3=1;
m3<
=3;
m3++)
num=f(a[9*m2+m3]+a[9*m2+m3+3]+a[9*m2+m3+6],num);
for(intm4=1;
m4<
m4++)
for(intm5=1;
m5<
m5++)
num=f(a[(m4-1)*3+m5]+a[(m4-1)*3+m5+9]+a[(m4-1)*3+m5+18],num];
for(intm6=0;
m6<
m6++)
{num=f(a[9*m6+1]+a[9*m6+5]+a[9*m6+9],num);
num=f(a[9*m6+3]+a[9*m6+5]+a[9*m6+7],num);
for(intm7=0;
m7<
=4;
m7++)
if(m7!
=2)
num=f(a[2*m7+1]+a[14]+a[27-2*m7],num);
for(intm8=1;
m8<
m8++){num=f(a[(m8-1)*3+1]+a[(m8-1)*3+11]+a[(m8-1)*3+21],num);
num=f(a[(m8-1)*3+3]+a[(m8-1)*3+11]+a[(m8-1)*3+19],num);
for(intm9=1;
m9<
m9++){
num=f(a[m9]+a[m9+12]+a[m9+24],num);
num=f(a[m9+6]+a[m9+12]+a[m9+18],num);
if(num<
s)
{s=num;
for(intn=1;
n<
28;
n++)
b[n]=a[n];
}
cout<
<
"
小方格编号<
endl;
放球颜色"
for(intn=1;
cout<
n;
if(b[n]==1)
cout<
黑"
else
白"
当按以上的方式放球时,单一色球线数最少,最少为"
s<
return0;
(没运行出来,参考网上资料得到的结果)
【实验四】
某工厂生产一种弹子锁具,每个锁具有n个槽,每个槽的高度为{1,2,3,4},中之一数,限制至少有一个相邻的槽高之差等于3,且至少有3个不同的槽高,每个槽的高度取遍这4个数且满足上面这两个限制时生产出一批锁。
求一批锁的把数。
由于n未知,不同的n锁的数量也不同。
用计算机模拟的方法,在循环中将不符合限制条件的除去,累计总数。
n=5时,代码如下:
s=0;
m=4;
forj1=1:
m
forj2=1:
forj3=1:
forj4=1:
forj5=1:
m
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);
t=max([abs(a1-a2),abs(a2-a3),abs(a3-a4),abs(a4-a5)]'
ifnumbers>
0.5
ift==3
s=s+1;
end
s
n=7时,代码如下:
forj6=1:
forj7=1:
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);
t=max([abs(a1-a2),abs(a2-a3),abs(a3-a4),abs(a4-a5),abs(a5-a6),abs(a6-a7)]'
s
三、运行结果:
以5、7为例,n=5时,有360把;
n=7时,有8216把。
【实验五】
在某海域测得一些点(x,y)处的水深z由下表给出,船的吃水深
度为5英尺,在矩形区域(75,200)*(-50,150)里的哪些地方船要避免进入。
x
y
z
129140103.588185.5195105
7.5141.52314722.5137.585.5
4868688
157.5107.57781162162117.5
-6.5-81356.5-66.584-33.5
9988949
因为数据不够完备,所以为了能合理完整地补全数据,采取插值拟合法。
第一步,输入基点数据;
第二步,采用三次插值法在矩形区域(75,200)*(-50,150)里做二维插值;
第三步,作出海底曲面图;
第四步,作出z=5的等高线。
x=[129140103.588185.5195105.5157.5107.57781162162117.5];
y=[7.5141.52314722.5137.585.5-6.5-81356.5-66.584-33.5];
z=[-4-8-6-8-6-8-8-9-9-8-8-9-4-9];
cx=75:
0.5:
200;
cy=-50:
150;
cz=griddata(x,y,z,cx,cy'
'
cubic'
)
subplot(1,2,1),meshz(cx,cy,cz)
xlabel('
x'
),ylabel('
y'
),zlabel('
z'
)
subplot(1,2,2),[c,h]=contour(cx,cy,cz);
clabel(c,h,-5)
在矩形区域(75,200)×
(-50,150)里如上图等高线-5m内(即<
-5m)的地方船要避免进入。
【心得体会】
通过多次练习,我深刻体会到数学建模属于一门应用数学,学习这门课要求我们学会如何将实际问题经过分析、简化转化为个数学问题,然后用适用的数学方法去解决。
需要经历提出模型,验证模型,修改模型,完善模型等步骤最终达到解决问题的目的。
其中遇到的困难多样,需要很灵活地处理,因此编程能力、语言功底都很重要。
Mathematica和Matlab都可以实现某个方案,不同之处在于对不同的问题,处理的方法繁琐程度不一样。
软件掌握多少都不算多,类似的软件还有MathCAD、Maple等,关键在处理具体问题的时候那种软件更适合,或者那种软件处理问题普遍性强,而Mathematica和Matlab分别代表了符号计算和数据处理(或者数值计算)的两个方面普遍适用的软件。
个人感觉Mathematica符号计算强,便于公式推导和函数式制图。
Mathematica界面的窗口和菜单栏是分离式的,便于边计算边对照查看文档,其公式可以复制为公式格式,可直接粘贴于Word等文本中,也便于以公式的形式输入,但该功能在大量符号计算中可能作用不大,编写代码的执行效率肯定比手动输入公式要高的多。
输入和输出都是在同一个界面,便于查看每条代码的结果。
函数使用方式丰富,调用函数可以编写专门的文件,也可直接在输入界面中调用。
可把想到的代码都写成函数的形式,包括各种形式的代码,便于调用。
将所有的算法最终转化为表达式,以函数的形式体现。
例如绘图将表达式的变量范围指定即可,便于函数制图。
Matlab很强大,处理什么都比较得心应手,是款很好的数学式编程工具与计算工具,修改编辑很方便,但体积比较大。
Mathematica个人感觉侧重于图像处理,尤其那些多边形,多维空间制图,曲面等很实用,而且软件体积比较少,运行速度快,是款和MATLAB相辅相成的好工具。
通过以上,我自认为较好的解决方案是数据处理用Matlab,然后将数据导入Mathematica可视化处理。
符号计算就是Mathematica了。
以后还需多进行实验,体会Mathematica的功能。
要想真正能够解决问题,思路只是基础,还有很多能力必须具备才能实现需要。
以后应将c语言等与建模软件更好的结合起来,实现更强大的功能。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 第二次 实验 报告