MATLAB数学建模编程资料.doc

上传人:豆**** 文档编号:23957842 上传时间:2022-07-02 格式:DOC 页数:273 大小:3.92MB
返回 下载 相关 举报
MATLAB数学建模编程资料.doc_第1页
第1页 / 共273页
MATLAB数学建模编程资料.doc_第2页
第2页 / 共273页
点击查看更多>>
资源描述

《MATLAB数学建模编程资料.doc》由会员分享,可在线阅读,更多相关《MATLAB数学建模编程资料.doc(273页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateMATLAB数学建模编程资料目 录内部资料数学建模编程培训数学建模教练组编写2008年7月-目 录1Matlab软件11.1基本介绍11.1.1软件简介11.1.2工作环境介绍11.1.3数据结构31.1.4Matlab语言的特点31.1.5Matlab中的常量与特殊变量31.1.6特殊符号31.1.7Matlab常用函数41.2矩阵函数71.2.1构造矩阵71.2.

2、2矩阵变换操作91.2.3设置输出格式101.3程序设计入门101.3.1变量101.3.2基本语句111.3.3分支判断语句111.3.4循环语句131.3.5Matlab程序M文件131.3.6函数与子函数141.3.7建立内部函数171.4字符串函数171.4.1函数简介171.4.2例子181.4.3文件处理函数191.4.4读取格式化文件例子201.5二维作图211.5.1基本图形211.6Matlab编程练习题231.6.1练习1231.6.2练习2241.7编程中经常发现的问题242Mathematica快速入门262.1Mathematica简介262.1.1命令输入与运行26

3、2.1.2数、表达式和变量282.1.3常用的内部函数302.1.4自定义函数332.1.5常用菜单352.2基本绘图命令、数组与数据拟合382.2.1基本绘图命令382.2.2数组运算422.2.3数据拟合442.3极限、微积分与极值命令452.3.1极限452.3.2微积分452.3.3极值472.3.4LinearProgramming472.3.5ConstrainedMin482.3.6ConstrainedMax482.4方程与方程组求解482.4.1定义方程482.4.2一般方程(组)求解492.4.3微分方程(组)求解502.4.4不等式(组)求解512.5程序设计简介512.

4、5.1Mathematica程序设计基本命令512.5.2Mathematica动画制作简介533递归程序设计553.1计算阶乘553.2组合数学中的Pascal公式553.3汉诺塔问题563.3.1“Hanoi塔”问题563.3.2问题求解563.3.3实现程序563.4案例:商人安全过河问题573.4.1问题分析573.4.2模型建立583.4.3模型求解583.4.4进一步的思考题583.4.5程序运行结果593.4.6递归算法求解程序594优化模型及其求解664.1案例:背包问题664.1.1问题分析664.1.2变量与符号说明664.1.3模型建立664.1.4模型求解及结果674.

5、1.5贪婪法684.1.6贪婪法求解程序684.1.7贪婪法求解结果694.1.8穷举法求解程序694.1.9穷举法程序运行结果714.2案例:高速公路问题714.2.1问题分析724.2.2变量说明724.2.3模型假设724.2.4模型建立724.2.5模型求解734.2.6模型结果及分析734.2.7求解模型的主程序文件734.3随机跳跃法744.3.1随机跳跃法简介744.3.2求解高速公路问题的随机跳跃法程序754.3.3程序运行结果764.4网格法764.4.1网格法简介764.4.2求解高速公路问题的网格法程序774.4.3程序运行结果784.5实验:开放式基金的投资问题785系

6、统模拟805.1概述805.1.1模拟技术805.1.2模拟时间805.1.3模拟语言815.1.4随机数的模拟815.1.5随机数的产生815.1.6模拟均匀分布随机变量的函数825.1.7模拟指数分布随机变量的函数835.1.8模拟正态分布随机变量的函数835.2蒙特卡罗模拟法835.2.1模拟寻求近似圆周率835.2.2用蒙特卡罗法估算定积分845.2.3用蒙特卡罗法估计体积865.3案例:渡口模型875.3.1问题描述875.3.2问题分析875.3.3模型建立875.3.4模拟程序设计885.3.5模型求解结果及分析885.3.6模拟程序885.3.7思考题905.4案例:核反应堆屏

7、蔽层设计问题905.4.1问题描述与分析905.4.2模型假设:915.4.3中子运动的数学描述915.4.4模拟过程915.4.5模拟结果925.4.6模拟程序925.4.7思考题945.5案例:理发店系统研究945.5.1问题分析945.5.2模型假设:945.5.3变量说明:955.5.4模型建立955.5.5系统模拟:955.5.6系统模拟算法设计965.5.7系统模拟程序965.6实验题目1005.6.1实验:赶上火车的概率1005.6.2实验:小狗追人的故事1015.6.3实验:一个修理厂的模拟1045.6.4实验:超市收费服务系统1056编程中常见错误1056.1常见语法错误10

8、56.1.1引用未定义变量1056.1.2下标越界1056.1.3维数不同赋值1066.2逻辑错误1066.2.1变量未初始化1066.2.2变量名误用1066.2.3程序实现错误1076.3如何查找程序中的错误1076.3.1查找错误的一般原则1076.3.2一般查错顺序1077动态规划建模举例1077.1动态规划方法介绍1087.2动态规划求解示例1087.2.1背包问题1087.3例子:运载问题1107.3.1前向算法建立动态规划模型1107.3.2后向算法建立动态规划模型1147.3.3求解方法结果对比分析1167.4应用中面临的问题1178连续系统建模与模型求解选讲1188.1常用M

9、athematica命令1188.2案例:冷却模型1218.2.1问题分析1218.2.2基本假设1218.2.3变量说明1218.2.4建立模型1218.2.5求解1228.2.6进一步思考1228.3案例:战斗模型1228.3.1问题分析1228.3.2基本假设1238.3.3变量说明1238.3.4建立模型1238.3.5求解模型1238.3.6进一步分析1248.4案例:人口增长预测1258.4.1问题分析1258.4.2基本假设1258.4.3建立模型1258.4.4求解模型1258.4.5进一步分析1268.5案例:狼追击兔子的问题1278.5.1问题重述与分析1278.5.2变量

10、说明1278.5.3模型假设1278.5.4模型建立1288.5.5微分方程数值解1298.5.6系统模拟法求解问题1308.6实验习题1329统计问题建模及求解1349.1常用Mathematica命令1349.2案例:合金的抗拉强度控制1359.3建模习题14110Matlab优化工具箱14210.1简介14210.2一元非线性方程求根14410.3非线性方程组求解14510.4无约束非线性最小化14610.4.1fminbnd求单变量函数最小值点14610.4.2fminunc14810.4.3fminsearch求多变量函数最小值点14810.5有约束非线性最小化fmincon1491

11、0.6线性规划linprog15110.7最小二乘和曲线拟合15210.7.1线性最小二乘15210.8非线性曲线拟合lsqcurvefit15311数学建模案例15511.1案例:节水洗衣机15511.1.1问题重述与分析15511.1.2基本假设及说明15511.1.3符号和变量说明15611.1.4建模准备15611.1.5模型建立15711.1.6模型求解15811.1.7思考题16312Lingo数学软件16412.1LINGO快速入门16412.2LINGO中的集16512.3模型的数据部分和初始部分16912.4LINGO函数17212.5LINGO WINDOWS命令18312

12、.6LINGO的命令行命令19912.7综合举例2031 Matlab软件1.1 基本介绍1.1.1 软件简介它已经成为世界上应用最广泛的数学软件之一,尤其在工程计算领域、高校应用最广。该软件以矩阵运算为基础,将计算、可视化、程序设计融合在简单易用的交互式环境中。运用MATLAB可以实现工程计算、数学建模、计算机模拟、算法研究、数据分析与处理、科学与工程绘图、应用软件开发、数值计算、图形、图像处理,支持递归函数,还有多种工具箱(不同领域)。Matlab部分工具箱:控制系统工具箱(Control System Toolbox)小波工具箱(Wavelet Toolbox)模糊逻辑工具箱(Fuzzy

13、 Logic Toolbox)神经网络工具箱(Neural Network Toolbox)通信工具箱(Communication Toolbox)图象处理工具箱(Image Processing Toolbox)优化工具箱(Optimization Toolbox)财政金融工具箱(Financial Toolbox)样条工具箱(Spline Toolbox) 统计工具箱(Statistics Toolbox)信号处理工具箱(Signal Processing Toolbox)1.1.2 工作环境介绍1.1.2.1 搜索路径管理(1)命令形式设置:path查看或设置当前的搜索路径用法:path

14、(path,p)path(p,path)举例:path(path,d:mywork)path(d:mcmuse,path)addpath用于添加路径用法:addpath dirname将目录dirname放在原有目录的前面addpath dirname -beginaddpath dirname -end 新增加一个搜索目录,放在原有目录最后addpth dir1 dir2 dir3 增加多个搜索目录,放在搜索目录最前面rmpath用于删除路径用法:rmpath dirname删除搜索目录dirnamermpath dir1 dir2 dir3 删除多个搜索目录pwd查看当前指向目录举例:cd

15、用法:cd dirname 将dirname 作为当前目录cd返回当前目录cd .将当前目录设置其上级目录(有空格)(2)界面设置通过菜单File-Set Path会打开一个窗口,用于添加、删除搜索路径,可以方便的打开、运行MATLAB文件。1.1.2.2 工作环境管理查看工作空间变量菜单方式:通过File选择“Show WorkSpace”菜单条可以显示当前工作环境内的变量。执行如下命令:clear allx=rand(3,1)x = 0.9501 0.2311 0.6068通过open按钮可以打开变量进行编辑。命令方式:who显示当前工作空间的变量名whos显示当前工作空间的每个变量的信息

16、who global显示当前工作空间全局变量名whos global显示当前工作空间全局变量的信息1.1.3 数据结构在MATLAB中基本数据结构是矩阵,而矩阵一般分为:数值矩阵、字符串矩阵。例如:a=1:10a=ones(3,2) %前2行为数值矩阵s=hello world %为1行11列字符串矩阵1.1.4 Matlab语言的特点 语言简介,编程效率高 变量名区分大小写:如:count与Count,num、Num与NUM在MATLAB指的是不同的变量。 丰富的内部函数、外部函数、工具箱 易扩展性1.1.5 Matlab中的常量与特殊变量i,j:虚数单位,如3+2i,2+3j,4j+30,

17、这里的i,j必须是小写字母pi:圆周率3.14159265358979,必须为小写realmax:realmin:inf:无穷大NaN:表示不是一个数值,意思是Not a Numberver或version:版本信息ans:变量,用于存储当前语句未保存的计算结果1.1.6 特殊符号符号说明例子:产生向量,用于循环V=1:3;v=-1:0.5:3;,用于分割命令或元素;命令结束符号,运算结果不显示;用于创建矩阵分行A=1 2 3; 4 5 6,B=A2;例子:for i=1:3, for j=1:4, tmp=j, m(i,j)=i*100+j; endend1.1.7 Matlab常用函数1、

18、 ones产生元素均为一的矩阵常见用法:ones(n)产生nn矩阵ones(m,n)或ones(m n) 产生mn矩阵ones(size(A)产生与A同样维数的矩阵举例:ones(3,5)ans = 1 1 1 1 1 1 1 1 1 11 1 1 1 12、 zeros产生0矩阵,用法与ones相同用法:zeros(n)zeros(m,n)或zeros(m n)zeros(size(A)3、 length返回向量的长度,length(x)等价于max(size(x) 举例:a=ones(1,5)a = 1 1 1 1 1length(a)ans = 5end用法:表示for,while,if

19、等语句的中断符号也可表示最后一个元素的索引,如a(end);还可以用a(end+1)来增加元素举例:a=1 3 2 5a = 1 3 2 5a(end)ans = 5a(end+1)=8a = 1 3 2 5 84、 rand用法:rand产生一个在(0,1)之间的均匀分布的数5、 randn产生正态分布随机数用法:randn产生一个在服从N(0,1)正态分布的随机数randn(n)randn(m,n)举例:randans = 0.9501rand(2,3)ans = 0.2311 0.4860 0.7621 0.6068 0.8913 0.4565randnans = 0.6565randn

20、(3,2)ans = -1.1678 -1.2132 -0.4606 -1.3194 -0.2624 0.93126、 findfind 找出非0元素。也可以查找指定条件的元素,并返回元素所在位置索引。(1)例子x=8 5 6 9 4 7 10;find(x5)输出结果:ans =1 3 4 6 7(2)例子:x=fix(rand(5)*10),r,c=find(x5);r=r,c=c,length(r)-length(find(x5)输出结果:x = 0 3 4 6 4 0 6 4 7 7 1 7 3 4 8 5 6 1 5 2 0 0 6 1 2r = 2 3 4 5 1 2 2 3c =

21、 2 2 2 3 4 4 5 5ans = 0(3)例子:vec= fix(rand(1,10)*100)id= find(vec=60 & vec0时,为主对角线以上,当k0位于主对角线以上,k0位于主对角线以上,k0位于主对角线以下1.2.3 设置输出格式命令:formatformat命令控制MATLAB的显示输出格式,但不影响其计算与存储命令说明例子format short5位定点数format long15位定点数format short e5位浮点数Format long e15位浮点数format short g最佳5位定点数或浮点数format long g最佳15位定点数或浮点

22、数format hex十六进制数format bank精确到分(金融格式)format rat用有理分式表示format +用+表示正数,-表示负数,空格表示为零元素format compact压缩额外的空行format loose显示变量之间插入空行1.3 程序设计入门1.3.1 变量1.3.1.1 命名规则给变量(包括函数)命名时应该遵循一下规则:(1) 必须以字母开头(2) 可由字母、数字、下划线混合(3) 变量名和函数名字符长度不超过31个字符,如果变量前31个字符相等而后面字符不同,则作为同一变量处理1.3.1.2 变量定义:局部变量和全局变量变量并不都需要显示的申明局部变量在程序中

23、可以定义变量。每个函数体内部也可以定义自己的变量,这些变量如果不用global声明,则不能从其他函数和MATLAB工作空间中访问这些变量,这样的变量就是局部变量。全局变量如果要使得其他函数和MATLAB工作空间使用这些变量,则定义为全局变量,用“global”声明。全局变量需要在函数体对变量的赋值语句前说明,整个函数以及所有对函数的递归调用都可以利用全局变量。变量命名建议:变量名尽量反映其含义,如汽车数量用numcar,捕鱼收入用incomefish。局部变量名尽量采用小写,全局变量名尽量大写1.3.2 基本语句赋值语句是Matlab中的基本语句。其结构为:(1)变量名列表表达式例子:a=ra

24、nd(2,5);a(1,2)=10*rand(2)另外一个语句可以只有表达式,而没有变量名列表和等号,这样改语句的结果将自动赋值给MATLAB内部变量“ans”。例子:rand(1,5)size(a)1.3.3 分支判断语句1.3.3.1 if分支判断语句其通用格式: IF expression statements ELSEIF expression statements ELSE statements END比较操作符相等小于大于小于等于大于等于不等于=.逻辑操作符名称表示符号与(and)&或(or)|非(not)例子:grade=yesinput(情输入你的成绩,0,0 100);if

25、grade=90 sprintf(成绩优异)elseif grade=80 & grade=60 & grade80 sprintf(成绩中等)else sprintf(居然还没有及格)end1.3.3.2 Switch分支判断语句Switch语句通用格式:SWITCH switch_exprCASE case_expr,statement, ., statementCASE case_expr1, case_expr2, case_expr3,.statement, ., statement.OTHERWISE,statement, ., statementEND例子:对输入的成绩进行判别g

26、rade=yesinput(请输入成绩,0,0 100);grade=fix(grade/10)switch gradecase 9,10, sprintf(成绩优异)case 8, sprintf(成绩优秀)case 6,7, sprintf(成绩一般)otherwise, sprintf(还没有及格)end1.3.4 循环语句1.3.4.1 FOR语句通用格式:FOR variable = expr, statement, ., statement END例子:构造一个5行4列的矩阵,并赋值for i=1:5 for j=1:4 m(i,j)=i*100+j; endend1.3.4.2

27、WHILE语句通用格式: WHILE expression statements END例子:将输入的字符串反序str=input(请输入字符串: ,s)tmpstr=str;i=1;len=length(str);while i=len str(len-i+1)=tmpstr(i); i=i+1;end1.3.5 Matlab程序M文件Matlab程序一般保存为扩展名为m的文件,这类文件分为两类:(1)脚本(2)函数脚本:在Matlab中即不接受输入参数,也不返回参数的M文件称为脚本,这类文件中没有函数申明,它是一些MATLAB函数和命令的组合。脚本可以直接在MATLAB环境下执行,它可以访

28、问整个MATLAB工作空间种的变量,而脚本中的变量在脚本执行完后仍然保留在工作空间中,并能被其它脚本所引用,直到用clear命令清空。比如建立脚本文件mypro1.m,其内容如下:num=input(输入一个正整数:)s=0;for i=1:num, s=s+i;ends本脚本功能是输入一个正整数,赋值给num,然后计算1到该正整数的所有整数的和,并将结果保存到变量s中。注意:Matlab工作空间中的变量要被函数所引用,必须申明为全局变量且全局必须在使用前就要申明,语法为:global varname1 varname2 例子:文件:temp1.mglobal t1t1=1 3 5 7文件:t

29、estfun.mfunction r=testfun(num)global t1r=t1*num运行:clear alltemp1t1 = 1 3 5 7testfun(2)r = 2 6 10 14ans = 2 6 10 141.3.6 函数与子函数1.3.6.1 函数语法结构函数同其它高级语言一样,是MATLAB语言的重要组成部分,MATLAB除了内部函数外,还有各种工具箱中的函数,这些函数都以M文件给出,以便调用。下面以一个例子来说明MATLAB函数的语法。下面是文件名为mean.m的内容。function y = mean(x,dim)%MEAN Average or mean va

30、lue.% For vectors, MEAN(X) is the mean value of the elements in X. For% matrices, MEAN(X) is a row vector containing the mean value of% each column. For N-D arrays, MEAN(X) is the mean value of the% elements along the first non-singleton dimension of X.% MEAN(X,DIM) takes the mean along the dimension DIM of X.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