Matlab与数学建模软件部分_第1页
Matlab与数学建模软件部分_第2页
Matlab与数学建模软件部分_第3页
Matlab与数学建模软件部分_第4页
Matlab与数学建模软件部分_第5页
已阅读5页,还剩97页未读, 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数学建模与Matlab软件部分专题1:数学建模简介一、关于数学建模1.名词解释(1)什么是数学模型?数学模型是对于现实世界的一个特定对象,一个特定目的,根据特有的内在规律,做出一些必要的假设,运用适当的数学工具,得到一个数学结构.简单地说:就是系统的某种特征的本质的数学表达式(或是用数学术语对部分现实世界的描述),即用数学式子(如函数、图形、代数方程、微分方程、积分方程、差分方程等)来描述(表述、模拟)所研究的客观对象或系统在某一方面的存在规律.(2)什么是数学建模?数学建模是利用数学方法解决实际问题的一种实践.即通过抽象、简化、假设、引进变量等处理过程后,将实际问题用数学方式表达,建立起数学模型,然后运用先进的数学方法及计算机技术进行求解.观点:“所谓高科技就是一种数学技术”n数学建模其实并不是什么新东西,可以说有了数学并需要用数学去解决实际问题,就一定要用数学的语言、方法去近似地刻画该实际问题,这种刻划的数学表述的就是一个数学模型,其过程就是数学建模的过程.数学模型一经提出,就要用一定的技术手段(计算、证明等)来求解并验证,其中大量的计算往往是必不可少的,高性能的计算机的出现使数学建模这一方法如虎添翼似的得到了飞速的发展,掀起一个高潮.n数学建模将各种知识综合应用于解决实际问题中,是培养和提高同学们应用所学知识分析问题、解决问题的能力的必备手段之一.2、数学建模的一般方法和步骤建立数学模型的方法和步骤并没有一定的模式,但一个理想的模型应能反映系统的全部重要特征:模型的可靠性和模型的使用性建模的一般方法:◆机理分析◆测试分析方法机理分析:根据对现实对象特性的认识,分析其因果关系,找出反映内部机理的规律,所建立的模型常有明确的物理或现实意义.测试分析方法:将研究对象视为一个“黑箱”系统,内部机理无法直接寻求,通过测量系统的输入输出数据,并以此为基础运用统计分析方法,按照事先确定的准则在某一类模型中选出一个数据拟合得最好的模型.测试分析方法也叫做系统辩识.将这两种方法结合起来使用,即用机理分析方法建立模型的结构,用系统测试方法来确定模型的参数,也是常用的建模方法.3.数学模型及其分类数学模型的分类:◆按研究方法和对象的数学特征分:初等模型、几何模型、优化模型、微分方程模型、统计模型、图论模型、逻辑模型、稳定性模型、扩散模型等.◆按研究对象的实际领域(或所属学科)分:人口模型、交通模型、环境模型、生态模型、生理模型、城镇规划模型、水资源模型、污染模型、经济模型、社会模型等.4、历年数学建模竞赛题目1992A题施肥效果分析1992B题实验数据分解1993A题非线性交调的频率设计1993B题足球队排名次1994A题逢山开路1994B题锁具装箱1995A题一个飞行管理问题1995B题天车与冶炼炉的作业调度1996A题最优捕鱼策略1996B题节水洗衣机1997A题零件的参数设计1997B题截断切割1998A题投资的收益和风险1998B题灾情的巡视路线1999A题自动化车床管理投资的收益和风险1999B题钻井布局1999C题煤矸石堆积1999D题钻井布局2000A题DNA序列分类2000B题钢管订购和运输2000C题飞越北极2000D题空洞探测2001A题血管的三维重建2001B题公交车调度2001C题基金使用计划2001D题公交车调度2002A题车灯线光源的优化设计2002B题彩票中的数学2002C题车灯线光源的计算2002D题赛程安排2003A题SARS的传播2003B题露天矿生产的车辆调度2003C题SARS的传播2003D题抢渡长江2004A题奥运会临时超市网点设计2004B题电力市场的输电阻塞管理2004C题饮酒驾车2004D题公务员招聘2005A题长江水质的评价和预测2005B题DVD在线租赁2005C题雨量预报方法的评价2005D题DVD在线租赁2006A题出版社的资源配置2006B题艾滋病疗法的评价及疗效的预测2006C题易拉罐形状和尺寸的最优设计2006D题煤矿瓦斯和煤尘的监测与控制2007A题中国人口增长预测2007B题乘公交,看奥运2007C题手机“套餐”优惠几何2007D题体能测试时间安排2008A题数码相机定位2008B题高等教育学费标准探讨2008C题地面搜索2008D题NBA赛程的分析与评价2009A题制动器试验台的控制方法分析2009B题眼科病房的合理安排2009C题卫星和飞船的跟踪测控2009D题会议筹备2010A题储油罐的变位识别与罐容表标定2010B题2010年上海世博会影响力的定量评估2010C题输油管的布置2010D题对学生宿舍设计方案的评价2011年(A)城市表层土壤重金属污染分析(B)交巡警服务平台的设置与调度(C)企业退休职工养老金制度的改革(D)天然肠衣搭配问题2012年(A)葡萄酒的评价(B)太阳能小屋的设计(C)脑卒中发病环境因素分析及干预(D)机器人避障问题二、数学建模实例A、人口预报问题1.问题人口问题是当前世界上人们最关心的问题之一.认识人口数量的变化规律,作出较准确的预报,是有效控制人口增长的前提.下面介绍两个最基本的人口模型,并利用表1给出的近两百年的美国人口统计数据,对模型做出检验,最后用它预报2000年、2010年美国人口.表1美国人口统计数据年(公元)人口(百万)17903.918005.318107.218209.6183012.9184017.1185023.2年(公元)人口(百万)186031.4187038.6188050.2189062.9190076.0191092.01920106.5年(公元)人口(百万)1930123.21940131.71950150.71960179.31970204.01980226.51990251.42.指数增长模型(马尔萨斯人口模型)此模型由英国人口学家马尔萨斯(Malthus1766—1834)于1798年提出.[1]假设:人口增长率是常数(或单位时间内人口的增长量与当时的人口成正比).[2]建立模型:记时刻t=0时人口数为x0,时刻t的人口为,由于量大,可视为连续、可微函数.t到时间内人口的增量为:于是满足微分方程:(1)[3]模型求解:解微分方程(1)得(2)表明:时,(>0).[4]模型的参数估计:要用模型的结果(2)来预报人口,必须对其中的参数r进行估计,这可以用表1-1的数据通过拟合得到.拟合的具体方法见本书第16章或第18章.通过表中1790—1980的数据拟合得:=0.307.[5]模型检验:将x0=3.9,=0.307代入公式(2),求出用指数增长模型预测的1810—1920的人口数,见表2.表2美国实际人口与按指数增长模型计算的人口比较年(公元)实际人口(百万)指数增长模型预测人口(百万)误差(%)17903.918005.31818209.610.04.2183012.913.76.21840185023.225.610.3186031.435.010.8187038.647.823.8188050.265.530.5189062.989.642.4190076.0122.561.2191092.0167.682.11920106.5229.3115.3从表2可看出,1810—1870间的预测人口数与实际人口数吻合较好,但1880年以后的误差越来越大.分析原因,该模型的结果说明人口将以指数规律无限增长.而事实上,随着人口的增加,自然资源、环境条件等因素对人口增长的限制作用越来越显著.如果当人口较少时人口的自然增长率可以看作常数的话,那么当人口增加到一定数量以后,这个增长率就要随着人口增加而减少.于是应该对指数增长模型关于人口净增长率是常数的假设进行修改.下面的模型是在修改的模型中著名的一个.3.阻滞增长模型(logistic模型)[1]假设:(a)人口增长率为人口的函数(减函数),最简单假定(线性函数),叫做固有增长率.(b)自然资源和环境条件年容纳的最大人口容量.[2]建立模型:当时,增长率应为0,即=0,于是,代入得:(3)将(3)式代入(1)得:模型:(4)[3]模型的求解:解方程组(4)得(5)根据方程(4)作出曲线图,见图1,由该图可看出人口增长率随人口数的变化规律.根据结果(5)作出x-t曲线,见图2,由该图可看出人口数随时间的变化规律.OOx图1曲线图xxtO图2x-t曲线图[4]模型的参数估计:利用表1中1790—1980的数据对和拟合得:=0.2072,=464.[5]模型检验:将=0.2072,=464代入公式(5),求出用指数增长模型预测的1800—1990的人口数,见表3第3、4列.也可将方程(4)离散化,得t=0,1,2,…,(6)用公式(6)预测1800—1990的人口数,结果见表3第5、6列.表3美国实际人口与按阻滞增长模型计算的人口比较年实际人口(百万)阻滞增长模型公式(5)公式(6)预测人口(百万)误差(%)预测人口(百万)误差(%)17903.918005.35.90250.11373.90000.264218107.27.26140.00856.50740.096218209.68.93320.06958.68100.0957183012.910.98990.148111.41530.1151184017.113.52010.209415.12320.1156185023.216.63280.283119.81970.1457186031.420.46210.348326.52280.1553187038.625.17310.347835.45280.0815188050.230.96870.383143.53290.1328189062.938.09860.394356.18840.1067190076.046.86990.383370.14590.0770191092.057.66070.373384.73050.07901920106.570.93590.3339102.46260.03791930123.287.26740.2917118.95090.03451940131.7107.35880.1848137.88100.04691950150.7132.07590.1236148.79780.01261960179.3162.48350.0938170.27650.05031970204.0199.89190.0201201.17720.01381980226.5245.91270.0857227.57480.00471990251.4302.52880.2034250.44880.0038[6]模型应用:现应用该模型预测人口.用表1中1790—1990年的全部数据重新估计参数,可得=0.2083,=457.6.用公式(6)作预测得:x(2000)=275;x(2010)=297.9.也可用公式(5)进行预测.B、椅子能在不平的地面上放稳吗?把椅子往不平的地面上一放,通常只有三只脚着地,放不稳,然而只要稍挪动几次,就可以四脚着地,放稳了.下面用数学语言证明.模型假设对椅子和地面都要作一些必要的假设:椅子四条腿一样长,椅脚与地面接触可视为一个点,四脚的连线呈正方形.地面高度是连续变化的,沿任何方向都不会出现间断(没有像台阶那样的情况),即地面可视为数学上的连续曲面.对于椅脚的间距和椅脚的长度而言,地面是相对平坦的,使椅子在任何位置至少有三只脚同时着地.BCAxD中心问题是数学语言表示四只脚同时着地的条件、结论.首先用变量表示椅子的位置,由于椅脚的连线呈正方形,以中心为对称点,正方形绕中心的旋转正好代表了椅子的位置的改变,于是可以用旋转角度这一变量来表示椅子的位置.其次要把椅脚着地用数学符号表示出来,如果用某个变量表示椅脚与地面的竖直距离,当这个距离为0时,表示椅脚着地了.椅子要挪动位置说明这个距离是位置变量的函数.由于正方形的中心对称性,只要设两个距离函数就行了,记A、C两脚与地面距离之和为,B、D两脚与地面距离之和为,显然、,由假设2知f、g都是连续函数,再由假设3知、至少有一个为0.当时,不妨设,这样改变椅子的位置使四只脚同时着地,就归结为如下命题:命题已知、是的连续函数,对任意,*=0,且,则存在,使.三、模型求解将椅子旋转,对角线AC和BD互换,由可知.令,则,由f、g的连续性知h也是连续函数,由零点定理,必存在使,,由,所以.四、评注模型巧妙在于用一元变量表示椅子的位置,用的两个函数表示椅子四脚与地面的距离.利用正方形的中心对称性及旋转并不是本质的,同学们可以考虑四脚呈长方形的情形.C、双层玻璃的功效北方城镇的有些建筑物的窗户是双层的,即窗户上装两层厚度为的玻璃夹着一层厚度为的空气,如左图所示,据说这样做是为了保暖,即减少室内向室外的热量流失.我们要建立一个模型来描述热量通过窗户的热传导(即流失)过程,并将双层玻璃窗与用同样多材料做成的单层玻璃窗(如右图,玻璃厚度为)的热量传导进行对比,对双层玻璃窗能够减少多少热量损失给出定量分析结果.模型假设热量的传播过程只有传导,没有对流.即假定窗户的密封性能很好,两层玻璃之间的空气是不流动的;室内温度和室外温度保持不变,热传导过程已处于稳定状态,即沿热传导方向,单位时间通过单位面积的热量是常数;玻璃材料均匀,热传导系数是常数.符号说明——室内温度——室外温度——单层玻璃厚度——两层玻璃之间的空气厚度——内层玻璃的外侧温度——外层玻璃的内侧温度——热传导系数——热量损失模型建立与求解由物理学知道,在上述假设下,热传导过程遵从下面的物理规律:厚度为的均匀介质,两侧温度差为,则单位时间由温度高的一侧向温度低的一侧通过单位面积的热量为,与成正比,与成反比,即(1)其中为热传导系数.1.双层玻璃的热量流失记双层窗内窗玻璃的外侧温度为,外层玻璃的内侧温度为,玻璃的热传导系数为,空气的热传导系数为,由(1)式单位时间单位面积的热量传导(热量流失)为:(2)由及可得再代入就将(2)中、消去,变形可得:(3)2.单层玻璃的热量流失对于厚度为的单层玻璃窗户,容易写出热量流失为:(4)单层玻璃窗和双层玻璃窗热量流失比较比较(3)(4)有:(5)显然,.为了获得更具体的结果,我们需要的数据,从有关资料可知,不流通、干燥空气的热传导系数(J/cm.s.ºC),常用玻璃的热传导系数(J/cm.s.ºC),于是在分析双层玻璃窗比单层玻璃窗可减少多少热量损失时,我们作最保守的估计,即取,由(3)(5)可得:(6)4.模型讨论比值反映了双层玻璃窗在减少热量损失上的功效,它只与有关,下图给出了的曲线,当由0增加时,迅速下降,而当超过一定值(比如)后下降缓慢,可见不宜选得过大.四、模型的应用这个模型具有一定的应用价值.制作双层玻璃窗虽然工艺复杂会增加一些费用,但它减少的热量损失却是相当可观的.通常,建筑规范要求.按照这个模型,,即双层玻璃窗比用同样多的玻璃材料制成的单层窗节约热量97%左右.不难发现,之所以有如此高的功效主要是由于层间空气的极低的热传导系数,而这要求空气是干燥、不流通的.作为模型假设的这个条件在实际环境下当然不可能完全满足,所以实际上双层玻璃窗的功效会比上述结果差一些.三、怎样撰写数学建模的论文论文检索及其他信息来源:1、传统资源.图书馆纸质书籍期刊。2、网络资源。数据库:中国期刊网,超星,书生之家(图书馆首页-->数据库导航)搜索引擎:google学术、google图书(google搜索技巧)新浪共享资料、豆丁网百度文库、CSDN、人大经济论坛各大高校BBS论坛、FTP资源数学中国论坛国家统计局维基百科(英文版)信息检索技术:1、利用搜索引擎,关键词搜索2、数据库中,利用题名、摘要、作者等分类搜索3、从参考文献入手4、从维基百科(英文版)词条的reference入手5、从在该领域有名的教授的论文入手建模网站推荐:/(中国大学生数学建模竞赛(CUMCM)-竞赛)/home/(中国数学建模网)/数学中国(数学建模交流社区)(用关键字数学建模或者数学建模竞赛搜索)百度百科参考书籍1.《数学建模与数学实验》第三版赵静等编(有电子版)2.《数学模型》第三版姜启源等(有电子版)3.其他建模书籍专题2:Matlab软件基本使用第一节:数学软件与Matlab简介数学软件概述数学建模的过程告诉我们建立一个较理想的数学模型需要必要的数学理论,高度的洞察力,过硬的分析能力和大量的经验积累。但在模型求解,分析与验证过程中则更需要一个计算能力相当强的工具——数学软件。数学软件(或数学软件包)是一种处理数学问题的应用软件,出现在20世纪70年代,这些软件是由标准算法程序发展而来的,具有较强的图形学功能,成为用计算机解决科学技术各领域中所提出的数学问题的手段和工具.数学软件列表:1、Matlab、Maple、Mathmatica、MathCad2、Lindo与Lingo(优化软件)3、SAS与SPSS(统计软件)数学建模(matlab-数值计算,Lingo优化,spss统计)二、Matlab简介它是一种功能强大的科学计算软件(数值计算、符号运算、图形处理等)。Matlab——MatrixLaboratory,该语言是美国NewMexico大学计算机系主任CleveMoler在70年代后期首先设计的.并于80年代初开发了第二代专业版.1984年,CleveMoler和JohnLitter成立了Mathworks公司,并开始把Matlab推向市场.(迈斯沃克公司)1、MATLAB发展历史时间表70s后期MATLAB(MATrix和LABoratory)-FORTRAN语言-美国新墨西哥大学计算机科学系主任Cleve-Moler教授1984MathWorks公司(Little、Moler、SteveBangert)推向市场-C语言1993第一个windows版本问世(1993年MathWorks公司从加拿大滑铁卢大学购得Maple的使用权,以Maple为“引擎”开发了SymbolicMathToolbox1.0。MathWorks公司此举加快结束了国际上数值计算、符号计算孰优孰劣的长期争论,促成了两种计算的互补发展新时代。)2001MATLAB6.12002MATLAB6.52005MATLAB7.12009MATLAB7.8/7.92010MATLAB7.10/7.112011MATLAB7.12/7.132012MATLAB7.14/8.02013MATLAB8.12、MATLAB语言特点功能强大(数值计算、符号运算、图形处理)矩阵变换及运算、多项式运算、微积分运算、线性与非线性方程求解、常(偏)微分方程求解、插值与拟合、统计与优化等问题语言简单它允许用户以数学形式的语言编写程序,比B、C、F等更接近书写计算公式的思维方式.用C,C++编写,程序流控制语句与C较接近.扩充能力强,可开发性强完全的开放系统、直接查看函数源程序.也可创建自己的库.也与C、F语言及maple软件有接口.编程易、效率高不需编译MATLAB应用领域目前,Matlab已经成为国际上最流行的科学与工程计算的软件工具,它已经不仅仅是一个“矩阵实验室”了,而成为了一种具有广泛应用前景的全新的计算机高级编程语言,有人称它为“第四代”计算机语言。就影响而言,至今仍然没有一个别的计算软件可与Matlab匹敌。在欧美各高等院校,Matlab已经成为线性代数、自动控制理论、数字信号处理、时间序列分析、动态系统仿真、图像处理等课程的基本教学工具,成为大学生、硕士生以及博士生必须掌握的基本技能。应用工具箱基本部分和各种可选的工具箱。1)基本部分中有数百个内部函数。2)其工具箱分为两大类:功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能、可视建模仿真功能及文字处理功能等。学科性工具箱专业性比较强,如控制系统工具箱、信号处理工具箱、神经网络工具箱、最优化工具箱、金融工具箱等,用户可以直接利用这些工具箱进行相关领域的科学研究。可做工作列表:●数值分析●数值和符号计算●工程与科学绘图●控制系统的设计与仿真●数字图像处理技术●数字信号处理技术●通讯系统设计与仿真●财务与金融工程常用的工具箱:MatlabMainToolbox——matlab主工具箱ControlSystemToolbox——控制系统工具箱CommunicationToolbox——通讯工具箱FinancialToolbox——财政金融工具箱SystemIdentificationToolbox——系统辨识工具箱FuzzyLogicToolbox——模糊逻辑工具箱Higher-OrderSpectralAnalysisToolbox——高阶谱分析工具箱ImageProcessingToolbox——图象处理工具箱LMIControlToolbox——线性矩阵不等式工具箱ModelpredictiveControlToolbox——模型预测控制工具箱

