Matlab模型
Mathlab是一门高级语言,风格有点象C语言,但语法更简单,易学易用,由于自带很多科学计算工具箱,比较适合科学计算。(下载网址:www.mathworks.com)
1.假定某种生命蛋白质是由四种氨基酸组合而成的。这四种氨基酸的分子量分别为:57,71,97,101。实验测定蛋白质的分子量为800。试问这种蛋白质的组成有哪几种可能? 〔讲评〕
生:这是一个不定方程问题:800=57×x1+71×x2+97×x3+101×x4 x1,x2,x3,x4为整数。
师:我们可以用枚举的方法求出所有可能的x1,x2,x3,x4,x1可能的取值为0到15,x2可能的取值为0到11,x3可能的取值为0到8,x4可能的取值为0到7。
(参考:m1.m)
2.当推销员从I城出发,经过每个城市一次且仅一次,最后回到I城,问按怎样的路线走,使总的行程路线最短.四个城市间的距离如下表: I II III IV I 0 8 5 6 II 6 0 8 5 III 7 9 0 5 IV 9 7 8 0 〔讲评〕 师:该问题可以用枚举法吗?
生:可以,从I出发有3种选择,第二步只有2种选择,最后一步回I城。 师:如何表示每一步的路长呢?
生:设计一个4×4路长矩阵a, a(i,j)表示城i到城j的路长。
(参考:m2.m) 3.某人从高为2000米载人热气球(此时气球静止)跳伞,重力加速度为g=10米/秒2,下落过程中,若打开降落伞,则空气阻力与速度的平方成正比:f=0.0001mgv2(m为人伞的质量和),若一开始就打开降落伞,求落地时间。
〔讲评〕
生:加速度a=10-0.001v2,变加速直线运动,没学过。 师:在很短的时间内,变加速可不可以看做匀加速?
生:可以,这样原运动过程可分割成很多段匀加速直线运动。 师:难道跳伞的速度会无限的增大吗? 生:当a=0时,速度就是常数了 讨论:如果要控制落地时间,比如保证23秒时落地,求打开降落伞的时间,怎么办?
(参考:m3.m) 4.求y=x2在区间[0,6]上的图像(曲线)长度。 〔讲评〕
师:如何求曲线的长度?
46
生:可将曲线分割成很多段,每段近似为直线段,这样曲线的长度近似为折线的长度。
讨论:如何判断你的结果的精确程度? (参考:m4.m)
5.细菌在实验室封闭容器中养殖,每天都测一次细菌的数量,第一天,细菌数量为500,第二天为1000(此时生长率为2),后来随着细菌数量的剧增,生长率越来越低,当细菌数目为10000时,生长率才1.1,也就是说,该天的二天细菌数不过11000。如果生长率是细菌数目的线性函数,问细菌数目最后有没有可能达到一个稳定的水平,是多少?
〔讲评〕
师:如何描述生长率和细菌数目的关系?
生:细菌数目p=500时,生长率r=2,细菌数目p=10000时,生长率r=1.1, 很容易求出r,p间的关系:r=-0.0000947×p+2.0472 师:如何计算第n天的细菌数目?
生:利用递推关系p(n)=p(n-1)×(-0.0000947×p(n-1)+2.0472)从第二天开始算 师:如何判断细菌数目达到稳定水平?
生:作图,或看看|p(n+1)-p(n)|是否越来越接近0
讨论:上述递推关系中的常数0.0000947,2.0472对细菌数目稳定性的影响如何?
(参考:m5.m)
练习:.
某池塘内的鱼的生长有以下递推关系:
p(n+1)=0.01(200-p(n))p(n)。 p(n)是第n 年池塘内鱼的数目(单位:千尾). 当池塘内鱼的数目达到一定数目时,开始捕鱼,若每年 16000 尾, 问池塘内的鱼能否达到某一稳定水平?当池塘内鱼的数目达到什么水平时方可捕捞?如果你是渔场经理,你的捕捞方案如何? 6.如图,线段旁边的数据表路长,箭头表路的方向,求节点 1 到节点9 的最短路.
1 2 10 5 9 2 6 3 6 1 3 6 3 3 4 8 10 1 2 4 7 2 6 4 10
47
〔讲评〕
师:如何用数据描述上图?
生:用9×9矩阵a,a(i,j)表节点i,j间的路长 师:a(4,1),a(3,1)等于多少? 生:无穷大。
师:a(1,1),a(2,2) 等于多少? 生:0
师:如何找最短路径? 生:枚举法,很简单!
师:9个点,要算8!=40320次,若20个点,要算19!>1017次,计算机要算瘫了。 通常采用Dijkstra算法,
第一步:设从点i到j的最短路长f(i,j),就是这点i到j的路长a(i,j)。f也是一个 9×9的矩阵。
第二步,寻找“两边之和小于第三边”,即在 (k=1,2,…9)中寻找使
d(k)=a(i,k)+f(k,j) 最小的k,对应的d(k)的值,作为“改良”的 点i到j的最短路长f(i,j)
第三步,重复第二步的工作,考虑到最短路径最多8条边,所以,第二步的重复次数不会超过8
(参考:m6.m)
7.下图为一网络,节点1到节点2的宽带带宽为6兆,节点1到节点3的宽带带宽为2兆,节点2到节点4的宽带带宽为3兆,…节点4到节点6的宽带带宽为2兆,求节点1到节点6的最大网速。
3 42 2
6
1 3 2 7 5 1 3 7 6 〔讲评]
师:这个问题用Lingo建模,非常简介,但是用Matlab也可以。 解决这种问题往往分两步:
第一步:寻找从节点1到节点6的通道,并算出该通道的最大网速,并计算出该通道中各宽带剩下的带宽容量,例:节点1,3,5,6通道,可获得网速2,节点1到3的容量变为0,节点3到5变为5,节点5到6变为5。
第二步:重复第一步的工作,直到找不到从节点1到节点6的通道为止。
48
生:如何寻找节点1到节点6的通道呢?
师:通道就是路径,我们可以给容量不为0的宽带定义路长1,只要我们找到从节点1到节点6的最短路长,如果不是无穷大,那么相对应的路径就是一条通道。
(参考:m7.m)
8. 某伐木公司即将开始在同一地区的八大林区伐木,故须建造一伐木道路系统,以使每一林区皆与其他每一林区相通.任意两林区间距离间下表:
1 2 3 4 5 6 7 8 1 1.3 2.1 0.9 0.7 1.8 2.0 1.5 2 0.9 1.8 1.2 2.6 2.3 1.1 3 2.6 1.7 2.5 1.9 1.0 4 0.7 1.6 1.5 0.9 5 0.9 1.1 0.8 6 0.6 1.0 7 0.5 试决定在各林区间如何造路,才能以最短路长连通全部林区. 〔讲评]
生:连通8个林区只需修7条道
师:随便7条道都能连通8个林区吗? 生:不能,7条道中不能有圈
师:如何用Matlab描述上述问题?
生:林区间的距离可用8×8矩阵a表示,a(i,i)等于无穷大 师:如何找出7条道?
生:从a中挑出7个最小的数 师:如何判断是否有圈?
生:为了避免有圈,我们采用扩展的方法 第一步:找出最短的道路,设为a(i,j),将节点i,j存在数组p(已连通的林区)中,其它节点存在数组u(没连通的林区) 中
第二步:从p到u中找最短的道路,也就是从子矩阵a(p,u)中找出最小值a(m,n),将n从u中调入p中
第三步:重复第二步,直到找到7条道
(参考:m8.m)
练习:
一个小城市有六个小区。市长John Lion拟建设电话系统使得六个小区能相互通信。假设小区1和小区4间不能架设电话线,问电话线的最短长度为多少?
49
5
2
1
7
5
3
3
3
5
5
4
7
5
4
9.12小时内,一小时测量一次室外温度.数据如下表: 小时 1 2 3 4 5 6 7 温度 5 8 9 15 25 29 31 试估计下列时间的温度:9.3,3.2,6.5,7.1,11.7. 〔讲评]
师:做出温度时间的散点图: 35 30 25 20 15 10 5246810 0
我们可以用折线拟合温度时间曲线:
8 30 9 22 10 25 11 27 12 24 1250