Matlab在数学建模中的应用吴志远(2008年8月写于暑假数学建模培训)数学建模是通过对实际问题的抽象和简化,引入一些数学符号、变量和参数,用数学语言和方法建立变量参数间的内在关系,得出一个可以近似刻画实际问题的数学模型,进而对其进行求解、模拟、分析检验的过程。它大致分为模型准备、模型假设、模型构成、模型求解、模型分析、模型检验及应用等步骤。这一过程往往需要对大量的数据进行分析、处理、加工,建立和求解复杂的数学模型,这些都是手工计算难以完成的,往往在计算机上实现。在目前用于数学建模的软件中,matlab强大的数值计算、绘图以及多样化的工具箱功能,能够快捷、高效地解决数学建模所涉及的众多领域的问题,倍受数学建模者的青睐。1Matlab在数学建模中的应用下面将联系数学建模的几个环节,结合部分实例,介绍matlab在数学建模中的应用。1.1模型准备阶段模型准备阶段往往需要对问题中的给出的大量数据或图表等进行分析,此时matlab的数据处理功能以及绘图功能都能得到很好的应用。1.1.1确定变量间关系例1已知某地连续20年的实际投资额、国民生产总值、物价指数的统计数据(见表),由这些数据建立一个投资额模型,根据对未来国民生产总值及物价指数的估计,预测未来的投资额。表1实际投资额、国民生产总值、物价指数的统计表年份投资额国民生产总值物价指数年份投资额国民生产总值物价指数190.9596.70.716711229.81326.41.0575297.4637.70.727712228.71434.21.15083113.5691.10.743613206.11549.21.25794125.77560.767614257.917181.32345122.87990.790615324.11918.31.40056133.3873.40.825416386.62163.91.50427149.39440.8679174232417.81.63428144.2992.70.914518401.92631.61.78429166.41077.60.960119474.92954.71.9514101951185.9120424.530732.0688记该地区第t年的投资为z(t),国民生产总值为x(t),物价指数为y(t)。赋值:z=[90.997.4113.5125.7122.8133.3149.3144.2166.4195229.8228.7206.1257.9324.1386.6423401.9474.9424.5]'x=[596.7637.7691.1756799873.4944992.71077.61185.91326.41434.21549.217181918.32163.92417.82631.62954.73073]'y=[0.71670.72770.74360.76760.79060.82540.86790.91450.960111.05751.15081.25791.32341.40051.50421.63421.78421.95142.0688]'先观察x与z之间,y与z之间的散点图plot(x,z,'*')plot(y,z,'*')由散点图可以看出,投资额和国民生产总值与物价指数都近似呈线性关系,因此可以建立多元线性回归模型012zxy直接利用统计工具箱直接计算[b,bint,r,rint,stats]=regress(z,X,alpha)输入z:n维数据向量X:[1xy],这里的1是个向量,元素全为常数1,即为ones(n,1)Alpha:置信水平,一般为0.05输出b:的估计值bint:b的置信区间r:残差向量z-Xbrint:r的置信区间Stats:检验统计量2R,F,p代入上述公式[b,bint,r,rint,stats]=regress(z,X,0.05)有b=322.7563056350880.618516611734168-859.579151516612即322.75630.61850.859.479zxy由stats=0.990850141482672920.4761130081070知z的99.085%可由模型确定,F远超过F检验的临界值,p远小于=0.05.bint=224.4022221134421.1103891567770.4773754129901840.759657810478151-1121.49331646023-597.664986572995b的置信区间不包含零点,x,y对z影响都是显著的。1.1.2求数字特征例2已知50个数据x=[451.4243.89527.185312.6912.863383.97683.1292.84235.338612.4608.5415.7616.355190.07586.9257.581367.57631.45717.63692.6784.079454.36441.83353.25153.61675.64699.21727.51478.38554.84121.05450.75715.88892.84273.1254.77865.6232.35804.87908.4231.89239.3149.75478.384640.82190.89843.87173.9170.79994.3],计算其数字特征。输入数据,利用下列提供的函数可以求得各数字特征。min(x):向量x的元素的最小值max(x):向量x的元素的最大值mean(x):向量x的元素的算术平均值geomean(x):向量x的元素的几何平均值(n个正数的连乘积的n次算术根叫做这n个数的几何平均数)median(x):向量x的元素的中位数var(x):向量x的元素的方差std(x):向量x的元素的标准差diff(x):向量x的相邻元素的差sort(x):对向量x的元素进行排序(Sorting)length(x):向量x的元素个数sum(x):向量x的元素总和prod(x):向量x的元素总乘积1.2模型的求解分析与检验1.2.1拟合数据做预测例3以下是美国1790年至2000年的人口统计数据(单位:百万),建立人口发展模型并预测2010年美国的人口数目。年17901800181018201830184018501860187018801890人口3.95.37.29.612.917.123.231.438.650.262.9年19001910192019301940195019601970198019902000人口7692106.5123.2131.7150.7179.3204226.5251.4281.4根据分析,第t年的人口x满足0rtxxe(指数增长模型)将上式两边取对数,得yrta,lnyx,0lnax由t=0:21,x=[3.95.37.29.612.917.123.231.438.650.262.97692106.5123.2131.7150.7179.3204226.5251.4281.4]y=log(x);f=polyfit(t,y,1),得到r=0.2022,0x=1.7992aee=6.045x(22)=516.770百万1.2.2绘制误差条图将模型得出的结果与真实结果作比较,绘制出对比图和误差条图,反应模型与实际的吻合程度。如上例,模型结果与实际人口数的对比图以及误差条图可由命令t=0:21,x=[3.95.37.29.612.917.123.231.438.650.262.97692106.5123.2131.7150.7179.3204226.5251.4281.4];plot(t,x,'*',t,6.0448*exp(0.2022*t),'o',t,6.0448*exp(0.2022*t));errorbar([1790:10:2000],ones(1,22),x-6.0448*exp(0.2022*t))1.2.3对模型进行模拟对于一些没有给出数据的实际问题,建立模型后往往需要找一组随机数据进行模拟,从而检验模型的优劣。例4已知一栋大厦有9部电梯,上下班高峰期和非高峰期上下电梯的人数有显著的差别,为节约用电,试建立数学模型进行电梯的调试。题中没有给出等电梯的人数,在建立完数学模型后,就可以利用matlab模拟一组各时间段等电梯的人数带入模型求解和检验。由概率知识知道,到达电梯的人数呈正态分布且在上班之前的某一刻和下班之后的某一刻达到峰值,可以使用X=normrnd(mu,sigma,1,n)来生成均值为mu,方差为sigma的一组(n个)随机数来模拟。2实例分析实例1(身高问题)学校随机抽取100名学生,测量他们的身高,得一组数据。1)根据这些数据对全校学生的平均身高作出估计,并给出估计的误差范围;2)学校10年前作过普查,学生的平均身高为167.8cm,试根据这次抽查的数据,对学生的平均身高有无显著提高作出结论。身高为h=[161175172172175175180179172174164170158176178178178171168169179163182174160163170160168176163170178178174172170170172180169171170168171179156158171171162175170170154175170168166164170168173162163160160172170172174172175160168170170158169173167164168170171176173169164167167168172163172164172168165160]解:(1)分析与假设:这是一个直接根据观测数据组建模型的问题,需用部分去推断整体,属于随机性数学模型,运用数理统计的方法可解决这一问题。受测量工具、观测方法等因素的影响,上述测量数据可能会有不同程度的误差,不尽准确,但作为我们分析的基点,可假设这些测量数据是准确的。(2)模型的建立与求解:①作学生身高的直方图和频数表,对学生身高作直观考察hist(h)作出身高直方图[N,X]=hist(h)作学生的身高频数表由结果可以使我们对这所学校学生的身高有这样的一些粗略认识:近70%学生身高在165至175之间,平均约为169,身高的分布大致呈中间高、两端低的钟形,故可以假设为正态分布N(,).②对分布作假设检验:采用正态概率图纸法检验,matlab统计工具箱中提供的是Q-Q图检验:normplot(h)由图可知,样本点在一条直线附近,故可得学生身高服从正态分布这一结论。③考察样本统计量所反映的数据特征:mean(h)计算样本均值median(h)计算中位数std(h)计算标准差range(h)计算极差skewness(h)计算偏度kurtosis(h)计算峰度均值中位数标准差极差偏度峰度169.441705.946428-0.32422.6849标准差为s=5.9464,说明数据与均值偏离程度不算太大,偏度10.3242g,这与正态分布是对称的,偏度接近于0这一数学原理相接近。而峰度22.6849g比正态分布的峰度3稍小一些,考虑到样本抽取方法和测量误差,可以认为这一模型是比较合理的,与实际情况比较相符。④平均身高的估计及误差范围:此即需由样本去推断总体,由数理统计知识,需对总体均值和标准差进行点估计和区间估计。[musigmamucisigmaci]=normfit(h,0.01)可得到全校学生平均身高,标准差的点估计和区间估计(显著性水平为0.01)⑤解决平均身高是否有显著提高的问题:由数理统计知识知,此即需要对总体均值进行假设检验:01:167.8;:167.8HH。由于总体标准差未知,故用t检验,取显著性水平0.01。[H,p,ci]=ttest(h,167.8,0.01,1)得h=1表示拒绝0H,p=0.0035,ci=[168.0339,inf]根据这一命令结果可知全校