μ-AnalysisandSynthesisToolbox——μ分析工具箱NeuralNetworkToolbox——神经网络工具箱OptimizationToolbox——优化工具箱PartialDifferentialToolbox——偏微分方程工具箱RobustControlToolbox——鲁棒控制工具箱SignalProcessingToolbox——信号处理工具箱SplineToolbox——样条工具箱StatisticsToolbox——统计工具箱SymbolicMathToolbox——符号数学工具箱SimulinkToolbox——动态仿真工具箱WaveleToolbox——小波工具箱进入与工作界面当你计算机中成功地安装了Matlab6.5版后,在window桌面上就会出现matlab6.5图标。双击就可进入matlab的界面。5个窗口、10个按钮控件、6个下拉式菜单1)、主窗口不能进行任何计划任务操作,只用来进行一些整体环境参数的设置;2)、命令窗口(Commandwindow)用户的主要工作平台,所有指令都在该窗口输入;3)、历史窗口(CommandHistory)自安装之日起所有使用过的命令均记录在此;4)、当前目录窗口(CurrentDirectory)显示或修改当前目录;5)、发行说明书窗口(Launchpad)说明用户所拥有的Mathworks公司产品的工具包、演示及帮助信息;(6.5版本没有)6)、工作间管理窗口(Workspace)显示目前内存中存放的所有变量,这些变量均可通过数据文件(.mat)存盘.Maltab的运行方式Matlab提供了两种运行方式:命令行方式和M文件方式。命令行运行方式通过直接在命令窗口中输入命令行来实现计算或作图功能,但这种方式在处理比较复杂的问题和大量数据时相当困难。而M文件运行方式则先在一个以m为扩展名的M文件中输入一系列数据和命令,然后让Matlab执行这些命令。Matlab的M文件有两种类型:脚本M文件和函数M文件。一个比较复杂的程序常常要作反复的调试,这时可以建立一个脚本M文件并将其储存起来,以便随时调用计算。脚本M文件就是命令的简单叠加。建立M文件的方法是:在Matlab窗口中单击File菜单,然后依次选择New—Mfile,打开M文件编辑窗口,在该窗口中输入程序文件,再以m为扩展名储存。要运行该M文件,只需在M文件编辑窗口的Debug菜单中选择Run即可。初识Matlab例1-1绘制正弦曲线和余弦曲线。

