数学建模基础教程【精选文档】

上传人:a** 文档编号:57609782 上传时间:2022-02-24 格式:DOC 页数:45 大小:181.50KB
返回 下载 相关 举报
数学建模基础教程【精选文档】_第1页
第1页 / 共45页
数学建模基础教程【精选文档】_第2页
第2页 / 共45页
亲,该文档总共45页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
数学建模基础教程【精选文档】MATLAB软 件 基 础1 MATLAB 概述MATLAB 是MATrix LABoratory(“矩阵实验室”)的缩写,是由美国MathWorks 公司开发的集数值计算、符号计算和图形可视化三大基本功能于一体的,功能强大、操作简单的语言.是国际公认的优秀数学应用软件之一。20世纪80年代初期,Cleve Moler与John Little等利用C语言开发了新一代的MATLAB语言,此时的MATLAB语言已同时具备了数值计算功能和简单的图形处理功能.1984年,Cleve Moler与John Little等正式成立了Mathworks公司,把MATLAB语言推向市场,并开始了对MATLAB工具箱等的开发设计。1993年,Mathworks公司推出了基于个人计算机的MATLAB 4。0版本,到了1997年又推出了MATLAB 5。X版本(Release 11),并在2000年又推出了最新的MATLAB 6版本(Release 12)。现在,MATLAB已经发展成为适合多学科的大型软件,在世界各高校,MATLAB已经成为线性代数、数值分析、数理统计、优化方法、自动控制、数字信号处理、动态系统仿真等高级课程的基本教学工具。特别是最近几年,MATLAB在我国大学生数学建模竞赛中的应用,为参赛者在有限的时间内准确、有效的解决问题提供了有力的保证。2 MATLAB的安装与启动2。1 MATLAB的安装要用MATLAB 6,首先必须在计算机上安装MATLAB 6应用软件,随着软件功能的不断完善,MATLAB对计算机系统配置的要求越来越高.下面给出安装和运行MATLAB 6 所需要的计算机系统配置. MATLAB 6对硬件的要求CPU要求:Pentium II、Pentium III、AMD Athlon或者更高;光驱:8倍速以上;内存:至少64MB,但推荐128MB以上;硬盘:视安装方式不同要求不统一,但至少留1GB用于安装(安装后未必有1GB);显卡:8位; MATLAB 6对软件的要求Windows95 、Window98、Windows NT或Windows2000;Word97或word2000等,用于使用MATLAB Notebook;Adobe Acrobat Reader 用于阅读MATLAB的PDF的帮助信息。MATLAB 6的安装和其它应用软件类似,可按照安装向导进行安装,这里不再赘述。2.2 MATLAB的启动和退出与常规的应用软件相同,MATLAB的启动也有多种方式,首先常用的方法就是双击桌面的MATLAB图标,也可以在开始菜单的程序选项中选择MATLAB组件中的快捷方式,当然也可以在MATLAB的安装路径的子目录中选择可执行文件“MATLAB。exe”. 启动MATLAB后,将打开一个MATLAB的欢迎界面,随后打开MATLAB的桌面系统(Desktop)如图21所示。图21 MATLAB的桌面系统3 MATLAB的开发环境MATLAB的开发环境就是在使用MATLAB的过程中可激活的,并且为用户使用提供支持的集成系统。这里介绍几个比较重要的如:桌面平台系统、帮助系统和数据交换系统.3.1 MATLAB桌面平台桌面平台是各桌面组件的展示平台,默认设置情况下的桌面平台包括6个窗口,具体如下:3。1.1 MATLAB主窗口MATLAB6比早期版本增加了一个主窗口。该窗口不能进行任何计算任务的操作,只用来进行一些整体的环境参数的设置.3.1。2 命令窗口(Command Window)命令窗口是对MATLAB进行操作的主要载体,默认的情况下,启动MATLAB时就会打开命令窗口,显示形式如图11所示。一般来说,MATLAB的所有函数和命令都可以在命令窗口中执行.在MATLAB命令窗口中,命令的实现不仅可以由菜单操作来实现,也可以由命令行操作来执行,下面就详细介绍MALTAB命令行操作。实际上,掌握MALAB命令行操作是走入MATLAB世界的第一步,命令行操作实现了对程序设计而言简单而又重要的人机交互,通过对命令行操作,避免了编程序的麻烦,体现了MATLAB所特有的灵活性。1. 命令窗口的作用 命令窗口用于输入命令和显示计算结果。2. 命令行的输入规则 一个命令行输入一条命令,命令行以回车结束。 一个命令行也可以输入若干条命令,各命令之间以逗号分隔,若前一命令后带有分号,则逗号可以省略。 如果一个命令行很长,要加续行符(三个小黑点).3. 命令行的编辑4。 常用操作系统命令例如:在命令窗口中输入sin(pi/5),然后单击回车键,则会得到该表达式的值sin(pi/5)ans=0。5878由例可以看出,为求得表达式的值,只需按照MALAB语言规则将表达式输入即可,结果会自动返回,而不必像其他的程序设计语言那样,编制冗长的程序来执行.当需要处理相当繁琐的计算时,可能在一行之内无法写完表达式,可以换行表示,此时需要使用续行符“”否则MATLAB将只计算一行的值,而不理会该行是否已输入完毕。例如:sin(1/9*pi)+sin(2/9pi)+sin(3/9pi)+sin(4/9pi)+sin(5/9*pi)+sin(6/9pi)+sin(7/9pi)+sin(8/9*pi)+sin(9/9pi)+ans=5。6713使用续行符之后MATLAB会自动将前一行保留而不加以计算,并与下一行衔接,等待完整输入后再计算整个输入的结果。在MATLAB命令行操作中,有一些键盘按键可以提供特殊而方便的编辑操作.比如:“可用于调出前一个命令行,“”可调出后一个命令行,避免了重新输入的麻烦.当然下面即将讲到的历史窗口也具有此功能。3。1。3 历史窗口(Command History)历史命令窗口是MATLAB6新增添的一个用户界面窗口,默认设置下历史命令窗口会保留自安装时起所有命令的历史记录,并标明使用时间,以方便使用者的查询。而且双击某一行命令,即在命令窗口中执行该命令.3。1。4 发行说明书窗口(Launch Pad)发行说明书窗口是MATLAB6所特有的,用来说明用户所拥有的Mathworks公司产品的工具包、演示以及帮助信息。当选中该窗口中的某个组件之后,可以打开相应的窗口工具包。3。1.5 当前目录窗口(Current Directory )在当前目录窗口中可显示或改变当前目录,还可以显示当前目录下的文件,包括文件名、文件类型、最后修改时间以及该文件的说明信息等并提供搜索功能。3.1.6 工作空间管理窗口(Workspace)工作空间管理窗口是MATLAB的重要组成部分。在工作空间管理窗口中将显示所有目前保存在内存中的MATLAB变量的变量名、数据结构、字节数以及类型,而不同的变量类型分别对应不同的变量名图标。3。2 MATLAB帮助系统完善的帮助系统是任何应用软件必要的组成部分。MATLAB提供了相当丰富的帮助信息,同时也提供了获得帮助的方法。首先,可以通过桌面平台的【Help】菜单来获得帮助,也可以通过工具栏的帮助选项获得帮助。此外,MATLAB也提供了在命令窗口中的获得帮助的多种方法,在命令窗口中获得MATLAB帮助的命令。3。3 MATLAB功能演示例1。1 求解线性方程组 命令如下: a=2,3,-1;8,2,3;45,3,9; b=2;4;23; x=inv(a)*b 例1。2 绘制正弦曲线和余弦曲线. 命令如下: x=0:0。5:360*pi/180; plot(x,sin(x),x,cos(x) ; 例1。3 输入10个学生的成绩并对成绩按升序排序. 在MATLAB命令窗口输入: g=input(请输入学生成绩:); g=sort(g) 例1。4 设有常微分方程初值问题,试求其数值解,并与精确解相比较。 (1)建立函数文件funt.m: function yp=funt(t,y) yp=(y2-t2)/4/(t+1); (2)求解微分方程: t0=0;tf=10;y0=2; t,y=ode23(funt,t0,tf,y0); y1=sqrt(t+1)+1; t4 MATLAB数值计算功能MATLAB强大的数值计算功能使其在诸多数学计算软件中傲视群雄,是MATLAB软件的基础。本节将简要介绍MATLAB的数据类型、矩阵的建立及运算。4。1 MATLAB 数据类型MATLAB数据类型v 数值数据:双精度型、单精度数、带符号整数和无符号整数。v 字符数据。v 结构(Structure)和单元(Cell)。多维矩阵和稀疏矩阵(Sparse)。4。1.1 变量与常量变量是任何程序设计语言的基本要素之一,MATLAB语言当然也不例外.与常规的程序设计语言不同的MATLAB并不要求事先对所使用的变量进行声明,也不需要指定变量类型,MATLAB语言会自动依据所赋予变量的值或对变量所进行的操作来识别变量的类型。在赋值过程中如果赋值变量已存在时,MATLAB语言将使用新值代替旧值,并以新值类型代替旧值类型.在MATLAB语言中变量的命名应遵循如下规则:(1)变量名区分大小写.(2)变量名长度不超31位,第31个字符之后的字符将被MATLAB语言所忽略.(3)变量名以字母开头,可以是字母、数字、下划线组成,但不能使用标点。MATLAB语言本身也具有一些预定义的变量,这些特殊的变量称为常量。表41给出了MATLAB语言中经常使用的一些常量值.表41 常 量 表 示 数 值 pi圆周率 eps浮点运算的相对精度 inf正无穷大 NaN表示不定值 realmax最大的浮点数 i, j虚数单位在MATLAB语言中,定义变量时应避免与常量名重复,以防改变这些常量的值,如果已改变了某外常量的值,可以通过“clear+常量名命令恢复该常量的初始设定值(当然,也可通过重新启动MATLAB系统来恢复这些常量值).4.1。2 数字变量的运算及显示格式MALAB是以矩阵为基本运算单元的,而构成数值矩阵的基本单元是数字。为了更好地学习和掌握矩阵的运算,首先对数字的基本知识作简单的介绍.对于简单的数字运算,可以直接在命令窗口中以平常惯用的形式输入,如计算2和3的乘积再加1时,可以直接输入: 1+23ans= 7这里“ans是指当前的计算结果,若计算时用户没有对表达式设定变量,系统就自动赋当前结果给“ans”变量.用户也可以输入: a=1+23a= 7此时系统就把计算结果赋给指定的变量a了.数据的输出格式MATLAB语言中数值有多种显示形式,在缺省情况下,若数据为整数,则就以整数表示;若数据为实数,则以保留小数点后4位的精度近似表示.MATLAB语言提供了10种数据显示格式,常用的有下述几种格式:short 小数点后4位(系统默认值)long 小数点后14位short e 5位指数形式long e 15位指数形式MATLAB语言还提供了复数的表达和运算功能.在MATLAB语言中,复数的基本单位表示为i或j.在表达简单数数值时虚部的数值与i、j之间可以不使用乘号,但是如果是表达式,则必须使用乘号以识别虚部符号.4。1.3赋值语句MATLAB赋值语句有两种格式:(1) 变量=表达式 (2) 表达式 一般地,运算结果在命令窗口中显示出来.如果在语句的最后加分号,那么,MATLAB仅仅执行赋值操作,不再显示运算的结果。 在MATLAB语句后面可以加上注释,注释以开头,后面是注释的内容。 例2。1 计算表达式的值,并将结果赋给变量x,然后显示出结果. 在MATLAB命令窗口输入命令: x=(5+cos(47*pi/180)/(1+sqrt(7)-2i) %计算表达式的值4.2 矩阵及其运算 矩阵是MATLAB数据存储的基本单元,而矩阵的运算是MATLAB语言的核心,在MATLAB语言系统中几乎一切运算均是以对矩阵的操作为基础的.下面重点介绍矩阵的生成、矩阵的基本运算和矩阵的数组运算.4.2.1 矩阵的生成1. 直接输入法从键盘上直接输入矩阵是最方便、最常用的创建数值矩阵的方法,尤其适合较小的简单矩阵。在用此方法创建矩阵时,应当注意以下几点: 输入矩阵时要以“ 为其标识符号,矩阵的所有元素必须都在括号内. 矩阵同行元素之间由空格或逗号分隔,行与行之间用分号或回车键分隔。 矩阵大小不需要预先定义。 矩阵元素可以是运算表达式。 若“ 中无元素表示空矩阵. 2。 利用M文件建立矩阵 对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件. 例2.2 利用M文件建立MYMAT矩阵. (1)启动有关编辑程序或MATLAB文本编辑器,并输入待建矩阵。 (2)把输入的内容以纯文本方式存盘(设文件名为mymatrix。m)。 (3)运行该M文件,就会自动建立一个名为MYMAT的矩阵,可供以后使用。3。 利用MATLAB函数建立矩阵常用的有下面几个:zeros(m) 生成m阶全0矩阵eye(m) 生成m阶单位矩阵ones(m) 生成m阶全1矩阵rand(m) 生成m阶均匀分布的随机阵 randn(m) 生成m阶正态分布的随机矩阵 这几个函数的调用格式相似,下面以产生零矩阵的zeros函数为例进行说明。其调用格式是: zeros(m) 产生mm零矩阵 zeros(m,n) 产生mn零矩阵。 zeros(size(A) 产生与矩阵A同样大小的零矩阵 相关的函数有:length(A)给出行数和列数中的较大者,即length(A)=max(size(A);ndims(A)给出A的维数。例2。3 分别建立33、32和与矩阵A同样大小的零矩阵.(1)建立一个33零矩阵:zeros(3)(2)建立一个32零矩阵:zeros(3,2)(3)建立与矩阵A同样大小零矩阵:zeros(size(A)) 此外,常用的函数还有reshape(A,m,n),它在矩阵总元素保持不变的前提下,将矩阵A重新排成mn的二维矩阵。 4。 建立大矩阵 大矩阵可由方括号中的小矩阵建立起来.例如 A=1 2 3;4 5 6;7 8 9; C=A,eye(size(A); ones(size(A),A2。3。2 冒号表达式 冒号表达式的一般格式: e1:e2:e3 还可以用linspace函数产生行向量:linspace(a,b,n) linspace(a,b,n)与a:(ba)/(n-1):b等价。例如: a=1:0。5:4a= Columns through 7 1 1。5 2 2.5 3 3。5 42。3.3 矩阵的拆分1。 矩阵元素 MATLAB允许用户对一个矩阵的单个元素进行赋值和操作。例如 A(3,2)=200 也可以采用矩阵元素的序号来引用矩阵元素。矩阵元素按列编号,先第一列,再第二列,依次类推. 以mn矩阵A为例,矩阵元素A(i,j)的序号为(j1)m+i。2. 矩阵拆分 (1)利用冒号表达式获得子矩阵 A(:,j)表示取A矩阵的第j列全部元素;A(i,:)表示A矩阵第i行的全部元素;A(i,j)表示取A矩阵第i行、第j列的元素。 A(i:i+m,:)表示取A矩阵第ii+m行的全部元素;A(:,k:k+m)表示取A矩阵第kk+m列的全部元素,A(i:i+m,k:k+m)表示取A矩阵第ii+m行内,并在第kk+m列中的所有元素。 其次,通过使用冒号,可以截取指定矩阵中的部分。例如: A=1 2 3;4 5 6;7 8 9 A= 1 2 3 4 5 6 7 8 9 B=A (1:2, : )B= 1 2 3 4 5 6通过上例可以看到B是由矩阵A的1到2行和相应的所有列的元素构成的一个新的矩阵。在这里,冒号代替了矩阵A的所有列。 (2)利用空矩阵删除矩阵的元素 在MATLAB中,定义为空矩阵。给变量X赋空矩阵的语句为X=. 注意,X=与clear X不同,clear是将X从工作空间中删除,而空矩阵则存在于工作空间,只是维数为0。将某些元素从矩阵中删除,采用将其置为空矩阵的方法就是一种有效的方法.4。2。2 矩阵的基本数学运算矩阵的基本数学运算包括矩阵的四则运算、与常数的运算、逆运算、行列式运算、秩运算、特征值运算等基本函数运算,这里进行简单介绍。算术运算 1。 基本算术运算MATLAB的基本算术运算有:(加)、(减)、*(乘)、/(右除)、(左除)、(乘方)。矩阵的加、减、乘运算符分别为“+,-,*” ,用法与数字运算几乎相同,但计算时要满足其数学要求(如:同型矩阵才可以加、减)。在MATLAB中矩阵的除法有两种形式:左除“”和右除“/。在传统的MATLAB算法中,右除是先计算矩阵的逆再相乘,而左除则不需要计算逆矩阵直接进行除运算。通常右除要快一点,但左除可避免被除矩阵的奇异性所带来的麻烦。在MATLAB6中两者的区别不太大。 注意:运算是在矩阵意义下进行的,单个数据的算术运算只是一种特例。2。与常数的运算 常数与矩阵的运算即是同该矩阵的每一元素进行运算。但需注意进行数除时,常数通常只能做除数。 3MATLAB常用数学函数矩阵的函数运算是矩阵运算中最实用的部分,常用的主要有以下几个:det(a) 求矩阵a的行列式eig(a) 求矩阵a的特征值inv(a)或a (-1) 求矩阵a的逆矩阵rank(a) 求矩阵a的秩trace(a) 求矩阵a的迹(对角线元素之和)例如: a=2 1 3 1; 3 1 0 7; 1 2 4 2; 1 0 1 5; a1=det(a); a2=det(inv(a)); a1a2 ans= 14。2。2 矩阵的数组运算我们在进行工程计算时常常遇到矩阵对应元素之间的运算.这种运算不同于前面讲的数学运算,为有所区别,我们称之为数组运算(点运算)。1 基本数学运算数组的加、减与矩阵的加、减运算完全相同.而乘除法运算有相当大的区别,数组的乘除法是指两同维数组对应元素之间的乘除法,它们的运算符为“。”和“./”或“.前面讲过常数与矩阵的除法运算中常数只能做除数.在数组运算中有了“对应关系”的规定,数组与常数之间的除法运算没有任何限制.另外,矩阵的数组运算中还有幂运算(运算符为 。 )、指数运算(exp)、对数运算(log)、和开方运算(sqrt)等.有了“对应元素的规定,数组的运算实质上就是针对数组内部的每个元素进行的.点运算符有。、。/、。和。两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维参数相同。例如: a=2 1 -3 -1; 3 1 0 7; 1 2 4 -2; 1 0 1 5; a3 ans=32 28 -101 3499 12 151 2391 49 93 851 17 -98 139 a 。3 ans=8 1 -27 127 1 0 3431 8 64 8 1 0 1 125由上例可见矩阵的幂运算与数组的幂运算有很大的区别.2逻辑关系运算 逻辑运算是MATLAB中数组运算所特有的一种运算形式,也是几乎所有的高级语言普遍适用的一种运算。它们的具体符号、功能及用法见表4-2.表4-2符号运算符功 能函 数 名= =等于eq =不等于ne大于gt=小于等于le=大于等于ge逻辑与and逻辑或or逻辑非not 说明: 在关系比较中,若比较的双方为同维数组,则比较的结果也是同维数组。它的元素值由0和1组成。当比较双方对应位置上的元素值满足比较关系时,它的对应值为1,否则为0. 当比较的双方中一方为常数,另一方为一数组,则比较的结果与数组同维. 在算术运算、比较运算和逻辑与、或、非运算中,它们的优先级关系先后为: 比较运算、算术运算、逻辑与或非运算。 例2。4 产生5阶随机方阵A,其元素为10,90区间的随机整数,然后判断A的元素是否能被3整除。 (1) 生成5阶随机方阵A. A=fix(9010+1)rand(5)+10) (2) 判断A的元素是否可以被3整除。 P=rem(A,3)=05 MATLAB图形功能MATLAB有很强的图形功能,可以方便地实现数据的视觉化。强大的计算功能与图形功能相结合为MATLAB在科学技术和教学方面的应用提供了更加广阔的天地。下面着重介绍二维图形的画法,对三维图形只作简单叙述。5。1 二维图形的绘制5。1.1 基本形式二维图形的绘制是MATLAB语言图形处理的基础,MATLAB最常用的画二维图形的命令是plot,plot函数的基本调用格式为:plot(x,y) 其中x和y为长度相同的向量,分别用于存储x坐标和y坐标数据。看两个简单的例子: y=0 0.58 0.70 0.95 0。83 0。25; plot(y)生成的图形见图51,是以序号为横坐标、数组y的数值为纵坐标画出的折线. x=linspace(0,2pi,30); 生成一组线性等距的数值 y=sin(x); plot(x,y)生成的图形见图52,是上30个点连成的光滑的正弦曲线。 图51 图52说明:(1)当x,y是同维矩阵时,则以x,y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数.(2)当x是向量,y是有一维与x同维的矩阵时,则绘制出多根不同色彩的曲线.曲线条数等于y矩阵的另一维数,x被作为这些曲线共同的横坐标.(3)plot函数最简单的调用格式是只包含一个输入参数:plot(x).例4.2 某工厂2000年各月总产值(单位:万元)分别为22、60、88、95、56、23、9、10、14、81、56、23,试绘制折线图以显示出该厂总产值的变化情况。 程序如下: p=22,60,88,95,56,23,9,10,14,81,56,23; plot(p)5.1。2 多重线在同一个画面上可以画许多条曲线,只需多给出几个数组,含多个输入参数的plot函数调用格式为:plot(x1,y1,x2,y2,,xn,yn)例如 x=0:pi/15:2*pi; y1=sin(x); y2=cos(x); plot(x,y1,x,y2)则可以画出图5-3.多重线的另一种画法是利用hold命令。在已经画好的图形上,若设置hold on,MATLA将把新的plot命令产生的图形画在原来的图形上。而命令hold off 将结束这个过程.例如: x=linspace(0,2pi,30); y=sin(x); plot(x,y)先画好图52,然后用下述命令增加cos(x)的图形,也可得到图53。 hold on z=cos(x); plot(x,z) hold off 图5-3 图5-4 含选项的plot函数调用格式为:plot(x1,y1,选项1,x2,y2, 选项2,xn,yn,选项n)例4。3 用不同线型和颜色在同一坐标内绘制曲线y=2e0。5xsin(2x)。程序如下: x=(0:pi/100:2pi); y1=2exp(0。5*x)1,1; y2=2exp(-0。5*x)。sin(2pix); x1=(0:12)/2; y3=2exp(0。5x1).sin(2pix1); plot(x,y1,g:,x,y2,b-,x1,y3,rp); 5。1.3 线型和颜色MATLAB对曲线的线型和颜色有许多选择,标注的方法是在每一对数组后加一个字符串参数,说明如下:线型(LineStyle)说明线型符号实线虚线双点线:点划线标识点(Marker)说明标识点符号说明标识点符号说明标识点符号说明+加号s方块左三角o圆点d菱形P五角形*星号上三角h六角形点号V下三角x叉号右三角线的颜色(Color)说明名称缩写RGB值名称缩写RGB值黄色Y1 1 0绿色g0 1 0紫红色M1 0 1蓝色b0 0 1兰绿色C0 1 1白色w1 1 1红色R1 0 0黑色k0 0 0以下面的例子说明用法: x=0:pi/15:2pi; y1=sin(x); y2=cos(x); plot(x,y1,b:+,x,y2,g。*)可得图形54。Plot(,PropertyName, PropertyValue,)PropertyName:线宽(LineWidth),颜色(Color),标识点(Marker),标识点边缘颜色(MarkerEdgeColor),标识点充填颜色(MarkerFaceColor),标识点大小(MarkerSize)等。例:x=0:pi/50:2*pi;y=sin(x);plot(x,y,linewidth,8,color,r)grid on例: t=0:pi/20:2pi;plot(t,sin(t),.r*)hold on%以后图形绘绘制在当前坐标轴图形上plot(t,sin(t-pi/2),mo,Linewidth,2);plot(t,sin(t-pi),:bs,linewidth,3,MarkerEdgeColor,k, MarkerFaceColor,。49 1 。63,MarkerSize,12)hold off 绘制图形的辅助操作 1. 图形标注 有关图形标注函数的调用格式为: title(图形名称) xlabel(x轴说明) ylabel(y轴说明) text(x,y,图形说明)legend(图例1,图例2,) line(X,Y)%在当前图形窗口中添加以向量X和向量Y而绘制成的直线.例4。5 给图形添加图形标注.程序如下: x=(0:pi/100:2*pi); y1=2exp(0.5*x)1,1; y2=2exp(-0。5x)。sin(2*pix); x1=(0:12)/2; y3=2exp(-0.5*x1).sin(2pix1); plot(x,y1,g:,x,y2,b-,x1,y3,rp); title(曲线及其包络线); 加图形标题 xlabel(independent variable X); %加X轴说明 ylabel(independent variable Y); %加Y轴说明 text(2.8,0。5,包络线); 在指定位置添加图形说明 text(0.5,0。5,曲线y); text(1.4,0。1,离散数据点); legend(包络线,包络线,曲线y,离散数据点) 加图例X=0 16;Y=0 0;line(X,Y);更方便的是用鼠标来确定字符串的位置,方法是输入命令: gtext(sinx)在图形窗口十字线的交点是字符串的位置,用鼠标点一下就可以将字符串放在那里.2。 坐标控制函数的调用格式为:axis(xmin xmax ymin ymax zmin zmax)axis函数功能丰富,常用的用法还有:axis equal 纵、横坐标轴采用等长刻度axis square 产生正方形坐标系(缺省为矩形)axis auto 使用缺省设置axis off 取消坐标轴axis on 显示坐标轴grid on/off命令控制是画还是不画网格线,不带参数的grid命令在两种状态之间进行切换。box on/off命令控制是加还是不加边框线,不带参数的box命令在两种状态之间进行切换.例4.6 用图形保持功能在同一坐标内绘制曲线y=2e0.5xsin(2x)及其包络线,并加网格线。 程序如下: x=(0:pi/100:2pi); y1=2exp(0。5x)1,-1;y2=2exp(-0。5x).*sin(2pix); plot(x,y1,b:); axis(0,2pi,2,2); 设置坐标 hold on; %设置图形保持状态 plot(x,y2,k); grid on; 加网格线 box off; 不加坐标边框 hold off; %关闭图形保持3。 图形窗口的分割 subplot函数的调用格式为: subplot(m,n,p) 例4。7 在一个图形窗口中以子图形式同时绘制正弦、余弦、正切、余切曲线。 程序如下: x=linspace(0,2pi,60); y=sin(x);z=cos(x); t=sin(x)。/(cos(x)+eps); ct=cos(x)./(sin(x)+eps); subplot(2,2,1); plot(x,y);title(sin(x));axis (0,2pi,1,1); subplot(2,2,2); plot(x,z);title(cos(x);axis (0,2pi,1,1); subplot(2,2,3); plot(x,t);title(tangent(x);axis (0,2*pi,40,40); subplot(2,2,4); plot(x,ct);title(cotangent(x);axis (0,2pi,-40,40);对图形窗口灵活分割。请看下面的程序。 x=linspace(0,2*pi,60); y=sin(x);z=cos(x); t=sin(x)./(cos(x)+eps); ct=cos(x)。/(sin(x)+eps); subplot(2,2,1); %选择22个区中的1号区 stairs(x,y);title(sin(x)1);axis (0,2pi,1,1); subplot(2,1,2); 选择21个区中的2号区 stem(x,y);title(sin(x)2);axis (0,2*pi,1,1); subplot(4,4,3); 选择44个区中的3号区 plot(x,y);title(sin(x));axis (0,2pi,-1,1); subplot(4,4,4); 选择44个区中的4号区 plot(x,z);title(cos(x);axis (0,2pi,1,1); subplot(4,4,7); 选择44个区中的7号区 plot(x,t);title(tangent(x);axis (0,2*pi,40,40); subplot(4,4,8); %选择44个区中的8号区 plot(x,ct);title(cotangent(x);axis (0,2pi,-40,40);绘制二维图形的其他函数其他形式的线性直角坐标图在线性直角坐标系中,其他形式的图形有条形图、阶梯图、杆图和填充图等,所采用的函数分别是:bar(x,y,选项)stairs(x,y,选项)stem(x,y,选项)fill(x1,y1,选项1,x2,y2,选项2,)例4。8 分别以条形图、填充图、阶梯图和杆图形式绘制曲线y=2e-0.5x. 程序如下: x=0:0.35:7; y=2exp(-0。5*x); subplot(2,2,1);bar(x,y,g); title(bar(x,y,g);axis(0,7,0,2); subplot(2,2,2);fill(x,y,r); title(fill(x,y,r));axis(0,7,0,2); subplot(2,2,3);stairs(x,y,b); title(stairs(x,y,b);axis(0,7,0,2); subplot(2,2,4);stem(x,y,k); title(stem(x,y,k));axis(0,7,0,2);条形图在Matlab中,函数bar用于绘制二维垂直条形图,函数barh用于绘制二维水平条形图,两个函数的用法基本相同,差别在绘制图形的方向上.下面给出bar函数的调用格式:bar(Y)bar(X,Y)bar(,width)bar(style)bar(,LineSpec)bar(Y)绘制Y每个元素的条形图,如果Y是矩阵,绘制Y行数个条形组。条形的高度对应于Y的值。bar(X,Y)用法和bar(Y)一样,但不是对应Y下标而是对应X来绘制条形图,这里的X向量必须具有单调性。参数width来设定条形的宽度,默认的宽度是0。8,如果宽度大于1,则条形图间就会出现交叠.参数style对应条形图的两种格式,可选grouped或者stacked,这里grouped为垂直排列组的条形图,stacked为垂直堆形的条形图,其中grouped是默认值。参数LineSpec和前面用法一样,用来设置线型,色彩及点型等.例:二维条形图示例:Y=round(rand(5,3)10);Subplot(221);bar(Y,group);title(Group);subplot(222);bar(Y,stack);title(Stack);subplot(223);barh(Y,stack);title(Stack);subplot(224);bar(Y,1。5);title(Width=1.5);饼图为了显示数据元素在总体中所占的百分比的情况,我们常需要饼图。在Matlab中绘制饼图的函数有两个,即pie和pie3函数,分别用于二维和三维饼图的绘制.二维饼图:pie函数的调用格式:pie(X)pie(X,explode)pie(X) 中,X既可以是向量也可以是矩阵。如果X中各个元素的和大于等于1,则绘制出来的饼图中每个切片占整个饼图的百分比为这个元素值占X的元素值和的百分比。如果X中各个元素的各小于1,则绘制的是一个不完整的饼图,每个切片占整个饼图的百分比就对应于这个元素的值。参数explode用于设定饼图中切片的分离情况,参数explode的大小必须和X的大小一致,explode中非零元素对应的切片就是分离的切片.这里我们还可以加上自定义的标注,如pie(x,labels),参数labels的大小必须和X大小相同。例:x=1 3 0。5 2。5 2;subplot(221);pie(x)subplot(222);explode=0 1 0 0 0;pie(x,explode) 加上分离的切片subplot(223)label=一班,二班,三班,四班,五班;pie(x,label);subplot(224);pie(x,explode,label)%具有分离和自定义标注的功能三维饼图pie3的调用格式:pie3(X);pie3(X,explode)这里的各项参数的含义和pie的函数中参数相同.例子: x=5 10 7 8 1。3; explode=0 1 0 0 0;pie3(x,explode);title(三维饼图)5。3 图形的输出在数学建模中,往往需要将产生的图形输出到Word文档中.通常可采用下述方法:首先,在MATLAB图形窗口中选择【File】菜单中的【Export】选项,将打开图形输出对话框,在该对话框中可以把图形以emf、bmp、jpg、pgm等格式保存.然后,再打开相应的文档,并在该文档中选择【插入】菜单中的【图片】选项插入相应的图片即可。6 程序设计 MATLAB作为一种高级语言,它不仅可以如前几节所介绍的那样,以一种人机交互式的命令行的方式工作,还可以像BASIC、FORTRAN、C等其他高级计算机语言一样进行控制流的程序设计,即编制一种以 。 m为扩展名的MATLAB程序(简称M文件).而且,由于MATLAB本身的一些特点,M文件的编制同上述几种高级语言比较起来,有许多无法比拟的优点。6.1 M文件所谓M文件就是由MATLAB语言编写的可在MATLAB语言环境下运行程序源代码文件。由于商用的MATLAB软件是用C语言编写而成。因此,M文件的语法与C语言十分相似。对广大参加建模竞赛且学过C语言的同学来说,M文件的编写是相当容易的。M文件可以分为脚本文件(Script)和函数文件(Function)两种。M文件不仅可以在MATLAB的程序编辑器中编写,也可以在其他的文本编辑器中编写,并以“m为扩展名加以存储.M文件的分类 分类:命令文件(Script File)和函数文件(Function File).例3。1 建立一个命令文件将变量a,b的值互换,然后运行该命令文件。 首先建立命令文件并以文件名exch.m存盘: clear; a=1:10; b=11,12,13,14;15,16,17,18; c=a;a=b;b=c; a b 然后在MATLAB的命令窗口中输入exch,将会执行该命令文件。例3.2 建立一个函数文件将变量a,b的值互换,然后在命令窗口调用该函数文件。 首先建立函数文件fexch.m: function a,b=exch(a,b) c=a;a=b;b=c; 然后在MATLAB的命令窗口调用该函数文件: clear; x=1:10; y=11,12,13,14;15,16,17,18; x,y=fexch(x,y)6。1.1 脚本文件脚本类似于DOS下的批处理文件,不需要在其中输入参数,也不需要给出输出变量来接受处理结果,脚本仅是若干命令或函数的集合,用于执行特定的功能.脚本的操作对象为MATLAB工作空间内的变量,并且在脚本执行结束后,脚本中对变量的一切操作均会被保留。在MATLAB语言中也可以在脚本内部定义变量,并且该变量将会自动地被加入到当前的MATLAB工作空间中,并可以为其他的脚本或函数引用,直到MATLAB被关闭或采用一定的命令将其删除。例如:命令窗口中定义矩阵a,ba=pascal(3)a=1 1 11 2 31 3 6b=magic(3)b= 8 1 6 3 5 7 4 9 2% 在编辑器中编写下述命令 a=a+b b=ab a=ab在编辑器中编辑完上例的脚本文件后,保存至文件scriptsexample中,然后在工作窗口中调用该脚本文件, scriptsexample a a=8 1 63 5 74 9 2 bb= 1 1 1 1 2 3 1 3 6其中矩阵a、b均是在工作空间中已定义完毕的,脚本运行时直接使用该变量,并对其进行操作,然后在命令窗口中调用该脚本,可以看到变量a、b已经进行了相互交换.6。1。2 函数文件MATLAB语言中,相对于脚本文件而言,函数文件是较为复杂的。函数需要给定输入参数,并能够对输入变量进行若干操作,实现特定的功能,最后给出一定的输出结果或图形等,其操作对象为函数的输入变量和函数内的局部变量等。MATLAB语言的函数文件包含如下5个部分。(1) 函数题头:指函数的定义行,是函数语句的第一行,在该行中将定义函数名、输入变量列表及输出变量列表等.(2) HI行:指函数帮助文本的第一行,为该函数文件的帮助主题,当使用lookfor命令时,可以查看到该行信息。(3) 帮助信息:这部分提供了函数的完整的帮助信息,包括HI之后至第一个可执行行或空行为止的所有注释语句,通过MATLAB语言的帮助系统查看函数的帮助信息时,将显示该部分。(4) 函数体;指函数代码段,也是函数的主体部分。(5) 注释部分:指对函数体中各语句的解释和说明文本,注释语句是以%引导的.例如: functionoutput,output2=functionexample(input1,input2) 函数题头 %This is function to exchange two matrices % HI行 input1,input2 are input variables 帮助信息 output1,output2 are output variabl
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!