数学建模计算实验chen.docx
《数学建模计算实验chen.docx》由会员分享,可在线阅读,更多相关《数学建模计算实验chen.docx(36页珍藏版)》请在冰豆网上搜索。
数学建模计算实验chen
《数学建模》
信计091200900901005陈康丽
实验一:
matlab函数拟合
实验目的:
掌握用matlab进行函数拟合的方法。
实验内容:
实例1.(汽车刹车距离问题)某汽车司机培训课程中有这样的规则:
正常驾驶条件下,车速每增16公里/小时,后面与前车的距离应增一个车身的长度。
实现这个规则的渐变办法是“2秒准则”:
后车司机从前车经过某一标志开始默数2秒钟后到达同一标志,而不管车速如何。
这个规则的合理性如何是否有更合理的规则。
下表是测得的车速和刹车距离的一组数据。
车速(km/h)
20
40
60
80
100
120
140
刹车距离(m)
6.5
17.8
33.6
57.1
83.4
118.0
153.5
解:
模型假设:
(1)刹车距离y等于反应距离y1与制动距离y2之和。
即y=y1+y2.
(2)反应距离y1与车速v成正比,比例系数为反应时间k1。
即y1=k1*v
(3)刹车时使用最大制动力F,F作的功等于汽车动能的改变,且F与车的质量m成正比.
模型建立由假设2,y1=k1v,由假设3,在F作用下行驶距离y2作的功F*y2
使车速从v→0,动能的变化为mv^2/2,又由牛顿第二定律可知F=am,,其中刹车时的减速度a为常数,于是y2=k2*v^2,其中k2为比例系数,实际k2=1/2a,由假设1,刹车距离为y=k1v+k2v^2
模型求解:
用最小二乘法拟合,则程序运行过程有:
>>v=[20,40,60,80,100,120,140]./3.6;
>>s=[6.5,17.8,33.6,57.1,83.4,118.0,153.5];
>>fun=inline('k
(1).*v+k
(2).*v.*v','k','v');
>>k=lsqcurvefit(fun,[20,140],v,s)
Optimizationterminated:
relativefunctionvalue
changingbylessthanOPTIONS.TolFun.
k=
0.65220.0853
于是s=0.6522v+0.0853v^2;
模型应用:
因为在实际中k2=1/2a则a=5.86166v=at1,其中t1为刹车时间,又k1为反应时间,即最终时间:
t=k1+t1。
>>v=[20406080100120140]/3.6;
>>a=5.86166;t0=0.6522;s=0.6522.*v+0.0853.*v.^2
s=
6.256017.777534.564456.616883.9346116.5178154.3664
>>t=t0+v./a
t=
1.60002.54783.49554.44335.39116.33897.2866
根据车速的不同刹车时间t如下表:
车速(km/h)
20
40
60
80
100
120
140
刹车距离(m)
6.2560
17.7775
34.5644
56.6168
83.9346
116.5178
154.3664
刹车时间(秒)
1.6000
2.5478
3.4955
4.4433
5.3911
6.3389
7.2866
后车司机从前车经过某一标志开始默数t秒钟后到达同一标志,t由下表给出:
车速(km/h)
0—10
10-60
60—100
100-140
t(秒)
1
2
4
6
则根据车速的快慢,随着车速越快的时候,刹车时间越久所以2秒准则是不合理的。
实例2:
根据美国人口从1790年到1990年间的人口数据(如下表),确定人口指数增长模型(Logistic模型)中的待定参数,估计出美国2010年的人口,同时画出拟合效果的图形。
表1美国人口统计数据
年份
1790
1800
1810
1820
1830
1840
1850
人口(×106)
3.9
5.3
7.2
9.6
12.9
17.1
23.2
年份
1860
1870
1880
1890
1900
1910
1920
人口(×106)
31.4
38.6
50.2
62.9
76.0
92.0
106.5
年份
1930
1940
1950
1960
1970
1980
1990
人口(×106)
123.2
131.7
150.7
179.3
204.0
226.5
251.4
解:
问题分析最简单的人口增长模型:
记今年人口为x
,k年以后人口为x
,年增长率为r,则x
=x
(1+r)
——
(1)其中年增长率
保持不变.
模型建立
模型一:
记时刻t的人口为x(t),当考察一个国家或一个较大地区的人口时,x(t)是一个很大的整数,我们将x(t)视为连续、可微的函数,记t=0初始时刻的人口为x
,假设人口年增长率
为常数.考虑t到t+
t时间内人口的增量,显然,有x(t+
t)-x(t)=rx(t)
t
令
t→0,得到x(t)满足微分方dx/dt=rx,x(0)=
x
(2),由方程
(2)解得x(t)=x
e
——(3)
当r>0时(3)式表示人口将按指数规律随时间无限增长,称为指数增长模型.
模型求解用matlab进行数据拟合,程序有:
假设美国人口增长率是一个常数则可用指数增长模型来对该题求解y=a
(1)*exp(a
(2)*t),其中a
(1)为初始人口,a
(2)为人口增长常数,t为从1790年开始增长的10的倍数。
建立f1.m函数文件:
functionx=f1(a,t)
x=a
(1)*exp(a
(2)*t);
在Matlab中输入有:
>>t=1:
20;x=[3.95.37.29.612.917.123.231.438.650.262.97692106.5123.2131.7150.7179.3204226.5];
>>fun=inline('a
(1)*exp(a
(2)*t)','a','t');
>>a=lsqcurvefit(fun,[0,1],t,x)
Warning:
Matrixisclosetosingularorbadlyscaled.
Resultsmaybeinaccurate.RCOND=2.855975e-017.
Optimizationterminated:
relativefunctionvalue
changingbylessthanOPTIONS.TolFun.
a=
10.88490.1545
>>t1=23;x1=f1(a,t1)
x1=
380.0098
则其结果为:
y=10.8849*e
,将t=23代入(3)由以上结果预测2010年的人口为380.0098
模型二:
当人口增长到一定数量后,由于自然资源、环境条件等因素对人口的增长起着阻滞作用,人口增长率就会下降,且随着人口的增加,阻滞作用越来越大.。
所谓阻滞增长模型就是考虑到这个因素,对指数增长模型的基本假设进行修改后得到的。
阻滞作用于体现在对人口增长率r的影响上,使得r随着人口数量x的增加而下降,若将r表示为x的函数r(x),则它应是减函数。
于是方程dx/dt=r(x)x,x(0)=
x
。
对r(x)的一个最简单的假定是,设r(x)为x的线性函数,即r(x)=r-sx(r>0,s>0)。
这里r称固有增长,表示人口很少时(理论上是x=0)的增长。
为了确定系数s的意义,引入自然资源和环境条件所能容纳的最大人口数量x
,称人口容量。
当x=x
时人口不再增长,即增长率r(x
)=0,代入r(x)=r-sx(r>0,s>0)得s=r/x
,于是r(x)=r(1-x/x
),这个式子的另一个解释是,增长率r(x)与人口尚未实现部分的比例(x
-x)/x
成正比,比例系数为固有增长率r。
故,有dx/dt=rx(1-x/x
),x(0)=x
(3)方程右端的因子rx体现人口自身的增长趋势,因子(1-x/x
)则体现了资源和环境对人口增长的阻滞作用,显然,x越大,前一因子越大,后一因子越小,人口增长是两个因子共同作用的结果。
用分离变量法求解得到:
x(t)=x
/(1+(x
/x
-1)e
)
模型求解
建立f2.m文件:
functionx=f2(a,t1)
x=a
(1)./(1+(a
(1)./3.9-1).*exp(-a
(2).*(t1-1790)./10));
用matlab进行数据拟合,程序有:
>>x=[3.95.37.29.612.917.123.231.438.650.262.976.092.0106.5123.2131.7150.7179.3204.0226.5251.4];
>>t1=1790:
10:
1990;
>>a=lsqcurvefit(@f2,[100,0.5],t1,x)
Optimizationterminated:
relativefunctionvalue
changingbylessthanOPTIONS.TolFun.
a=
311.95190.2798
>>f2(a,2010)
ans=
267.1941
则其结果为:
x(t)=311.9523/(1+(311.9523/3.9-1)e
)—(4)
将t=2010代入(4)由以上结果预测2000年的人口为x(2010)=267.1941.
拟合效果图程序如下:
>>t=0:
1:
20;
>>t1=1790:
10:
1990;
>>x=[3.95.37.29.612.917.123.231.438.650.262.976.092.0106.5123.2131.7150.7179.3204.0226.5251.4];
>>p=polyfit(t,x,2);ti=1:
0.01:
20;xi=polyval(p,ti);subplot(1,2,1)
>>plot(t,x,'*r',ti,xi,'g')
>>title('x对t的拟合图')
>>p=polyfit(t1,x,2);t1i=1790:
0.01:
1990;xi=polyval(p,t1i);subplot(1,2,2)
>>plot(t1,x,'ob',t1i,xi,'g')
>>title('x对t1的拟合图')
实例3、(录像机计数器的用途)计时器读数n与录像带转过的时间t之间的关系为
利用下表的数据确定两个参数a、b的值。
t(分)
0
10
20
30
40
50
60
70
80
90
n
0000
0617
1141
1601
2019
2403
2760
3096
3413
3715
t(分)
100
110
120
130
140
150
160
170
184
n
4004
4280
4545
4803
5051
5291
5525
5752
6061
解:
由题意已知,用最小二乘法求解,则程序有:
>>t=[0102030405060708090100110120130140150160170184];
>>n=[0000061711411601201924032760309634133715400442804545480350515291552557526061];
>>fun=inline('a
(1)*n.^2+a
(2)*n','a','n');
>>a=lsqcurvefit(fun,[0617,6061],n,t)
Optimizationterminated:
first-orderoptimalitylessthanOPTIONS.TolFun,
andnonegative/zerocurvaturedetectedintrustregionmodel.
a=
0.00000.0145
即:
a=0.0000,b=0.0145.
实验二:
用Lindo求解线性规划问题
实验目的:
掌握用Lindo求解线性规划问题的方法,能够阅读Lindo结果报告。
实验内容:
实例1.一家广告公司想在电视、广播上做公司的宣传广告,其目的是争取尽可能多的影响顾客。
下表是公司进行市场调研的结果:
电视
网络媒体
杂志
白天
最佳时段
每次做广告费用(千元)
45
86
25
12
受每次广告影响的顾客数
350
880
430
180
受每次广告影响的女顾客数(千人)
260
450
160
100
这家公司希望总广告费用不超过750(千元),同时还要求:
(1)受广告影响的女性超过200万;
(2)电视广告的费用不超过450(千元);(3)电视广告白天至少播出4次,最佳时段至少播出2次;(4)通过网络媒体、杂志做出的广告要重复5到8次。
解:
模型假设:
首先假设用电视做广告白天播出次数、最佳时间播出次数、网络媒体重复广告次数、杂志重复广告的次数分别为x1,x2,x3,x4。
建立模型如下:
MaxZ=350x1+880x2+430x3+180x4%受广告影响的顾客人数
s.t.
45x1+86x2+25x3+12x4≤750%广告费用限制
260x1+450x2+160x3+100x4≥2000%受广告影响的妇女的人数限制
45x1+86x2≤450%电视广告费用限制
x1≥4,x2≥2,5≤x3,x4≤8%其他限制
在Lindo中输入程序并进行分析有程序如下:
Max350x1+880x2+430x3+180x4
s.t.
45x1+86x2+25x3+12x4<750
45x1+86x2<450
260x1+450x2+160x3+100x4>2000
x3>5
x4>5
x3<8
x4<8
x1>4
x2>2
end
gin4
结果如下:
LPOPTIMUMFOUNDATSTEP12
OBJECTIVEVALUE=9042.79102
NEWINTEGERSOLUTIONOF8920.00000ATBRANCH1PIVOT17
BOUNDONOPTIMUM:
8920.000
ENUMERATIONCOMPLETE.BRANCHES=1PIVOTS=17
LASTINTEGERSOLUTIONISTHEBESTFOUND
RE-INSTALLINGBESTSOLUTION...
OBJECTIVEFUNCTIONVALUE
1)8920.000
VARIABLEVALUEREDUCEDCOST
X14.000000-350.000000
X23.000000-880.000000
X38.000000-430.000000
X48.000000-180.000000
ROWSLACKORSURPLUSDUALPRICES
2)16.0000000.000000
3)12.0000000.000000
4)2470.0000000.000000
5)3.0000000.000000
6)3.0000000.000000
7)0.0000000.000000
8)0.0000000.000000
9)0.0000000.000000
10)1.0000000.000000
NO.ITERATIONS=17
BRANCHES=1DETERM.=1.000E0
即这家广告公司在电视白天、最佳时段,网络媒体、杂志的广告次数分别为4,3,8,8受广告影响人数最多为8920千人.
实例2:
求解书本上P130的习题1。
列出线性规划模型,然后用Lindo求解,根据结果报告得出解决方案。
投资规划问题题目:
某银行经理计划用一笔资金进行有价证券的投资,可供购进的证券以及其信用等级、到期年限、收益如下表所示。
按照规定,市政证券的收益可以免税,其他证券的收益需按50%的税率纳税。
此外还有一下限制:
(1)政府及代办机构的证券总共至少要购进400万元;
(2)所购证券的平均信用等级不超过1.4(信用等级数字越小,信用程度越高)
(3)所购证券的平均到期年限不超过5年。
证券名称
证券种类
信用等级
到期年限
到期税前收益(%)
A
市政
2
9
4.3
B
代办机构
2
15
5.4
C
政府
1
4
5.0
D
政府
1
3
4.4
E
市政
5
2
4.5
(1)若该经理有1000万元资金,应如何投资?
(2)如果能够以2.75%的利率借到不超过100万元资金,该经理应如何操作?
(3)在1000万元资金情况下,若证券A的税前收益增加为4.5%,投资应否改变?
若证券C的税前收益减少为4.8%,投资应否改变?
解:
设投资证券A,B,C,D的金额分别为x1,x2,x3,x4,x5(百万元),按照规定限制1000万元的资金约束,则线性规划模型为:
%最后收益
%政府及代办机构的证券购进总额限制
%总金额限制
%平均信用等级限制
%平均到期年限限制
在Lindo中输入并要求做灵敏性分析有:
Max0.043x1+0.027x2+0.025x3+0.022x4+0.045x5
s.t.
x2+x3+x4>4
x1+x2+x3+x4+x5<10
6x1+6x2-4x3-4x4+36x5<0
4x1+10x2-x3-2x4-3x5<0
x1>0
x2>0
x3>0
x4>0
x5>0
end
结果如下:
LPOPTIMUMFOUNDATSTEP0
OBJECTIVEFUNCTIONVALUE
1)0.2983637
VARIABLEVALUEREDUCEDCOST
X12.1818180.000000
X20.0000000.030182
X37.3636360.000000
X40.0000000.000636
X50.4545450.000000
ROWSLACKORSURPLUSDUALPRICES
2)3.3636360.000000
3)0.0000000.029836
4)0.0000000.000618
5)0.0000000.002364
6)2.1818180.000000
7)0.0000000.000000
8)7.3636360.000000
9)0.0000000.000000
10)0.4545450.000000
NO.ITERATIONS=0
RANGESINWHICHTHEBASISISUNCHANGED:
OBJCOEFFICIENTRANGES
VARIABLECURRENTALLOWABLEALLOWABLE
COEFINCREASEDECREASE
X10.0430000.0035000.013000
X20.0270000.030182INFINITY
X30.0250000.0173330.000560
X40.0220000.000636INFINITY
X50.0450000.0520000.014000
RIGHTHANDSIDERANGES
ROWCURRENTALLOWABLEALLOWABLE
RHSINCREASEDECREASE
24.0000003.363636INFINITY
310.000000INFINITY4.567901
40.000000105.71428720.000000
50.00000010.00000012.000000
60.0000002.181818INFINITY
70.0000000.000000INFINITY
80.0000007.363636INFINITY
90.0000000.000000INFINITY
100.0000000.454545INFINITY
则
(1)证券A,C,E分别投资2.082,7.364,0.454百万元,最大税后收益为0.298百万元
(2)由OBJECTIVEFUNCTIONVALUE的DUALPRICES中的第二行结果知,若资金增加100万元,收益可增加0.0298百万元,大于以2.75%的利率借到100万元资金的利息0.0275百万元,所以应借贷,投资方案需将上面模型第二个约束右端改为11,求解得到:
证劵A、C、E分别投资2.40百万元,最大税后收益为0.3007百万元。
(3)由OBJCOEFFICIENTRANGES的ALLOWABLEINCREASE中的x1,ALLOWABLEDECREASE的x3行的结果中目标函数系数的允许范围(最优解不变)可知,证券A的税前收益可增加(0.043000+0.003500)=0.0465即4.65%>4.5%,故若证券A的税前收益增加为4.5%,投资不应改变;证券C的税前收益可减(0.025000-0.000560)*2=0.04888,即4.888%(注意按50%的税率纳税),故证券C的税前收益减少为4.8%,投资应该改变。
实验三:
用Lingo求解非线性规划问题
实验目的:
掌握用Lingo求解非线性规划问题的方法。
实验内容:
求解书本上P132的习题6、7。
列出非线性规划模型,然后用Lingo求解,根据结果报告得出解决方案。
P132第6题题目:
某公司将4种不同含硫量的液体原料(分别记作甲、乙、丙、丁)混合生产两种产品A、B,按照生产工艺的要求,原料甲、乙、丁必须先倒入混合池中混合,混合后的液体再分别与原料丙混合生产A、B。
已知原料甲、乙、丙、丁的含硫量分别不能超过3,1,2,1(%),销售价格分别为6,16,10,15(千元/吨),产品A、B的含硫量分别不能超过2.5,1.5(%),销售价格分别为9,10。
根据市场信息,原料甲、乙、丙的供应没有限制,原料丁的供应量最多为50吨;产品A、B的市场需求量分别为100吨、200吨.问应如何安排生产?
解:
设y1,z1分别是产品A中是来混合池和原料丙的吨数,y2,z2分别是产品B中是来混合池和原料丙的吨数.混