x=[0:0.5:360]*pi/180;

plot(x,sin(x),x,cos(x));例1-2求方程3x4+7x3+9x2-23=0的全部根。

p=[3,7,9,0,-23];%建立多项式系数向量

x=roots(p)%求根例1-3求积分

quad('x.*log(1+x)',0,1)例1-4求解线性方程组。

a=[2,-3,1;8,3,2;45,1,-9];

b=[4;2;17];

x=inv(a)*b例1-5:幻方(n阶幻方,由1…n^2)Matlab实现:magic(3)例1-6:模拟掷骰子9000次,来验证大数定律.forn=1:9000x(n)=1+floor(6*rand(1));endx';fori=1:6f(i)=length(find(x==i));pc(i)=length(find(x==i))/9000-1/6;endfpcMatlab软件学习要掌握更多的内容需要自学,help在线帮助系统(demos-图形演示),可十分方便地在线学习Matlab的各种函数的内涵及其用法,但这需要顽强的毅力。带着问题去学(从问题出发、解决你的问题)软件是相通的(标准Windows界面、详细的帮助系统、快捷键)多“折腾”(连蒙带猜地试探,找门路)动手、动眼、动脑数学课程学习抽象性与理论性,而数学软件的学习是实用性和实践性远程帮助系统

在MathWorks公司的主页()上可以找到很多有用的信息,国内的一些网站也有丰富的信息资源。demointro在线演示、入门演示doc+命令在线帮助open+命令打开源程序help+命令源程序部分注释funtool图形计算器lookfor利用lookfor指令,它可以从你键入的关键字(key-word)(即使这个关键字并不是MATLAB的指令)列出所有相关的题材,例如lookforcosine,lookforsinehelp命令只搜索出那些关键字完全匹配的结果,lookfor命令对搜索范围内的M文件进行关键字搜索,条件比较宽松。

