版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
欢送大家参加2021年
全国大学生数学建模竞赛赛前培训1张力宁2021年全国大学生数学建模竞赛赛前培训讲座数模竞赛简介
与
MATLAB编程根底XAWL2主要内容全国大学生数学建模竞赛简介1对你的要求与你的收获2
MATLAB编程基础3MATLAB绘图43一、全国大学生数学建模竞赛简介什么是数学模型?引例:自由落体运动xO根据牛顿第二定律,有假设:忽略阻力不计,初速度解得:假设假设:阻力与速度成正比,那么有解得:4一、全国大学生数学建模竞赛简介什么是数学模型?数学模型是针对某种事物系统的特征或数量依存关系,通过抽象和简化,采用数学语言,概括地或近似地表述出的一种数学结构,这种数学结构是借助于数学符号刻划出来的某种系统的纯关系结构。建立数学模型的根本要求
获得数学模型、求解该模型并得到结论以及验证结论是否正确的全过程称为数学建模。
真实完整、简明实用、适应变化。5一、全国大学生数学建模竞赛简介数学建模的根本原那么1、简化原那么现实世界的原型都是具有多因素、多变量、多层次的比较复杂的系统,对原型进行一定的简化即抓住主要矛盾,数学模型应比原型简化,数学模型自身也应是“最简单〞的。2、可推导原那么由数学模型的研究可以推导出一些确定的结果,如果建立的数学模型在数学上是不可推导的,得不到确定的可以应用于原型的结果,这个数学模型就是无意义的。3、反映性原那么数学模型实际上是人对现实世界的一种反映形式,因此数学模型和现实世界的原型就应有一定的“相似性〞,抓住与原型相似的数学表达式或数学理论就是建立数学模型的关键性技巧。61〕对某个实际问题进行观察、分析(重点是抓住主要方面);2〕对实际问题进行必要的抽象、简化,作出合理的假设(往往是很不容易的);3〕确定要建立的模型中的变量和参数;4〕根据某种“规律〞(的各学科中的定律,甚至是经验的规律),建立变量和参数间确定的数学关系;一、全国大学生数学建模竞赛简介数学建模的主要步骤75〕解析或近似地求解该数学问题.这往往涉及复杂的数学理论和方法,近似方法和算法;6〕数学结果能否展示、解释甚至预测实际问题中出现的现象,或用某种方法〔例如,历史数据、实验数据或现场测试数据等〕来验证结果是否正确;7〕如果第6步的结果是肯定的,那么就可以付之试用;如果是否认的,那就要回到第1–6步进行仔细分析,重复上述建模过程。一、全国大学生数学建模竞赛简介数学建模的主要步骤8数学模型涉及的领域千差万别,建模的方法也多种多样,从不同的角度可对数学模型进行各种分类,常见的有:按模型的应用领域分类
数学建模的分类一、全国大学生数学建模竞赛简介9按建模的数学方法分类一、全国大学生数学建模竞赛简介数学建模的分类10按模型的表现特性分类
考虑随机因素的影响考虑时间因素的影响模型中的变量为离散还是连续的一、全国大学生数学建模竞赛简介数学建模的分类11
一、全国大学生数学建模竞赛简介全国大学生数学建模竞赛的开展1985年开始由美国工业与数学学会举办数学建模竞赛(MCM).1989年我国大学生开始参加MCM.1990年上海率先举办了“上海市大学生数学模型竞赛〞1992年,教育部高教司和中国工业与应用数学协会联合举办“中国大学生数学建模竞赛〔CUMCM)〞参赛规模从十年前10省市70多所院校300多队增长到2021年33个省、市、自治区以及香港特别行政区1137所院校15042个队,45000多人参加。12
一、全国大学生数学建模竞赛简介全国大学生数学建模竞赛的开展参赛学校数:1995年:259所,2021年:1137所参赛队数:1995年:1234队,2021年:15042队13
一、全国大学生数学建模竞赛简介近年来全国大学生数学建模竞赛题目2000年A题:DNA序列分类
B题:钢管订购和运输2001年A题:血管的三维重建
B题:公交车调度2002年A题:车灯线光源的优化设计
B题:彩票中的数学2003年A题:SARS的传播
B题:露天矿生产的车辆安排2004年A题:奥运会临时超市网点设计
B题:电力市场的输电阻塞管理14
一、全国大学生数学建模竞赛简介近年来全国大学生数学建模竞赛题目2005年A题:长江水质的评价和预测B题:DVD在线租赁2006年A题:出版社的资源配置B题:艾滋病疗法的评价及疗效的预测2007年2007年A题:中国人口增长预测B题:乘公交,看奥运2021年A题:数码相机定位B题:高等教育学费标准探讨2021年A题:制动器试验台的控制方法分析B题:眼科病床的合理安排15一、全国大学生数学建模竞赛简介数学建模论文的一般结构摘要问题重述与分析问题假设符号说明模型建立与求解结果分析模型检验模型推广模型评价参考文献和附录16一、全国大学生数学建模竞赛简介全国大学生数学建模竞赛的参赛形式开卷形式的通讯比赛,可以使用任意图书资料和互联网,自由的收集资料、调查研究。由三名学生组成一队,各参赛队任选一竞赛题。在三天时间内,团结合作、奋力攻关,完成一篇数学建模全过程的论文。没有事先设定的标准答案,多名专家从以下几个方面来综合评定〔1〕问题分析及假设的合理性;〔2〕模型的正确性和创造性;〔3〕运算结果的正确性;〔4〕结论和讨论的科学性;〔5〕论文表达的清晰性等。竞赛地点是学生所在院校,竞赛时间是每年9月第三周周五开始的三天时间,共计72小时,即第一天8:00开题,第四天8:00交卷。17一、全国大学生数学建模竞赛简介全国大学生数学建模竞赛的评奖与公布全国大学生数学建模竞赛以各个省、自治区、直辖市、特别行政区为分赛区,首先由各分赛区组织专家评阅,评出本赛区的一、二、三等奖〔陕西省已于2021年取消省级三等奖〕,并按照一定比例选拔出局部优秀论文报送全国组委会,由全国组委会组织各赛区的专家进行集中评阅,评出国家级一、二等奖〔获奖率分别为2%和6%〕,对全国范围内表现最突出的一个竞赛队伍授予奖杯。2021年全国组委会还从全国一等奖获奖论文中评选出“2021高教社杯全国大学生数学建模竞赛MATLAB创新奖〞两份。选拔一些优秀论文刊登在每年第一期的?工程数学学报?上。18高校、企业对数学建模竞赛的认可
IBM中国研究中心-招聘条件Positiontitle:BusinessOptimization(BJ)
1.Backgroundinindustrialengineering,operationsresearch,mathematics,ArtificialIntelligence,managementscienceetc.
2.Knowledgeinnetworkdesign,jobscheduling,dataanalysis,simulationandoptimization
3.Awardinmathematicalcontestinmodelingisaplus
4.Experienceinindustryisaplus
5.Experienceineclipseorprogrammingmodel/architecturedesignisaplus
--一、全国大学生数学建模竞赛简介19企业对数学建模人才的需求
一、全国大学生数学建模竞赛简介20
二、对你的要求与你的收获对你的要求精神状态与学习纪律方面
对数学建模的学习兴趣和热情
持之以恒的工作态度积极主动的学习态度与精益求精的研究精神勤于思考、勇于创新的学习习惯富于团队精神和集体荣誉感21
二、对你的要求与你的收获对你的要求知识根底与能力要求良好的数学根底〔高数、线性代数、概率统计等〕熟练的计算机操作水平,熟练使用office软件一定的计算机高级语言编程根底熟练使用互联网搜索参考文献快速获取、消化新知识,并能学以致用的自学能力严谨、简洁、清晰的文字表达能力22
二、对你的要求与你的收获你的收获学习数学、运用数学解决实际问题的能力将得到提高对计算机常用软件的操作,尤其是对Office软件的操作将更加熟练利用MATLAB等数学软件编程解决实际问题的能力将得到质的飞跃能够更加熟练地使用互联网搜索参考文献自学能力与水平将得到明显提高数学根底将得到明显加强23
二、对你的要求与你的收获你的收获体验科研工作的全过程,对今后的毕业设计乃至进一步深造的学位论文写作将非常有利体会团队精神在协作攻关搞研究中的重要性广泛了解多学科知识,自信心明显增强,对自己的期望和要求也更高。科技论文的写作会从入门到不断提高学会与他人交流学习体会、交流对问题的看法,准确表述自己的观点,学会虚心接受别人合理的建议和意见,及时调整和改进自身的缺乏24MATLAB是MATrixLABoratory〔“矩阵实验室〞〕的缩写,是由美国MathWorks公司开发的集数值计算、符号计算和图形可视化三大根本功能于一体的,功能强大、操作简单的语言。是国际公认的优秀数学应用软件之一。MATLAB的开展过程20世纪80年代初期,CleveMoler与JohnLittle等利用C语言开发了MATLAB语言1984年正式成立Mathworks公司,把MATLAB语言推向市场,并开始了对MATLAB工具箱等的开发设计1993年推出了面向PC的MATLAB4.0,1997年推出了MATLAB5三、MATLAB编程根底25随后,MATLAB不断推出新版本。目前最新的版本是2021年11月MATLABR2021b,它包含了Win32位版和WIn64位版。随着版本的不断升级,它在数值计算及符号计算功能上得到了进一步完善。MATLAB已经开展成为多学科、多种工作平台的功能强大的大型软件。在欧美等高校,MATLAB已经成为线性代数、自动控制理论、概率论及数理统计、数字信号处理、时间序列分析、动态系统仿真等高级课程的根本教学工具,是攻读学位的大学生、硕士生、博士生必须掌握的根本技能。三、MATLAB编程根底26MATLAB的主要特点运算符和库函数极其丰富,语言简洁,编程效率高,既具有结构化的控制语句〔如for循环、while循环、break语句、if语句和switch语句〕,又有面向对象的编程特性。图形功能强大。它既包括对二维和三维数据可视化、图像处理、动画制作等高层次的绘图命令,也包括可以修改图形及编制完整图形界面的、低层次的绘图命令。功能强大的工具箱。工具箱可分为两类:功能性工具箱和学科性工具箱。易于扩充。除内部函数外,所有MATLAB的核心文件和工具箱文件都是可读可改的源文件。三、MATLAB编程根底27
一、MATLAB的安装与启动MATLAB对硬件的要求CPU要求:PentiumII、PentiumIII、AMDAthlon或者更高;光驱:8倍速以上;内存:至少64MB,但推荐128MB以上;硬盘:视安装方式不同要求不统一,但至少留1GB用于安装;显卡:8位;MATLAB对软件的要求各种微软的Windows操作系统都可以;AdobeAcrobatReader用于阅读帮助文件MATLAB的安装运行MATLAB光盘上的安装文件即可三、MATLAB编程根底28MATLAB的桌面系统命令窗口工作空间浏览器历史命令窗口路径浏览器菜单三、MATLAB编程根底29窗口名称功能命令窗口执行MATLAB所有的函数和命令,实现即时的人机交互历史命令窗口保留自安装时起所有命令的历史记录,并标明使用时间,以方便使用者的查询。组件平台(LaunchPad)说明用户所拥有的Mathworks公司产品的工具包、演示以及帮助信息。当选中该窗口中的某个组件之后,可以打开相应的窗口工具包。路径浏览器显示或改变当前目录,还可以显示当前目录下的文件,包括文件名、文件类型、最后修改时间以及该文件的说明信息等并提供搜索功能。三、MATLAB编程根底MATLAB的桌面系统30窗口名称功能帮助浏览器为MATLAB的操作方法和各种函数提供帮助文件工作空间浏览器显示所有目前保存在内存中的MATLAB变量的变量名、数据结构、字节数以及类型,而不同的变量类型分别对应不同的变量名图标。。数组编辑器(ArrayEditor)按照用户选定的格式显示或修改内存中所有变量的类型、规格及当前值M文件编辑调试器
M文件编辑以及调试的窗口,供编程及调试程序使用MATLAB的桌面系统三、MATLAB编程根底31MATLAB的命令窗口在MATLAB命令窗口中,命令的实现不仅可以由菜单操作来实现,也可以由命令行操作来执行
命令行操作便于人机交互,通过对命令行操作,防止了编程序的麻烦。但运算的结果不保存,复杂的算法还是在M-文件调试编辑器中编写程序完成。例如:在命令窗口中输入sin(pi/5),然后单击回车键,那么会得到该表达式的值sin〔pi/5〕ans=0.5878三、MATLAB编程根底32当需要处理相当繁琐的计算时,可能在一行之内无法写完表达式,可以换行表示,此时需要使用续行符“……〞否那么MATLAB将只计算一行的值,而不理会该行是否已输入完毕。例如:sin(1/9*pi)+sin(2/9*pi)+sin(3/9*pi)+……sin(4/9*pi)+sin(5/9*pi)+sin(6/9*pi)+……sin(7/9*pi)+sin(8/9*pi)+sin(9/9*pi)+……ans=5.6713在MATLAB命令行操作中,“↑〞可用于调出前一个命令行,“↓〞可调出后一个命令行,三、MATLAB编程根底33MATLAB的M文件调试编辑器——编写程序的窗口程序名断点调试文本运行行号三、MATLAB编程根底34在此窗口中可以逐行输入程序语句,也可以在每个语句的末尾以“;〞表示结束。MATLAB的M文件调试编辑器中重要的菜单【File〔文件〕】:包括新建〔New〕,翻开〔Open〕,存盘〔Save〕,另存为〔Saveas〕等文件操作命令。【Text〔文本〕】:包括设置为注释〔Comment〕,取消注释特性〔Uncomment〕,减少缩进〔DecreaseIndent〕增加缩进〔IncreaseIndent〕等命令。三、MATLAB编程根底35【Debug〔调试〕】:包括步进执行语句〔Step〕,进入子函数执行程序〔Stepin〕,跳出子函数执行程序〔Stepout〕,从断点开始继续执行程序〔Continue〕,退出调试形式〔ExitDebugMode〕。【Breakpoints〔断点〕】:包括设置/取消当前断点〔Set/ClearBreakpoint〕,取消所有断点〔ClearAllBreakpoints〕,出错时中断执行程序〔StopIfError〕,警告时中断执行程序〔WarningIfError〕,出现空值或数值超界时中断执行程序〔StopIfNaNorInf〕。MATLAB的M文件调试编辑器中重要的菜单三、MATLAB编程根底36参加断点是调试程序的常用方法三、MATLAB编程根底37
二、MATLAB的变量MATLAB的数据类型主要包括:数字、字符串、矩阵、单元型数据及结构型数据等变量与常量的命名〔1〕变量名区分大小写。〔2〕变量名长度不能超过31位,〔3〕变量名以字母开头,可以是字母、数字、下划线组成,但不能使用标点。变量的作用域:局部变量和全局变量,全局变量必须声明为Global,一般用大写字母命名。三、MATLAB编程根底38MATLAB中的常量常量表示数值
pi圆周率
eps浮点运算的相对精度
inf正无穷大
NaN表示不定值
realmax最大的浮点数
i,j虚数单位在MATLAB语言中,定义变量时应防止与常量名重复三、MATLAB编程根底39数字变量的运算及显示格式MALAB是以矩阵为根本运算单元的,而构成数值矩阵的根本单元是数字。对于简单的数字运算,可以直接在命令窗口中以平常惯用的形式输入,如计算2和3的乘积再加1时,可以直接输入:>>1+2*3ans=7用户也可以输入:>>a=1+2*3a=7三、MATLAB编程根底40数字变量的显示格式在缺省情况下,假设数据为整数,那么就以整数表示;假设数据为实数,那么以保存小数点后4位的精度近似表示。MATLAB语言提供了10种数据显示格式,常用的有下述几种格式:short
小数点后4位(系统默认值)long
小数点后14位shorte5位指数形式longe15位指数形式三、MATLAB编程根底41MATLAB常用数学函数(一):三角函数名称含义名称含义名称含义sin正弦csc余割atanh反双曲正切cos余弦asec反正割acoth反双曲余切tan正切acsc反余割sech双曲正割cot余切sinh双曲正弦csch双曲余割asin反正弦cosh双曲余弦asech反双曲正割acos反余弦tanh双曲正切acsch反双曲余割atan反正切coth双曲余切atan2四象限反正切acot反余切asinh反双曲正弦sec正割acosh反双曲余弦三、MATLAB编程根底42MATLAB常用数学函数(二):指数函数名称含义名称含义名称含义expE为底的指数log1010为底的对数pow22的幂log自然对数log22为底的对数sqrt平方根MATLAB常用数学函数(三):复数函数名称含义名称含义名称含义abs绝对值conj复数共轭real复数实部angle相角imag复数虚部三、MATLAB编程根底43MATLAB常用数学函数(四):取整函数和求余函数名称含义名称含义ceil向+∞取整rem求余数fix向0取整round向靠近整数取整floor向-∞取整sign符号函数mod模除求余三、MATLAB编程根底44MATLAB常用数学函数(五):矩阵变换函数名称含义名称含义fiplr矩阵左右翻转diag产生或提取对角阵fipud矩阵上下翻转tril产生下三角fipdim矩阵特定维翻转triu产生上三角Rot90矩阵反时针90翻转det行列式的计算三、MATLAB编程根底45MATLAB常用数学函数(六):其它函数名称含义名称含义min最小值max最大值mean平均值median中位数std标准差diff相邻元素的差sort排序length个数norm欧氏(Euclidean)长度sum总和prod总乘积dot内积cumsum累计元素总和cumprod累计元素总乘积cross外积三、MATLAB编程根底46数字变量的字符串MATLAB中的字符串是其进行符号运算表达式的根本构成单元。在MATLAB中,字符串和字符数组根本上是等价的;所有的字符串都用单引号进行输入或赋值〔也可以用函数char来生成〕。字符串的每个字符〔包括空格〕都是字符数组的一个元素。例如:>>s=’matrixlaboratory’;s=matrixlaboratoryMATLAB对字符串的各种操作与C语言几乎完全相同三、MATLAB编程根底47三、矩阵及其运算矩阵是MATLAB数据存储的根本单元,而矩阵的运算是MATLAB语言的核心,在MATLAB语言系统中几乎一切运算均是以对矩阵的操作为根底的。
矩阵的生成在MATLAB中生成矩阵的方法共有三种:直接输入法、外部文件读入法、特殊矩阵的函数生成法。直接输入法直接输入矩阵是最方便、最常用的创立数值矩阵的方法,尤其适合较小的简单矩阵。在用此方法创立矩阵时,应当注意以下几点:三、MATLAB编程根底48输入矩阵时要以“[]〞为其标识符号,矩阵的所有元素必须都在括号内。矩阵同行元素之间由空格或逗号分隔,行与行之间用分号或回车键分隔。矩阵大小不需要预先定义。矩阵元素可以是运算表达式。假设“[]〞中无元素表示空矩阵。三、MATLAB编程根底49矩阵操作时冒号的作用用于生成等步长的向量,默认步长值为1。>>a=1:0.5:4a=Columns1through711.522.533.54另外,通过使用冒号,可以截取指定矩阵中的指定行、列或元素,例如:
>>A=[123;456;789]A=123456789三、MATLAB编程根底50通过上例可以看到B是由矩阵A的1到2行和相应的所有列的元素构成的一个新的矩阵。在这里,冒号代替了矩阵A的所有列。>>B=A(1:2,:)B=123456同理>>C=A(:,2:3)C=235689C是由矩阵A的2到3列相应的所有列的元素构成的一个新的矩阵,在这里,冒号代替了矩阵A的所有行。三、MATLAB编程根底51外部文件读入法命令:Load+文件名[参数]作用:Load函数将会从文件名所指定的文件中读取数据,并将输入的数据赋给以文件名命名的变量,例如:事先在记事本中建立文件:111〔并以data1.txt保存〕123136在MATLAB命令窗口中输入:
>>loaddata1.txt>>data1data1=111123136该文件必须保存在MATLAB规定的缺省目录中,否那么需要之名路径。三、MATLAB编程根底52特殊矩阵的函数生成法。单位矩阵:eye(m,n);eye(m)零矩阵:zeros(m,n);zeros(m)一矩阵:ones(m,n);ones(m)对角矩阵:对角元素向量V=[a1,a2,…,an]A=diag(V)随机矩阵:rand(m,n),rand〔m〕产生一个均匀分布的随机矩阵randn(m,n)产生一个正态分布的随机矩阵randperm(n)产生1~n之间整数的随机排列三、MATLAB编程根底53?eye(2,3)ans=100010?ones(2,3)ans=111111?zeros(2)ans=0000?zeros(2,3)ans=000000?eye(2)ans=1001?ones(2)ans=1111?V=[572];A=diag(V)A=500070002例如:三、MATLAB编程根底54
子数组的访问与赋值指令修改:要给矩阵A第i行,第j列的元素赋值为k,可以用语句
A(i,j)=k;来实现修改例如:a=[120;305;789]a=120305789a(3,3)=0;a=120305780三、MATLAB编程根底55也可以一次访问或修改一个子数组,如:x=0.95010.23110.60680.48600.8913x([125]) %寻访数组x的第一、二、五个元素组成的子数组。
ans=0.95010.23110.8913x(1:3)
%寻访前三个元素组成的子数组
ans=0.95010.23110.6068三、MATLAB编程根底56x=0.95010.23110.60680.48600.8913x(3:end) %寻访数组x的寻访从第3个到最后一个元素。
ans=0.95010.23110.8913x(3:-1:1)
%由前三个元素倒排构成的子数组ans=0.60680.23110.9501x(find(x>0.5))
%由大于0.5的元素构成的子数组ans=0.95010.60680.8913三、MATLAB编程根底57x=0.95010.23110.60680.48600.8913x([12344321]) %对元素可以重复寻访,使所得数组长度允许大于原数组。
ans=Columns1through70.95010.23110.60680.48600.48600.60680.2311Column80.9501x([14])=[11]
%把当前x数组的第一、四个元素都赋值为1ans=1.00000.231101.00000.8913三、MATLAB编程根底58另外,对于二维数组,访问和赋值时,A(r,c)表示提取二维数组A中第r行,第c列的元素;A(r,:)表示提取二维数组A中第r行的所有元素;A(:,c)表示提取二维数组A中第c列的所有元素;A(m1:m2,n1:n2):提取第m1行到第m2行和第n1列到第n2列的所有元素〔提取子块〕。A(:):得到一个长列向量,该向量的元素按矩阵的列进行排列。三、MATLAB编程根底59矩阵的运算转置,四那么运算与幂运算’,+;-;*;\和/;^;.*;.\;./;.^如:a=[12;34];b=[35;59]?c=a+bd=a-be=a’?c=d=e=47-2-313813-2-524a*b=[1323;2951]三、MATLAB编程根底60a/b运算等效于求a*x=b的解a/b=[-0.500.50;3.50–1.50]a\b=[-1-1;23]a\b等效于求x*b=a的解a^3=[3754;81118]只有方阵才可以求幂。a.*b=[310;1536]点运算是两个维数相同矩阵对应元素之间的运算a./b=[0.330.40;0.600.44]a.\b=[3.002.50;1.672.25]a.^3=[18;2764]三、MATLAB编程根底61矩阵的运算:常见矩阵函数det(a)求矩阵a的行列式eig(a)求矩阵a的特征值inv(a)或a^(-1)求矩阵a的逆矩阵rank(a)求矩阵a的秩trace(a)求矩阵a的迹〔对角线元素之和〕size(a)求矩阵大小,返回〔m,n〕,其中m表示a的行数,n表示a的列数三、MATLAB编程根底62find(a)求矩阵a中所有非零元素的位置,返回〔m,n〕,其中m表示a中所有非零元素的行数,n表示a中所有非零元素的列数find〔a逻辑判别式〕求矩阵a中所有满足逻辑判别式〔如a==0,a>=1等〕的元素的位置,返回〔m,n〕其中m表示a中所有非零元素的行数,n表示a中所有非零元素的列数numel〔a〕返回矩阵a中元素的个数sort〔a〕对矩阵a中的元素进行排序从小到大排序三、MATLAB编程根底63矩阵的运算:逻辑运算符号运算符功能函数名==等于eq~=不等于ne<小于lt>大于gt<=小于等于le>=大于等于ge&逻辑与and|逻辑或or~逻辑非not三、MATLAB编程根底64a=[123;456;789];>>x=5;>>xa=x<=a例如xa=000011111三、MATLAB编程根底65MATLAB作为一种高级语言,它不仅可以如前面介绍的那样,以一种人机交互式的命令行的方式工作,还可以像BASIC、FORTRAN、C等其他高级计算机语言一样进行控制流的程序设计,即编制一种以.m为扩展名的MATLAB程序〔简称M文件〕。而且,由于MATLAB本身的一些特点,M文件的编制同上述几种高级语言比较起来,有许多无法比较的优点。三、MATLAB编程根底66
四、MATLAB的函数文件
M文件所谓M文件就是由MATLAB语言编写的可在MATLAB语言环境下运行程序源代码文件。由于商用的MATLAB软件是用C语言编写而成。因此,M文件的语法与C语言十分相似。M文件可以分为脚本文件(Script)和函数文件(Function)两种。M文件不仅可以在MATLAB的程序编辑器中编写,也可以在其他的文本编辑器〔如Windows中的记事本或word〕中编写,并以“.m〞为扩展名加以存储。三、MATLAB编程根底67M文件的创立方法1、在MATLAB命令窗口点击file菜单newm-file三、MATLAB编程根底682、MATLAB会翻开程序编辑器窗口,在该窗口中逐行输入MATLAB程序语句即可。三、MATLAB编程根底693、输入完毕后,单击File菜单中的“save〞项,然后输入文件名MATLAB会按照缺省路径,保存在MATLAB安装目录下work子目录中,也可自行设定存盘目录。三、MATLAB编程根底70脚本文件〔Script〕脚本类似于DOS下的批处理文件,不需要在其中输入参数,也不需要给出输出变量来接受处理结果,脚本仅是假设干命令或函数的集合,用于执行特定的功能。脚本的操作对象为MATLAB工作空间〔Workspace〕内的变量,并且在脚本执行结束后,脚本中对变量的一切操作均会被保存。直到MATLAB被关闭或采用命令clear将内存中的变量删除。三、MATLAB编程根底71脚本文件举例编写m脚本文件,画出以下分段函数所表示的曲面。如前所述,新建一个m-文件,MATLAB会翻开文件编辑调试器MATLABEditor/Debugger。其窗口名为untitled,用户即可在空白窗口中编写程序。输入如下一段程序:三、MATLAB编程根底72[zx81.m]%zx81.m Thisismyfirstexample. a=2;b=2; clf;x=-a:0.2:a;y=-b:0.2:b;fori=1:length(y)forj=1:length(x)ifx(j)+y(i)>1z(i,j)=0.5457*exp(-0.75*y(i)^2-3.75*x(j)^2-1.5*x(j));elseifx(j)+y(i)<=-1z(i,j)=0.5457*exp(-0.75*y(i)^2-3.75*x(j)^2+1.5*x(j));elsez(i,j)=0.7575*exp(-y(i)^2-6.*x(j)^2);endendendaxis([-a,a,-b,b,min(min(z)),max(max(z))]);colormap(flipud(winter));surf(x,y,z);脚本文件举例73编写完成后,点击编辑调试器工具条图标,在弹出的Windows标准风格的“保存为”对话框中,选择保存文件夹,键入新编文件名(如zx81),点击【保存】键,就完成了文件保存。运行文件使zx81.m所在目录成为当前目录,或让该目录处在MATLAB的搜索路径上,然后点击工具条上的图标,便可得到如右图所示的图形。
脚本文件举例三、MATLAB编程根底74MATLAB的函数文件MATLAB语言中,函数需要给定输入参数,并能够对输入变量进行假设干操作,实现特定的功能,最后给出一定的输出结果或图形等,其操作对象为函数的输入变量和函数内的局部变量等。MATLAB语言的函数文件包含如下5个局部:函数题头:指函数的定义行,是函数语句的第一行,在该行中将定义函数名、输入变量列表及输出变量列表等。函数题头必须以单词function作为引导词,必须遵循如下形式:
function
<因变量>=<函数名>(<自变量>)三、MATLAB编程根底752.HI行:指函数帮助文本的第一行,为该函数文件的帮助主题,当使用lookfor命令时,可以查看到该行信息。3.帮助信息:这局部提供了函数的完整的帮助信息,包括HI之后至第一个可执行行或空行为止的所有注释语句,通过MATLAB语言的帮助系统查看函数的帮助信息时,将显示该部分。4.函数体:指函数代码段,也是函数的主体局部。5.注释局部:指对函数体中各语句的解释和说明文本,注释语句是以%引导的。三、MATLAB编程根底76例如:function[output,output2]=function—example(input1,input2)
%函数题头%Thisisfunctiontoexchangetwomatrices%HI行%input1,input2areinputvariables%帮助信息%output1,output2areoutputvariables%帮助信息
output1=input2;%函数体
output2=input1;%函数体%Theendofthisexamplefunction调用方法:[c,d]=function---example〔a,b〕三、MATLAB编程根底77注:m文件的文件名必须是<函数名>.m。注:并不是所有的函数文件都需要全部的这5个局部,实际上,5局部中只有函数题头是一个函数文件所必需的,而其他的4个局部均可省略。当然,如果没有函数体那么为一空函数,不能产生任何作用。注:程序中的变量均为局部变量,不保存在工作空间(Workspace)中。其变量只在函数运行期间有效。三、MATLAB编程根底78
函数变量及变量作用域在MATLAB语言的函数中,变量主要有输入变量、输出变量及函数内所使用的变量。函数的输入变量为形式参数,即只传递变量的值而不传递变量的地址,函数对输入变量的一切操作和修改如果不依靠输出变量传出的话,将不会影响工作空间中该变量的值。在MATLAB语言中,函数内定义的变量均被视为局部变量,即不加载到工作空间中,如果希望使用全局变量,那么应当使用命令global定义,而且在任何使用该全局变量的函数中都应加以定义。三、MATLAB编程根底79
一、MATLAB的函数文件
定义全局变量时,与定义输入变量和输出变量不同,变量之间必须用空格分隔,而不能用逗号分隔,否那么系统将不能识别逗号后的全局变量。例如:globalfirstlevel
secondlevel三、MATLAB编程根底80
五、MATLAB的流程控制语句
如其他的程序设计语言一样,MATLAB语言也给出了丰富的流程控制语句,以实现具体的程序设计。在M文件中,通过对流程控制语句的组合使用,可以实现各种各样的复杂算法。MATLAB语言的流程控制语句主要有for、while、if-else-end及switch-case等4种语句。通过这些语句可以实现除顺序结构以外的循环结构和分支结构。三、MATLAB编程根底81for语句for循环语句是流程控制语句中的根底,使用该循环语句可以以指定的次数重复执行循环体内的语句。for循环语句的调用形式为:for循环控制变量=〈初始值〉:〈步长〉:〈终值〉
循环体end三、MATLAB编程根底82注:初始值为循环变量的初始设定值,每执行循环体一次,循环控制变量将增加步长大小,直至循环控制变量的值大于终值时循环结束。如果没有给步长赋值,步长将按缺省值1计算,它也是可以为负的。for循环允许嵌套使用。嵌套使用时,要通过逐层增加缩进量加以区分。三、MATLAB编程根底83例:利用for循环求1!+2!+3!++5!的值
sum=0;fori=1:5pdr=1;fork=1:ipdr=pdr*k;endsum=sum+pdr;end三、MATLAB编程根底84
while语句while循环语句是以条件的满足与否来判断循环是否结束的。当条件为真时,执行循环体内的可执行语句,条件不成立时,跳出循环。与for循环相比,while循环不能直接确定执行次数。while循环语句的调用形式为:while〈循环判断的语句〉循环体end三、MATLAB编程根底85注:在while循环语句中,在语句内必须有可以修改循环控制变量的命令,否那么该循环语言将陷入死循环中。注:循环语句中有控制退出循环的命令,如break语句。当程序流程运行至该命令时,那么不管循环控制变量是否满足循环判断语句均将退出当前循环。注:与break语句对应,MATLAB还提供了continue命令用于控制循环,当程序流运行至该命令时会忽略其后的循环体操作转而执行下一层次的循环。三、MATLAB编程根底86a(1)=1;a(2)=1;i=2;whilea(i)<=10000 a(i+1)=a(i-1)+a(i);
%当现有的元素仍小于10000时,%计算下一个元素。
i=i+1;end例.Fibonacci数列的元素满足Fibonacci规则:
,且,现要求该数组中第一个大于10000的元素。修改循环控制变量的语句在命令窗口下输入i,a(i),
可得i=21ans=10946三、MATLAB编程根底87if-else-end语句条件判断语句也是程序设计语言中流程控制语句之一。使用该语句,可以实现分支结构,即根据逻辑判断语句的返回值选择执行指定的命令。if-end语句的一般形式为:if〈逻辑判断语句〉逻辑值为“真〞时执行的语句end三、MATLAB编程根底88if-else-end语句的一般形式为:if〈逻辑判断语句〉逻辑值为“真〞时执行的语句else逻辑值为“假〞时执行的语句end三、MATLAB编程根底89if-else-end语句的嵌套形式为:if〈逻辑判断语句1〉逻辑值1为“真〞时的执行语句elseif〈逻辑判断语句2〉逻辑值2“真〞时的执行语句elseif〈逻辑判断语句3〉……else当以上所有的逻辑值均为假时的执行语句 end在以上的各层次的逻辑判断中,假设其中任意一层逻辑判断为真,那么将执行对应的执行语句,并跳出该条件判断语句,其后的逻辑判断语句均不进行检查。三、MATLAB编程根底90用for循环语句编程实现n=100;a=ones(1,n);fori=3:na(i)=a(i-1)+a(i-2);ifa(i)>=10000a(i)%不加分号,结果显示在命令窗口中break;%跳出所在的一级循环
end;endi例.Fibonacci数列的元素满足Fibonacci规则:
,且,现要求该数组中第一个大于10000的元素。三、MATLAB编程根底91switch-case语句:switch-case语句的一般形式:switch〈选择判断量〉case
选择判断值1
判断执行语句1case
选择判断值2
判断执行语句2……otherwise
判断执行语句end
if-else-end语句所对应的是多重判断选择,而有时也会遇到多分支判断选择的问题。MATLAB语言为解决多分支判断选择提供了switch-case语句。三、MATLAB编程根底92注:在MATLAB语言中,当其中一个case语句后的条件为真时,switch-case语句不对其后的case语句进行判断,也就是说在MATLAB语言中,即使有多条case判断语句为真,也只执行所遇到的第1条为真的语句。因此,不需要象C语言一样,在每个case语句后面加上一个“break〞语句。三、MATLAB编程根底93fori=1:5switchS(i).Markscase100 %得分为100时S(i).Rank=='总分值'; %列为'总分值'等级casea %得分在90和99之间S(i).Rank=='优秀'; %列为'优秀'等级caseb %得分在80和89之间S(i).Rank=='良好'; %列为'良好'等级casec %得分在60和79之间S(i).Rank=='及格'; %列为'及格'等级otherwise %得分低于60。S(i).Rank=='不及格';%列为'不及格'等级endendswitch-case语句举例94在逻辑表达式中,通常有:关系操作符:>,<,<=,>=,==,~=等逻辑操作符:&,|,~等逻辑函数:isequal——假设是相等那么为真isempty——假设是空矩阵那么为真isstr——假设是字符串那么为真三、MATLAB编程根底95四、MATLAB绘图MATLAB有很强的图形功能,可以方便地实现数据的可视化。强大的计算功能与图形功能相结合为MATLAB在科学技术和教学方面的应用提供了更加广阔的天地。96利用符号绘图函数实现easyplot,即根据一元或二元函数的表达式,直接在指定区间内绘制曲线或曲面图。第一类利用plot命令对二维或三维离散数据绘制曲线或曲面图第二类四、MATLAB绘图MATLAB实现绘图的两大类方法97四、MATLAB绘图〔一〕、符号绘图函数符号变量与符号表达式f='sin(x)+5x'
f2=‘a
x^2+b
x+c=0'
f——符号变量名sin(x)+5x——符号表达式'
'——符号标识注:符号表达式一定要用''单引号括起来matlab才能识别。特点:运算对象可以是没赋值的符号变量可以获得任意精度的解98四、MATLAB绘图符号运算与数值运算的区别※数值运算中必须先对变量赋值,然后才能参与运算。
※符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达。
注:符号表达式或符号方程可以赋给符号变量,以后调用方便;也可以不赋给符号变量直接参与运算99四、MATLAB绘图注:由此种方法创立的符号表达式对空格是很敏感的,因此不要在字符间乱加空格符。另外一种创立符号函数的方法是利用syms〔用于生成多个符号变量〕命令或sym〔用于生成1个符号变量〕命令,如:>>symx;>>f=sin(x)+cos(x)f=sin(x)+cos(x)但这种方法只能创立符号函数,而不能创立符号方程。100四、MATLAB绘图在符号运算中sym命令可以将数值矩阵转化为符号矩阵,如:>>a=sym(‘[1/s+x,sin(x),cos(x)^2/(b+x);9,exp(x^2+y^2),log(tanh(y))]’)a=
101四、MATLAB绘图常见的符号运算函数〔1〕符号表达式的化简pretty(f)将符号表达式化简成与高等数学课本上显示符号表达式形式类似collect(f)合并符号表达式的同类项horner(f)将一般的符号表达式转换成嵌套形式的符号表达式factor(f)对符号表达式进行因式分解expand(f)对符号表达式进行展开simple(f)对符号表达式尝试多种不同的算法进行化简,以显示长度最短的符号表达式简化形式102四、MATLAB绘图常见的符号运算函数〔2〕符号矩阵transpose(A)符号矩阵的转置determ(A)符号矩阵的行列式det(A)符号矩阵的行列式inv(A)符号矩阵求逆rank(A)符号矩阵求秩[B,C]=eig(A)B为A的特征向量,C为A特征值103四、MATLAB绘图常见的符号运算函数〔3〕符号微积分Limit(f,x,a)求符号表达式f当x趋向于a时的极限Limit(f,x,a,‘right’)右极限Limit(f,x,a,‘left’)左极限Diff(f)求f的微分Diff(f,‘a’)对变量a求微分Diff(f,n)对f求n次微分Diff(f,'a',n)对变量a求n次微分104四、MATLAB绘图常见的符号运算函数〔3〕符号微积分int(f)对f求不定积分int(f,v)对v变量求不定积分int(f,a,b)对f求[[a,b]上的定积分int(f,v,a,b)对变量v求[a,b]上的定积分105四、MATLAB绘图利用符号函数进行绘图根本命令1:ezplot格式1:ezplot(f)
在默认区间一2*pi<x<2*pi绘制f=f(x)的曲线图例如:ezplot('cos(x)')注:ezplot命令只能在一张图中绘制一条曲线,而且会自动在图上加注函数的表达式。106四、MATLAB绘图格式2:ezplot〔f,[a,b]〕在区间a<x<b上绘制f=f(x)的曲线图例如:ezplot(‘sin(x)’,[-pi/2,pi/2])ezplot还可以绘制方程形式的隐函数曲线,如:ezplot('x^2+y^2-1',[-1.25,1.25]);axisequal;表示在[-1.25,1.25]内绘制单位圆,且横纵坐标比例相同。107四、MATLAB绘图ezplot还可以绘制二维参数曲线如:ezplot('sin(3*t)*cos(t)','sin(3*t)*sin(t)',[0,pi])108四、MATLAB绘图根本命令2:ezplot3——用于绘制三维参数曲线例如:ezplot3('cos(t)','sin(t)','t',[0,6*pi])注:t的缺省区间为[0,2*pi].109四、MATLAB绘图根本命令3:ezsurf——用于绘制方程为z=f(x,y)的三维曲面自变量的缺省取值范围是:-2*pi<x<2*pi,-2*pi<y<2*pi例如:ezsurf('sin(sqrt(x^2+y^2))/sqrt(x^2+y^2)',[-6*pi,6*pi])ezsurf('4*sqrt(1-x^2/4-y^2/16)',[-2,2,-4,4]);axisequal110四、MATLAB绘图参数s和t的缺省取值范围是:-2*pi<s<2*pi,-2*pi<t<2*pi例如:ezsurf(‘s*cos(t)’,‘s*sin(t)’,‘t’,[-2,2,-3*pi,2*pi])
ezsurf(x,y,z,[smin,smax,tmin,tmax])
ezsurf(f):也可用于绘制参数曲面即:-2<s<2,-3*pi<t<2*pi111四、MATLAB绘图又如:ezsurf(‘sin(s)*cos(t)’,‘sin(s)*sin(t)’,‘cos(s)’,[0,pi,0,2*pi])112四、MATLAB绘图〔二〕利用Plot命令对离散数据绘图MATLAB最常用的画二维图形的命令是plot;plot命令自动翻开一个图形窗口Figure;用直线连接相邻两数据点来绘制图形;根据图形坐标大小自动缩扩坐标轴,将数据标尺及单位标注自动加到两个坐标轴上,也可自定坐标轴,可把x,y轴用对数坐标表示。如果已经存在一个图形窗口,plot命令那么去除当前图形,绘制新图形;如果想保存本次绘图命令的执行结果,就要在plot命令后,加上“holdon〞语句。113plot的调用格式〔1〕plot(x)——缺省自变量绘图格式,x为向量,以x元素值为纵坐标,以相应元素的序号为横坐标绘图。>>y=[00.580.700.950.830.25];>>plot(y)如:四、MATLAB绘图114plot的调用格式〔2〕plot(x,y):以y(x)的函数关系作出直角坐标图,如果y为n×m的矩阵,那么以x为自变量,作出m条曲线>>x=linspace(0,2*pi,30);%生成一组线性等距的数值>>y=sin(x);>>plot(x,y)如:四、MATLAB绘图115plot的调用格式〔3〕plot(x1,y1,x2,y2)——多条曲线绘图格式>>x=0:pi/15:2*pi;>>y1=sin(x);>>y2=cos(x);>>plot(x,y1,x,y2)如:四、MATLAB绘图116plot的调用格式〔4〕plot(x,y,‘s’)——开关格式,开关量字符串s设定曲线颜色和绘图方式,使用颜色字符串的前1~3个字母,也可plot(x1,y1,‘s1’,x2,
y2,‘s2’,…)>>x=0:pi/15:2*pi;>>y1=sin(x);y2=cos(x);>>plot(x,y1,’b:+’,x,y2,’g-.*’)如:四、MATLAB绘图117Plot命令中格式开关的参数的取值线型线方式-实线:点线-.虚点线--波折线点方式.圆点+加号*星号××型。小圆颜色y黄色r红色g绿色b蓝色w白色k黑色m粉红c青色四、MATLAB绘图118图形的加注功能MATLAB绘图时,可以将标题、坐标轴标记、网格线、图例及文字注释加注到图形上,这些函数为:title——给图形加标题xlable——给x轴加标注ylable——给y轴加标注text——在图形指定位置加标注gtext——将标注加到图形任意位置gridon(off)——翻开、关闭坐标网格线legend——添加图例axis——控制坐标轴的刻度四、MATLAB绘图119例如t=0:0.1:10y1=sin(t);y2=cos(t);plot(t,y1,'r',t,y2,'b--');x=[1.7*pi;1.6*pi];y=[-0.3;0.8];s=['sin(t)';'cos(t)'];text(x,y,s);title('正弦和余弦曲线');legend('正弦','余弦')xlabel('时间t'),ylabel('正弦、余弦')gridonaxissquare如果想在坐标〔x,y〕处参加标题,也可用命令title,如:>>text(2.5,0.7,’sinx’)四、MATLAB绘图120四、MATLAB绘图121坐标的控制在缺省情况下MATLAB自动选择图形的横、纵坐标的比例,如果你对这个比例不满意,可以用axis命令控制,常用的有:axis([xminxmaxyminymax]):[]中分别给出x轴和y轴的最大值、最小值axisequal或axis(‘equal’):x轴和y轴的单位长度相同axissquare或axis(‘square’):图框呈方形axison(off):显示〔隐藏〕坐标刻度axisouto:系统自动设定坐标系四、MATLAB绘图122多幅图形绘制用subplot(m,n,p)命令;把一个画面分成m×n个图形区域,p代表当前的区域号,在每个区域中分别画一个图。如:>>x=linspace(0,2*pi,30);y=sin(x);z=cos(x);>>u=2*sin(x).*cos(x);v=sin(x)./cos(x);>>subplot(2,2,1),plot(x,y),axis([02*pi–11]),title(‘sin(x)’)>>subplot(2,2,2),plot(x,z),axis([02*pi–11]),title(‘cos(x)’)>>subplot(2,2,3),plot(x,u),axis([02*pi–11]),title(‘2sin(x)cos(x)’)>>subplot(2,2,4),plot(x,v),axis([02*pi–2020]),title(‘sin(x)/cos(x)’)四、MATLAB绘图123四、MATLAB绘图124特殊二维图形的绘制bar
––––绘制直方图polar
––––绘制极坐标图hist––––绘制统计直方图stairs––––绘制阶梯图stem––––绘制火柴杆图rose––––绘制统计扇形图comet––––绘制彗星曲线四、MATLAB绘图125errorbar––––绘制误差棒图compass––––复数向量图(罗盘图)feather––––复数向量投影图(羽毛图)quiver––––向量场图area––––区域图pie––––饼图convhull––––凸壳图scatter––––离散点图四、MATLAB绘图126例如:绘制阶梯曲线
x=0:pi/20:2*pi;y=sin(x);stairs(x,y)四、MATLAB绘图127例:绘制极坐标绘图
t=0:2*pi/90:2*pi;y=cos(4*t);polar(t,y)四、MATLAB绘图128绘制直方图例如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度年福建省高校教师资格证之高等教育法规基础试题库和答案要点
- 疫情之下企业直播告诉发展遇新机遇
- 航空模型基础理论知识单选题100道及答案解析
- 2024年个人用工保证协议参考格式
- 社区教育志愿者队伍建设研究
- 写给爱心捐款的感谢信
- 2024年吊车租赁协议样本2
- 2024年石灰石批发销售协议范例
- 2024年权益过户协议模板
- 2024年度商用空调安装协议范本
- GB/T 44352-2024燃油蒸发排放系统用活性炭通用要求
- 2024山东济南轨道交通集团限公司招聘49人高频难、易错点500题模拟试题附带答案详解
- 市政道路交通疏导方案施工方案
- “数字三品”应用场景典型案例申报书
- 2024秋三年级语文上册第二次月考达标检测卷第三四单元新人教版
- 2024年下半年辽宁事业单位高频500题难、易错点模拟试题附带答案详解
- 中医人工智能
- 人教版(2024)八年级上册物理第3章《物态变化》单元测试卷(含答案解析)
- 金属冶炼(铅、锌冶炼)主要负责人安全资格考试题库及答案
- 2024中国铁路集团全国招聘高频考题难、易错点模拟试题(共500题)附带答案详解
- (全册各类齐全)二年级数学上册100道口算题大全54份(100题)
评论
0/150
提交评论