MATLAB软件在数学建模中的应用
- 格式:doc
- 大小:21.50 KB
- 文档页数:6
MATLAB软件在数学建模中的应用作者:华颖来源:《价值工程》2013年第26期摘要:本文首先介绍了MATLAB软件的相关特点,然后对数学建模的概念及其建模过程做出介绍,其次以一个全国数学建模比赛的实例介绍了开发基于MATLAB的数学建模详细步骤。
实践证明将MATLAB软件用于数学建模可以提高数学建模的效率和质量,丰富了数学建模的方法和手段,同时对数学课程的运用具有重要的教学意义。
Abstract: This article firstly introduces the features of MATLAB software and the concept and process of mathematical modeling. And then the detailed procedure of mathematical modeling based on Matlab is explained with an example of a national mathematical modeling competition. Practice shows that the application of MATLAB software in mathematical modeling can improve the efficiency and quality of mathematical modeling, which enriches the methods and means of mathematical modeling and is also of important teaching significance for mathematical courses.关键词: MATLAB软件;数学建模;数学模型Key words: MATLAB software;mathematical modeling;mathematical model中图分类号:TP319 文献标识码:A 文章编号:1006-4311(2013)26-0233-030 引言数学软件就是专门用来进行数学运算、数学规划、统计运算、工程运算、绘制数学图形或制作数学动画的软件。
其中常用的数学软件有:MATLAB、Mathematica、Maple、SAGE等;目前在科技和工程界中使用的比较多的数学软件主要是MATLAB,其应用的非常广泛。
MATLAB是1984年由美国MathWorks公司推出的数学软件,其优秀的数值计算能力和数据可视化能力使它很快在数学软件中脱颖而出,历经十几年发展和竞争,MATLAB现已成为适合多学科、多种工作平台的功能强大的大型科技应用软件。
MATLAB主要面对科学计算、可视化及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统的非交互式程序设计语言,代表了当今国际科学计算软件的先进水平。
MATLAB经过三十多年的研究和不断完善,现已成为国际上最流行的科学计算与工程计算软件工具之一,现在MATLAB已经不仅仅是最初“矩阵实验室”了,它已发展成为一种具有广泛应用前景的、全新的计算机高级编程语言。
1 MATLAB的语言特点1.1 语言简洁紧凑,程序设计自由度大,可移植性好MATLAB是一个高级的矩阵列语言,它包含控制语句、函数、数据结构、输入输出和面向对象编程特点。
MATLAB以矩阵为基础,不需要预先定义变量矩阵(包括数组)的维数,可以方便地进行矩阵的算术运算、关系运算和逻辑运算等。
而且MATLAB有特殊矩阵专门的库函数,可以高效地进行信号处理、图像处理、控制处理等问题。
1.2 用户使用方便 MATLAB中以复数矩阵或数组作为基本编程单元,使得矩阵操作变得轻而易举。
另外MATLAB语句功能强大,一条语句往往相当于其他高级语言中的几十条、几百条甚至几千语句,而且MATLAB中提供了非常多的功能函数,从而使得用户使用起来非常方便。
1.3 方便的绘图功能 MATLAB的绘图是十分方便的,它有一系列绘图函数,例如线性坐标、对数坐标、半对数坐标及极坐标,均只需要调用不同的绘图函数,在图上标出图题、XY 轴标注,网络线的绘制也只需要调用相应的命令,简单易行。
另外,在调用绘图函数时调整自变量可绘出不变颜色的点、线、复线或多重线。
这种为科学研究着想的设计是通用的编程语言所不能及的。
1.4 扩充能力强,交互性好高版本的MATLAB语言有丰富的库函数,在进行复杂的数序运算时可以直接调用,而且MATLAB的库函数同用户文件在形成上一样,所以用户文件也可作为MATLAB的库函数来调。
因而,用户可以根据自己的需要方便地建立和扩充新的库函数,以便提高MATLAB的使用效率和扩充它的功能。
另外,为了充分利用FORTRAN、C等语言的资源,用户可以通过混合编程,方便地调用有关的FORTRAN、C语言的子程序,还可以在FORTRAN、C语言中方便地使用MATLAB的数值计算功能。
这样良好的交互性使用程序使用以前编写过的程序,减少重复性工作,也使现在编写的程序具有重复利用的价值。
1.5 编程效率高 MATLAB是一种面向科学与工程计算的高级语言,允许使用数学形式的语言编程序,而且比BASIC、FORTRAN等语言更加接近我们书写计算公式的思维方式。
用MATLAB编写程序犹如在演算纸上排列出公式与求解问题。
因此,MATLAB语言也可通俗地称为演算纸式科学算法语言。
由于它编写简单,所以编程效率高,易学易懂。
2 数学建模简介2.1 数学模型与数学建模当我们研究一个问题时需要从定量的角度分析和研究,人们就要在深入调查研究、了解对象信息、作出简化假设、分析内在规律等工作的基础上,用数学符号和语言,把它表述为数学式子,也是数学模型,所以数学模型是对于一个特定的对象为了一个特定的目标,根据特有的内在规律,做出一些必要的简化假设,运用适当的数学工具,得到一个数学结构。
数学结构可以是数学公式、算法、表格、图示等。
数学建模就是建立数学模型,建立数学模型的过程就是数学建模的过程。
数学建模的语言和方法,通过抽象、简化建立能近似刻化并“解决”实际问题的一种强有力的数学手段。
建立数学模型的过程是把错综复杂的实际问题简化、抽象为合理的数学模型的过程。
要通过调查、收集原始信息,观察和研究实际对象的固有特征和内在规律,抓住问题的主要矛盾,建立起反映实际问题的数量关系,然后利用数学的理论和方法去分析和解决问题。
这需要深厚扎实的数学基础,敏锐的想象力和洞察力,对实际问题的浓厚兴趣和广博的知识面。
数学建模是联系实际问题与数学的桥梁,是数学在各个领域应用的媒介,数学建模的作用越来越受到数学工程界的普遍重视,它已成为现代科技工作者必备的重要能力之一。
2.2 数学建模的一般步骤下面结合数学建模的几个环节和数学建模实例,介绍MATLAB 在数学建模中的应用。
数学建模的过程分成如下几个阶段:①模型准备:了解所研究的问题的实际背景,明确其实际意义,掌握对象的各种信息,从而确定使用何种数学方法与建立何种数学模型,然后用数学的语言来描述问题。
②模型假设:为了利用数学方法,通常要对问题做必要的、合理的假设,即根据实际对象的特征和建模的目的,对问题进行必要的简化,并用精确语言提出一些当前的假设。
③模型建立:根据所做的假设以及事物之间的联系,在假设基础上,利用适当的数学工具来刻画各变量之间的数学关系,建立相应的数学结构。
④模型求解:利用已知的数学方法来求解上一步所得到的数学问题,即利用获取的数据资料,对模型的所有参数做出计算。
⑤模型分析:对所得的结果进行数学上的分析,特别要注意数据变化时所得结果是否稳定。
⑥模型检验:将模型分析结果与实际情形进行比较,然后可根据情况对模型进行修正,使其符合程度更高,具有更好的合理性和适用性。
⑦模型应用:应用方式因问题的性质和建模的目的而异。
3 建模实例2009年全国大学生数学建模竞赛A题为某服务公司承办了一次全国性的会议,会议筹备组要为与会代表预订客馆客房,租借会议室,并租用客车接送代表。
筹备组经过实地考察,筛选出10家宾馆作为备选,题目给出客房及会议室的规格、间数、价格等数据,需要先预测与会代表的人数。
预测的依据是代表回执数量及往届的与会人员数据。
已知本届会议的回执情况(见表1)及以往几届会议代表回执和与会情况(见表2)要解决的问题是:根据这些数据预测本届与会代表人数。
首先根据题目给出的数据我们知道本届发来回执的代表人数为x=75,由于发来回执但未与会的代表人数x1与发来回执的代表人数x之间存有一定的关系,所以我们通过题目给出的以往数据利用最小二乘法拟合出相应曲线,然后得到发来回执但未与会的代表人数。
给出MATLAB程序:x=[315 356 408 711];y=[89 115 121 213];p2=polyfit(x,y,2)poly2str(p2,'x')x1=300:800;y2=polyval(p2,x1);plot(x,y,'rp',x1,y2)z=polyval(a,755)二次拟合曲线为:y=-0.1 x^2+446.3x-33870.4,可得今年发了回执但未与会的代表人数为225(人)。
其次由于未发来回执而与会的代表人数x2与发来回执的代表人数之间的影响关系不大,需要使用题目给出的数据单独进行预测,由于题目给出的数据不多,我们采用对数据量要求不大但精度较高的灰色预测模型GM(1,1)来进行预测。
根据GM(1,1)模型编写出的MATLAB程序如下:function [ px0,ab,rel ] =gm11( x0_number )if nargin==1number=max(size(x0));endn=max(size(x0));x1=zeros(size(x0));for k=1:nfor i=1:kx1(k)=x1(k)+x0(i);endendz=zeros(size(x0));for k=2:nz(k)=0.5*(x1(k)+x1(k-1));endy=x0';y(1)=[];b(;,1)=-z';b(;,2)=1;b(1,:)=[];ab=inv(b'*b)*b'*y;a=ab(1); b=ab(2);px0(1)=x0(1);for k=1:number-1px0(k+1)=(1-exp(a))*(x0(1)-b/a)*exp(-a*k);endtemp=px0(1:n);x0;temp=(temp-x0)./x0;temp(1)=[];temp=abs(temp);rel=sum(temp)/(n-1)*100;由以上过程我们可以得到本届大会代表到会情况如表3。