lookfor命令只对M文件的第一行进行关键字搜索。若在lookfor命令加上-all选项,则可对M文件进行全文搜索。模糊查询

MATLAB6.0以上的版本提供了一种类似模糊查询的命令查询方法,用户只需要输入命令的前几个字母,然后按Tab键,系统就会列出所有以这几个字母开头的命令。让我们一起进入Matlab具体内容的学习。Let’sgo!第二节:matlab矩阵及基本运算MATLAB建立在向量、数组和矩阵的基础上,使用方便,人机界面直观,输出结果可视化.矩阵是MATLAB的核心.特殊变量表特殊变量取值ans用于结果的缺省变量名pi圆周率eps计算机的最小数,和1相加时产生一个比1大的数flops浮点运算数inf无穷大,如1/0NaN不定量,如0/0i,ji=j=nargin所用函数的输入变量数目nargout所用函数的输出变量数目realmin最小可用正实数realmax最大可用正实数2.数学运算符号及标点符号+加法运算,适用于两个数或两个同阶矩阵相加.—减法运算*乘法运算.*点乘运算/除法运算./点除运算^乘幂运算.^点乘幂运算\反斜杠表示左除.(1)MATLAB的每条命令后,若为逗号或无标点符号,则显示命令的结果;若命令后为分号,则禁止显示结果.(2)“%”后面所有文字为注释.(3)“...”表示续行.3.MATLAB数学函数

MATLAB提供了许多数学函数,函数的自变量规定为矩阵变量(数,向量,矩阵都可),运算法则是将函数逐项作用于矩阵的元素上,因而运算的结果是一个与自变量同维数的矩阵。

函数使用说明:

(1)三角函数以弧度为单位计算。

(2)abs函数可以求实数的绝对值、复数的模、字符串的ASCII码值。

(3)用于取整的函数有fix(靠0)、floor(向左)、ceil(向右)、round(四舍五入),要注意它们的区别。

(4)rem与mod函数的区别。rem(x,y)和mod(x,y)要求x,y必须为相同大小的实矩阵或为标量。formatshort小数点后4位(缺省)formatlong小数点后15位formatbank小数点2位formatrat355/113最接近的有理数formatshorte5位科学计数法formatlonge15位科学计数法数组1程序:x=[123458718]y=1:7z=3:2:9v=[yz]u=linspace(2,9,11)数组2程序:x=1:9y=x(2:2:8)z=[x(1)x(6)x(8)]Shuzu3程序:a=[1234]c=2a1=a+ca2=a*ca3=a./ca4=a.\ca5=a.^ca6=c.^aShuzu4程序:a=[222]b=[333]c1=a+bc2=a.*bc3=a./bc4=a.\bc5=a.^b在MATLAB中,矩阵元素按列存储,先第一列,再第二列,依次类推。例如

A=[1,2,3;4,5,6];

A(3)

ans=

2Matrix2程序:a=[123;456;789]a1=a(2,:)a2=a(:,2)a3=a(:)a4=a(1:2,2:3)a5=a(2:-1:1,:)a6=a(:,3:-1:2)a7=a;a7(1:2,:)=[]a8=a;a8(:,1)=[]a9=[aa2]a10=[a;a1]补:1、reshape是将矩阵元素以列为单位进行重组。如:A=[123456;789101112]reshape(A,3,4)2、Matlab内部函数fliplr(它对矩阵进行左右旋转)Flipud上下翻转Rot90对矩阵进行各种90度的旋转。Matrix3程序:a=[123456]b=[121212]c1=a+ac2=a*bc=[273;394;153]c3=det(c)c4=inv(c)[v,d]=eig(c)4.关系运算与逻辑运算关系运算

MATLAB提供了6种关系运算符:<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、==(等于)、~=(不等于)。它们的含义不难理解,但要注意其书写方法与数学中的不等式符号不尽相同。关系运算符的运算法则为:

(1)当两个比较量是标量时,直接比较两数的大小。若关系成立,关系表达式结果为1,否则为0。

(2)当参与比较的量是两个维数相同的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,并给出元素比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。(3)当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,并给出元素比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。例:产生5阶随机方阵A,其元素为[10,90]区间的随机整数,然后判断A的元素是否能被3整除。

(1)生成5阶随机方阵A。

A=fix((90-10+1)*rand(5)+10)

(2)判断A的元素是否可以被3整除。

P=rem(A,3)==0

其中,rem(A,3)是矩阵A的每个元素除以3的余数矩阵。此时,0被扩展为与A同维数的零矩阵,P是进行等于(==)比较的结果矩阵。逻辑运算

MATLAB提供了3种逻辑运算符:&(与)、|(或)和~(非)。

逻辑运算的运算法则为:

(1)在逻辑运算中,确认非零元素为真,用1表示,零元素为假,用0表示。(2)设参与逻辑运算的是两个标量a和b,那么,

a&ba,b全为非零时,运算结果为1,否则为0。

a|ba,b中只要有一个非零,运算结果为1。

~a当a是零时,运算结果为1;当a非零时,运算结果为0。(3)若参与逻辑运算的是两个同维矩阵,那么运算将对矩阵相同位置上的元素按标量规则逐个进行。最终运算结果是一个与原矩阵同维的矩阵,其元素由1或0组成。

(4)若参与逻辑运算的一个是标量,一个是矩阵,那么运算将在标量与矩阵中的每个元素之间按标量规则逐个进行。最终运算结果是一个与矩阵同维的矩阵,其元素由1或0组成。(5)逻辑非是单目运算符,也服从矩阵运算规则。

(6)在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。例:建立矩阵A,然后找出大于4的元素的位置。

(1)建立矩阵A。

A=[4,-65,-54,0,6;56,0,67,-45,0]

(2)找出大于4的元素的位置。

find(A>4)补充强调几个内容:不论是行向量或列向量,我们均可用相同的函数找出其元素个数、最大值、最小值等length(x)size(x)小整理:适用於向量的常用函数有:min(x):向量x的元素的最小值(若x为矩阵则输出一个行向量,它由每一列最小元素组成,min(x,5)-最小就是5-意思是大于5,都替换成5,小于的就不改变)max(x):向量x的元素的最大值mean(x):向量x的元素的平均值median(x):向量x的元素的中位数std(x):向量x的元素的标准差diff(x):向量x的相邻元素的差sort(x):对向量x的元素进行排序length(x):向量x的元素个数norm(x):向量x的欧氏(Euclidean)长度sum(x):向量x的元素总和prod(x):向量x的元素总乘积cumsum(x):向量x的累计元素总和-维数不变cumprod(x):向量x的累计元素总乘积dot(x,y):向量x和y的内积cross(x,y):向量x和y的外积2.几个命令和几个键盘符号matlab工作区clcclearclearallwhowhosquitdiary(建立文本文件记录)dir命令行编辑:键盘上面左右上下箭头,home,end,esc,del3.几个特殊符号符号:空格,()[]:…%:产生向量,用于循环V=1:3;v=-1:0.5:3;,用于分割命令或者元素;命令结束符号,运算结果不显示;用于创建矩阵分行例:A=[123;456],B=A^2;fori=1:3,forj=1:4,tmp=j,m(i,j)=i*100+j;endendMatlab常用函数1)ones 产生元素均为一的矩阵常见用法: ones(n) 产生n×n矩阵ones(m,n)或ones([mn])产生m×n矩阵ones(size(A)) 产生与A同样维数的矩阵举例: ones(3,5)ans=111111111111112)zeros产生0矩阵,用法与ones相同用法: zeros(n)zeros(m,n)或zeros([mn])zeros(size(A))length 返回向量的长度,length(x)等价于max(size(x))举例:a=ones(1,5)a=11111length(a)ans=5end用法:表示for,while,if等语句的中断符号也可表示最后一个元素的索引,如a(end);还可以用a(end+1)来增加元素举例:a=[1325]a=1325a(end)ans=5a(end+1)=8a=3258rand用法:rand 产生一个在(0,1)之间的均匀分布的数randn 产生正态分布随机数用法:randn 产生一个在服从N(0,1)正态分布的随机数randn(n)randn(m,n)举例:randans=0.9501rand(2,3)ans=0.23110.48600.76210.60680.89130.4565randnans=0.6565randn(3,2)ans=-1.1678-1.2132-0.4606-1.3194-0.26240.9312findfind找出非0元素。也可以查找指定条件的元素,并返回元素所在位置索引。(1)例子x=[85694710];find(x>5)输出结果:ans=13467(2)例子:x=fix(rand(5)*10),[r,c]=find(x>5);r=r',c=c',length(r)-length(find(x>5))输出结果:x=0346406477173485615200612r=23451223c=22234455ans=0(3)例子:vec=fix(rand(1,10)*100)id=find(vec>=60&vec<=69)sprintf('60-69分的人数=%5d',length(id))运行结果:vec=4518244617992731740id=5ans=60-69分的人数=1sort排序[Y,I]=sort(x)返回索引矩阵I,如果x时一个向量,则Y=x(I)。如果x是个m行n列矩阵,则有forj=1:n,Y(:,j)=x(I(:,j),j);end。例子:vec=fix(rand(1,10)*100);[value,idx]=sort(vec);they_are_zero=vec(idx)-value运行结果:value=1191927414446607493idx=51431079268they_are_zero=0000000000sprintf 格式化数据输出,与C语言中的printf函数用法相似常见的数值处理函数函数名功能sum求和mean求平均值round四舍五入fix向零取整floor向负无穷方向取整ceil向正无穷方向取整函数名功能mod除法求余(结果与除数同号)MOD(x,y)等于x-y.*floor(x./y)(y不为0),若y=0,则mod(x,0)返回xrem除法求余(结果与被除数同号)REM(x,y)isx-y.*fix(x./y)(y不为0),若y=0则mod(x,0)返回NaN。sign符号函数当x为正时sign(x)为1,x为0时sign(x)为0,x为负时sign(x)为-1例子:floor(3.8)ans=3ceil(3.8)ans=4floor(3.4)ans=3ceil(3.4)ans=4floor(-3.8)ans=-4ceil(-3.8)ans=-3floor(-3.4)ans=-4ceil(-3.4)ans=-3fix(3.8)ans=3fix(-3.4)ans=-3其它常用函数:字符串操作函数matlab\strfun文件操作函数matlab\iofun如:fopen,fprintf,fscanf,fread,fwrite第三节:程序设计OutlineM-file(M文件);数据的输入和输出;程序设计;函数文件;全局变量和局部变量M文件用MATLAB语言编写的程序,称为M文件。M文件有两类:命令文件和函数文件。命令文件:没有输入参数,也不返回输出参数。函数文件:可以输入参数,也可返回输出参数。M文件的建立与编辑建立新的M文件:从MATLAB命令窗口的File菜单中选择New菜单项,再选择M-file命令。编辑已有的M文件:从MATLAB命令窗口的Flie菜单中选择OpenM-file命令。2.命令文件将需要运行的命令编辑到一个命令文件中,然后在MATLAB命令窗口输入该命令文件的名字,就会顺序执行命令文件中的命令。【例1】建立一个命令文件e31将变量a,b的值互换。a=1:9;b=[11,12,13;14,15,16;17,18,19];c=a;a=b;b=c;ab在MATLAB的命令窗口中输入e31,将会执行该命令文件。二.数据的输入输出1.input函数:用于向计算机输入一个参数。调用格式:A=input(提示信息,选项);注:‘s’选项,则允许用户输入一个字符串。例如想输入一个人的姓名,可采用命令xm=input('What''syourname:','s')【例2】求一元二次方程a2+bx+c=0的根。a=input('a=?');b=input('b=?');c=input('c=?');d=b*b-4*a*c;x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)]将该程序以aa.m文件存盘,然后运行aa.m文件。2.pause函数:暂停程序的执行。调用格式:pause(延迟秒数)注:如果省略延迟时间,直接使用pause,则将暂停程序,直到用户按任一键后程序继续执行。另:若要强行中止程序的运行可使用Ctrl+C命令。3.disp函数:命令窗口输出函数。调用格式:disp(输出项)注:输出项为字符串或矩阵。例如A='Hello,MATLAB';disp(A)输出为:Hello,MATLAB例3:求一元二次方程ax2+bx+c=0的根。程序如下:a=input('a=?');b=input('b=?');c=input('c=?');d=b*b-4*a*c;x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)];disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);4、格式化输出(fprintf)。fprintf('Theareais%8.5f\n',area)%注意输出格式前须有%符号,%跳行符号须有\符号Theareais12.56637%输出值为8位数含5位小数在这里你如果学过c语言就能很好的理解了。%X.Yf表示带小数点显示数据,共显示X位,其中小数点后Y位。X,Y可以省略。数据的格式化输出:fprintf(fid,format,variables)

按指定的格式将变量的值输出到屏幕或指定文件

fid为文件句柄,若缺省,则输出到屏幕

1forstandardoutput(thescreen)or2forstandarderror.IfFIDisomitted,outputgoestothescreen.

format用来指定数据输出时采用的格式

%d整数

%e实数:科学计算法形式

%f实数:小数形式

%g由系统自动选取上述两种格式之一

%s输出字符串编程几点高级事项:inputdispnum2strstr2numint2strmat2strcharstrcmp提示输入;强行显示;数值转字符串;字符串转数值;整数转字符串;矩阵转字符串;按ASCII码转换;字符串比较;evalfevalkeyboardpausewarningerrornarginnargout执行命令;函数求值;键盘指令;延时;显示警告;显示错误并中断;函数的输入变量个数;输出变量个数。【司守奎资料】6数据处理6.1Matlab中的默认数据文件mat文件例36把Matlab工作空间中的数据矩阵a,b,c保存到数据文件data1.mat中。Savedata1abc注:Matlab中的默认数据文件mat文件可以省略后缀名。例37把例36生成的data1.mat中的所有数据加载到Matlab工作空间中。Loaddata16.2纯文本文件可以把word文档中整行整列的数据粘贴到纯文本文件,然后调入到Matlab工作空间中。例38把纯文本文件data2.txt加载到工作空间。A=load(‘data2.txt’);或者是a=textread(‘data2.txt’);例39使用dlmwrite命令把矩阵b保存到纯文本文件data3.txt。dlmwrite(‘data3.txt’,b)例40生成服从标准正态分布随机数的矩阵200×100,然后用fprintf命令保存到纯文本文件data4.txt。解clc,clearfid=fopen(‘data4.txt’,’w’);a=normrnd(0,1,100,200);fprintf(fid,’%f\n’,a’);fclose(fid);注:对于高维矩阵,用dlmwrite构造的纯文本文件,Lingo软件不识别;为了Lingo软件识别,纯文本文件必须用fprintf构造,而且数据之间的分割符为“\n”。6.3Excel文件例41把一个矩阵写到Excel文件data5.xls表单Sheet2中B2开始的域中。105a=rand(5,10);xlswrite(‘data5.xls’,a,’Sheet2’,’B2’)例42把例41生成的Excel文件data5.xls中表单Sheet2的域“C3:F6”中的数据赋给b。b=xlsread(‘data5.xls’,’Sheet2’,’C3:F6’)6.4字符串数据例43统计下列五行字符串中字符a、c、g、t出现的频数。1.aggcacggaaaaacgggaataacggaggaggacttggcacggcattacacggagg2.cggaggacaaacgggatggcggtattggaggtggcggactgttcgggga3.gggacggatacggattctggccacggacggaaaggaggacacggcggacataca4.atggataacggaaacaaaccagacaaacttcggtagaaatacagaagctta5.cggctggcggacaacggactggcggattccaaaaacggaggaggcggacggaggc解把上述五行复制到一个纯文本数据文件shuju.txt中,编写如下程序clcfid=fopen(‘shuju.txt’,’r’);i=1;while(~feof(fid))data=fgetl(fid);a=length(find(data==97));b=length(find(data==99));c=length(find(data==103));d=length(find(data==116));e=length(find(data>=97&data<=122));f(I,=[abcdea+b+c+d];i=i+1;endf,he=sum(f)dlmwrite(‘pinshu.txt’,f);dlmwrite(‘pinshu.txt’,he,’-append’);fclose(fid);其它的一些字符串处理命令有strcmp,strfind等。6.5图像文件例44把一个比较大的bmp图像文件data6.bmp,转化成比较小的jpg文件,命名成data7.jpg,并显示。解a=imread(‘data6.bmp’);imshow(a)imwrite(a,’data7.jpg’);figure,imshow(‘data7.jpg’)例45生成10幅彩色jpg文件,依次命名成jpq1.jpg,…,jpg10.jpg。clc,clearfori=1:10str=[‘jpg’,int2str(i),’.jpg’];a(:,:,1)=rand(500);a(:,:,2)=rand(500)+100;a(:,:,3)=rand(500)+200;imwrite(a,str);end【电子科大资料】字符串函数函数简介在MATLAB程序设计中,在处理数据的输入与输出时,字符串函数是比较常用的。表 字符串操作函数函数名调用格式功能strcatT=STRCAT(S1,S2,S3,..)连接字符串strvcatS=STRVCAT(T1,T2,T3,..)垂直连接字符串strcmpSTRCMP(S1,S2)比较字符串,S1与S2相同返回1,不同则返回0,区别大小写strncmpSTRNCMP(S1,S2,N)比较2字符串的前N个字符,区别大小写strcmpiSTRCMPI(S1,S2)比较字符串,忽略大小写strncmpiSTRNCMPI(S1,S2,N)ComparefirstNcharactersofstringsignoringcase.不区别大小写findstrK=FINDSTR(S1,S2)寻找较短的字符串在较长字符串中的位置索引strjustT=STRJUST(S)T=STRJUST(S,’right’)T=STRJUST(S,’center’)T=STRJUST(S,’left’)调整字符串strmatchI=STRMATCH(STR,STRS)在字符串矩阵STRS中寻找以STR开头的字符串strrepS=STRREP(S1,S2,S3)将S1中包含的字符串S2替换为S3,要区分大小写strtokSTRTOK(S)[t,r]=STRTOK(S,D)返回字符串中除去开始的空白串的第一个标记字符串upperB=UPPER(A)将字符串转换成大写lowerB=LOWER(A)将字符串转换成小写字符串与数值转换函数函数名调用格式功能num2strt=num2str(x)t=num2str(x,n)将数值转换成字符串n表示转换精度int2strs=int2str(x)将整数转换成字符串mat2strstr=mat2str(mat)将矩阵mat转换成可以计算的字符串str2doublex=str2double(s)将字符串转换成双精度数str2numx=str2num(s)将字符串矩阵转换成数值矩阵sprintf[s,errmsg]=print(format,a,…)format是格式化字符串,a,..是矩阵参数,errmsg是可选的sscanf[a,count,errmsg,nextindx]=sscanf(s,format,size)Count,errmsg,nextindex,size是可选的输入、输出参数Size指定所读的元素个数,若没有则整个字符串都读取例子例子1:num2str(randn(2,2),3)输出:ans=-0.4330.125-1.670.288例子2:mat=magic(3)str=mat2str(mat)matnew=eval(str)输出:mat=816357492str=[816;357;492]matnew=816357492其它函数:char(x)-将x中非负数转换成字符double(x)-将x转换成双精度类型数据blanks(n)-生成n个空格字符deblank(s)-删除s末尾的空格eval(s)-计算Matlab字符串s字符测试:ischar(s)-属于字符则返回1,否则返回0isletter(s)-属于字母则返回1,否则返回0isspace(s)-属于空白字符则返回1,否则返回0.文件操作函数文件处理函数matlab\iofun格式化的文件I/O函数fgetl-从文件中读取一行数据,不保留行结束符fgets-从文件中读取一行数据,保留行结束符fprintf-将格式化的数据写到文件fscanf-从文件中读取格式化的数据input-输入函数textread-从文件读取格式化的数据字符串转换函数print-将数据格式化成字符串sscanf-按照格式从字符串种读取数据strread-从文本字符串种读取格式化数据文件打开、关闭函数fopen-打开文件fclose-关闭文件二进制文件I/O函数fread-从文件读取二进制数据.Fwrite-将二进制数据写到文件中去文件位置函数feof-测试是否到文件结尾ferror-查询文件错误状态frewind-将文件位置指示到文件开始fseek-设置文件位置指示器ftell-获得文件位置指示器读取格式化文件例子现有一个文本文件data.txt,其数据内容如下,每行有固定格式,均有5个数,文件内容如下:20020101 31 25 302320020101 35 35 402520020101 45 29 603020020101 65 75 8040现要将该文件数据读入矩阵中,读取该文件的程序如下(flread.m)fid=fopen(‘data.txt’,’rt’);iffid<0print(‘failureforreadingfileday.txt’)returnendrow=0;while~feof(fid)str=fgets(fid);row=row+1;ifrow>1,m(row,=str2num(str);elsem=str2num(str);endendfclose(fid);输出:说明:由于是逐行读取,所以要判断是否读完,使用函数feof判断fgets:读取一行的字符串如果有些行在最后少了数据,则原来的程序会出错,出错行为下面的语句:m(row,=str2num(str)该行可改写为两行:tmp=str2num(str);m(row,1:length(tmp))=tmp选择结构选择结构的语句有if语句和switch语句。1.If语句格式一:if条件语句组end格式二:if条件语句组1else语句组2end格式三:if条件1语句组1elseif条件2语句组2……elseif条件m语句组melse语句组m+1end【例4】输入三角形的三条边,求面积。A=input(‘请输入三角形的三条边:’);ifA(1)+A(2)>A(3)&A(1)+A(3)>A(2)&A(2)+A(3)>A(1)p=(A(1)+A(2)+A(3))/2;s=sqrt(p*(p-A(1))*(p-A(2))*(p-A(3)));disp(s);elsedisp(‘不能构成一个三角形。’)end运行:请输入三角形的三条边:[456]9.9216【例5】输入一个字符,若为大

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论