matlab软件与数学建模.ppt

上传人:小飞机 文档编号:6512177 上传时间:2023-11-08 格式:PPT 页数:63 大小:430.50KB
返回 下载 相关 举报
matlab软件与数学建模.ppt_第1页
第1页 / 共63页
matlab软件与数学建模.ppt_第2页
第2页 / 共63页
matlab软件与数学建模.ppt_第3页
第3页 / 共63页
matlab软件与数学建模.ppt_第4页
第4页 / 共63页
matlab软件与数学建模.ppt_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《matlab软件与数学建模.ppt》由会员分享,可在线阅读,更多相关《matlab软件与数学建模.ppt(63页珍藏版)》请在三一办公上搜索。

1、MATLAB软件与数学建模,主讲:鲜思东Email:重庆邮电大学,常用数学建模软件,1.MATLAB软件/Mathematic软件2.LINDO/LINGO软件3.SAS/Spss/Eviews/Stata/Splus&R(统计分析)4.EXCEL软件5.其他(如CPLEX等),数学建模的基本方法和步骤,基 本 方 法,根据对客观事物特性的认识,找出反映内部机理的数量规律,机理分析,机理分析没有统一的方法,主要通过实例研究(Case Studies)来学习。以下建模主要指机理分析,测试分析,将研究对象看作“黑箱”,通过对量测数据的统计分析,找出与数据拟合最好的模型,二者结合,机理分析建立模型结

2、构,测试分析确定模型参数,数 学 建 模 的 一 般 步 骤,形成一个准比较清晰的问题,了解实际背景,明确建模目的,搜集有关信息,掌握对象特征,数 学 建 模 的 一 般 步 骤,模型假设,在合理与简化之间作出折中,针对问题特点和建模目的,作出合理的、简化的假设,尽量采用简单新颖的数学工具,模型构成,用数学的语言、符号描述问题,发挥想象力,使用类比法,数 学 建 模 的 一 般 步 骤,模型求解,各种数学方法、数学软件和计算机技术,如结果的误差分析、模型对数据的稳定性分析,模型分析,与实际现象、数据比较,检验模型的合理性、适用性,模型检验,模型应用,Matlab与建模基本内容,一、MATLAB

3、简介及基本运算 二、MATLAB图形绘制功能三、MATLAB程序设计 四、用MATLAB进行数值计算五、几类主要模型的MATLAB命令,一、MatLab简介及基本运算,1、MATLAB简介 MATLAB(Matrix&Laboratory)是美国MathWorks公司自20世纪80年代中期推出的数学软件,优秀的数值计算能力和卓越的数据可视化能力使其很快在数学软件中脱颖而出。到目前为止,其最高版本7.0版已经推出。随着版本的不断升级,它在数值计算及符号计算功能上得到了进一步完善。MATLAB已经发展成为多学科、多种工作平台的功能强大的大型软件。如今,MATLAB已经成为线性代数、自动控制理论、概

4、率论及数理统计、数字信号处理、时间序列分析、动态系统仿真等高级课程的基本教学工具。,MATLAB具有用法简易、可灵活运用、程式结构强又兼具延展性。以下为其几个特色:强大的数值计算和工程运算功能先进的资料视觉化功能高阶但简单的程式环境开放及可延伸的架构 丰富的程式工具箱-面向专门领域的工具箱:小波工具箱、神经网络工具箱、信号处理工具箱、图像处理工具箱、模糊逻辑工具箱、优化工具箱、鲁棒控制工具箱等几十个不同应用的工具箱。,MATLAB 能干什么?,MATLAB可以进行:数学计算、算法开发、数据采集建模、仿真、原型 数据分析、开发和可视化科学和工程图形应用程序的开发,包括图形用户界面的创建。MATL

5、AB广泛应用于:数值计算、图形处理、符号运算、数学建模、系统辨识、小波分析、实时控制、动态仿真等领域。,2、MATLAB界面 包括:命令窗口、图形窗口、编辑窗口、帮助窗口。,3、常用MATLAB系统命令help 在线帮助who 显示当前变量whos 显示当前变量的详细信息clear 清空工作间的变量和函数pack 整理工作间的内存load 把文件调入变量到工作间save 把变量存入文件中echo 命令回显what 显示指定的matlab文件dir 显示目录内容,4、基本数学运算,在MATLAB下进行基本数学运算,只需将运算式直接打在提示号 后面,并按Enter键。MATLAB将计算 的结果以a

6、ns显示。【例】求 的算术运算结果。(1)用键盘在MATLAB指令窗中输入以下内容(12+2*(7-4)/32(2)在上述表达式输入完成后,按【Enter】键,该就指令被执行。(3)在指令执行后,MATLAB指令窗中将显示以下结果。ans=2 我们也可给运算式的结果设定一个变量x:x=(5*2+1.3-0.8)*102/25 x=42 变量x的值可以在下个语句中调用:y=2*x+1y=85,变量命名规则:1.变量名的大小写敏感。2.变量的第一个字符必须为英文字母,而且不能超过31个字符。3.变量名可以包含下连字符、数字,但不能为空格符、标点。注:数值型变量和符号型变量在MATLAB中是不相同的

7、,它们之间不能直接进行转化。MATLAB提供了一个将数值型转化成符号型的命令,即sym(syms)。,系统预定义的变量ans 预设的计算结果的变量名eps MATLAB定义的正的极小值=2.2204e-16pi 内建的值(=3.1415926.)inf 值,无限大 NaN 无法定义一个数目()i 或 j 虚数单位i=j=clear 去除所有定义过的变量名称。,MATLAB提供基本的算术运算有:加(+)、减(-)、乘(*)、除(/)、幂次方(),范例为:5+3,5-3,5*3,5/3,53,MATLAB书写表达式的规则与“手写算式”差不多相同,但要求所有表达式都是以纯文本形式输入。如果一个指令过

8、长可以在结尾加上.(代表此行指令与下一行连续),例如:1*2+3*4+5*6+7*8+9*10+11*12+.13*14+15*16ans=744,MATLAB常用数学函数 三角函数和双曲函数,指数函数,复数函数,其他函数,5、阵列与矩阵 MATLAB的运算事实上是以阵列(array)及矩阵(matrix)方式在做运算.阵列强调元素对元素的运算,而矩阵则采用线性代数的运算方式.宣告一变量为阵列或是矩阵时,须用中括号 将元素置于其中。阵列为一维元素所构成,而矩阵为多维元素所组成.例如:x=1 2 3 4 5 6 7 8;%一维 1x8 阵列【例】简单矩阵的输入步骤。(1)在键盘上输入下列内容:(

9、以;区隔各列的元素)A=1,2,3;4,5,6;7,8,9(2)按【Enter】键,指令被执行。(3)在指令执行后,MATLAB指令窗中将显示以下结果:A=1 2 3 4 5 6 7 8 9,阵列的运算符号 除了加减符号外其余的阵列运算符号均须多加.符号。阵列运算功能(注意:一定要 多加.符号)+加-减.*乘./左除.右除.次方.转置 矩阵的几种基本变换操作(1)通过在矩阵变量后加的方法来表示转置运算 a=10,2,12;34,2,4;98,34,6;a ans=10 34 98 2 2 34 12 4 6,(2)矩阵求逆inv(a)ans=-0.0116 0.0372-0.0015 0.01

10、76-0.1047 0.0345 0.0901-0.0135-0.0045(3)矩阵的特征值u,v=eig(a)u=-0.2960 0.3635-0.3600-0.2925-0.4128 0.7886-0.9093-0.8352 0.4985v=48.8395 0 0 0-19.8451 0 0 0-10.9943,(4)取出上三角和下三角triu(a)ans=10 2 12 0 2 4 0 0 6tril(a)ans=10 0 0 34 2 0 98 34 6l,u=lu(a)l=0.1020 0.1500 1.0000 0.3469 1.0000 0 1.0000 0 0u=98.0000

11、 34.0000 6.0000 0-9.7959 1.9184 0 0 11.1000,二、MatLab图形绘制功能,基本绘图函数,绘制平面曲线(exp.m),clf,t=0:0.1:3*pi;alpha=0:0.1:3*pi;plot(t,sin(t),r-);hold on;plot(alpha,3*exp(-0.5*alpha),k:);set(gca,fontsize,15,fontname,times New Roman),xlabel(itt(deg);ylabel(itmagnitude);title(itsine wave and itAe-alphaittwave);,tex

12、t(6,sin(6),fontsize15The Value itsin(t)at itt=6rightarrowbullet,HorizontalAlignment,right),text(2,3*exp(-0.5*2),fontsize15bulletleftarrow The Value of it3e-0.5 itt=,num2str(3*exp(-0.5*2),at itt=2);legend(itsin(t),itAe-alphat)注1:num2str:string1,num2str,string2,用方括号注2:legend 请结合图形观察此命令的使用,续,三、MatLab程序

13、设计,1、M文件 我们前面所介绍在MATLAB所做的运算,是适合于所要计算的算式不太长或是想以交谈式方式做运算,如果要计算的算式很长有数十行或是须要一再执行的算式,则那样的方式就行不通了。MATLAB提供了所谓的 M-file 的方式,可让使用者自行将指令及算式写成巨集程式然后储存成一个特别的文档,其扩展名是m,譬如 picture.m,其中的picture就是文件名称。(1)编写M脚本文件的步骤点击MATLAB指令窗工具条上的New File图标,就可打开如图所示的MATLAB文件编辑调试器。用户即可在空白窗口中编写程序。,点击编辑调试器工具条图标,在弹出的Windows标准风格的“保存为”

14、对话框中,选择保存文件夹,键入新编文件名(如area),点击【保存】键,就完成了文件保存。(2)运行文件使area.m所在目录成为当前目录(系统默认路径),或让该目录处在MATLAB的搜索路径上.然后在指令窗口运行以下指令area 例:,%新建M-file,area.m%计算一个球的体积 r=input(Type radius 输入半径:);Area=pi*r2;volume=(4/3)*pi*r3;fprintf(半径 The radius is%12.5fn,r)fprintf(面积 The area of a circle is%12.5fn,Area)fprintf(体积The vol

15、ume of a sphere is%12.5fn,volume)在指令窗口运行指令 area,2、M文件函数 一个函数M文件与脚本文件类似之处在于它们都是一个有.m 扩展名的文本文件。如同脚本M文件一样,函数M文件不进入命令窗口,而是由文本编辑器所创建的外部文本文件。一个函数的M文件与脚本文件在通信方面是不同的。函数与MATLAB工作空间之间的通信,只通过传递给它的变量和通过它所创建的输出变量。在函数内中间变量不出现在MATLAB工作空间,或与MATLAB工作空间不交互。一个函数的M文件的第一行把M文件定义为一个函数,并指定它的名字。它与文件名相同,但没有.m 扩展名。它也定义了它的输入和输

16、出变量。M文件函数之间可以互相调用.,M文件函数必须遵循以下特定的规则:函数名和文件名必须相同。例如,函数fli 存储在名为fli.m 文件中。,例:,计算f(1)f(2)+f2(3)首先建立一个M函数:fun1.mfunction Y=fun1(x)Y=(x3-2*x2+x-6.3)/(x2+0.05*x-3.14);在指令窗口运行以下指令:fun1(1)*fun1(2)+fun1(3)*fun1(3)ans=-12.6023,例:计算阶层函数n!fact.mfunction output=fact(n)if n=1 output=1;return;end output=n*fact(n-1

17、);,3、MATLAB控制流,for循环结构For循环允许一组命令以固定的和预定的次数重复。For循环的一般形式是:for x=arraycommandsend在for和end语句之间的commands按数组中的每一列执行一次。for循环可按需要嵌套。,例:for n=1:10 x(n)=sin(n*pi/10);end xx=Columns 1 through 7 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090 Columns 8 through 10 0.5878 0.3090 0.0000,while循环结构与for循环以固定次数求一组命

18、令的值相反,while 循环以不定的次数求一组语句的值。while循环的一般形式是:while expression commands end只要在表达式里的所有元素为真,就执行while和end 语句之间的commands。可以利用break命令跳出while循环,while循环可按需要嵌套。,例:Fibonacci数组的元素满足Fibonacci 规则:,,,且,现要求该数组中第一个大于10000的元素。,a(1)=1;a(2)=1;i=2;while a(i)=10000 a(i+1)=a(i-1)+a(i);%当现有的元素仍小于10000时,求解下一个元素。i=i+1;end;i,a(

19、i),i=21 ans=10946,if-else-end分支结构很多情况下,命令的序列必须根据关系的检验有条件地执行。在编程语言里,这种逻辑由某种if-else-end结构来提供。最简单的if-else-end结构是:if expression commands end 如果在表达式中的所有元素为真(非零),那么就执行if和end语言之间的commands,假如有两个选择,if-else-end结构是:if expression commands evaluated if True else commands evaluated if False end在这里,如果表达式为真,则执行第一组命

20、令;如果表达式是假,则执行第二组命令。,当有三个或更多的选择时,If-Else-End结构采用形式 if expression1 commands evaluated if expression1 is True elseif expression2 commands evaluated if expression2 is True elseif expression3 commands evaluated if expression3 is True elseif expression4 commands evaluated if expression4 is True elseif els

21、e commands evaluated if no other expression is True end 最后的这种形式,只和所碰到的、与第一个真值表达式相关的命令被执行;接下来的关系表达式不检验,跳过其余的If-Else-End结构。而且,最后的else命令可有可无。,例:画三次样条函数的图形x=0:0.01:5;for i=1:length(x)if x(i)=0 y(i)=x(i)3/6;elseif x(i)1 y(i)=-(x(i)-2)3/2-(x(i)-2)2+2/3;elseif x(i)2 y(i)=(x(i)-2)3/2-(x(i)-2)2+2/3;elseif x(

22、i)3 y(i)=(4-x(i)3/6;else y(i)=0;endendplot(x,y),switch-case结构例:学生的成绩管理,用来演示switch结构的应用。%划分区域:满分(100),优秀(90-99),良好(80-89),及格(60-79),不及格(60)。N=input(输入分数);switch N case 100%得分为100时 S=满分;%列为满分等级 case 90%得分在90和99之间 S=优秀;%列为优秀等级 case 80%得分在80和89之间 S=良好;%列为良好等级 case 60%得分在60和79之间 S=及格;%列为及格等级 otherwise%得分

23、低于60。S=不及格;%列为不及格等级 end disp(S),四、用MatLab进行数值计算,方程求解 求解代数方程(组)、求解线性方程、求解微分方程(组)sovle fsolve dsovle 微分和积分 diff int 数值积分 梯形法 trapz 二次函数法 quad quads,线性优化用命令x=lp(C,A,b,vlb,vub)。,非线性优化用命令x=constr(f,x0)。,曲线拟合与插值,五、几类主要模型的MATLAB命令,一)、微分方程数值解,1。求微分方程(组)的解析解命令:,dsolve(方程1,方程2,方程n,初始条件,自变量),记号:在表达微分方程时,用字母D表示

24、求微分,D2、D3等表示求高阶微分.任何D后所跟的字母为因变量,自变量可以指定或由系统规则选定为确省.,2.用Matlab软件求常微分方程的数值解,t,x=solver(f,ts,x0,options),1、在解n个未知函数的方程组时,x0和x均为n维向量,m-文件中的待解方程组应以x的分量形式写成.,2、使用Matlab软件求数值解时,高阶微分方程必须等价地变换成一阶微分方程组.,注意:,二)、解优化问题,1.线性规划有约束极小问题 模型,用命令x,fval=linprog(f,A,b,A1,b1,lb,ub),2.非线性规划有约束极小问题 模型1,用命令 x=constr(f,x0),Ex

25、amples:Find values of x that minimize f(x)=-x1x2x3,starting at the point x=10;10;10 and subject to the constraints 0 x1+2x2+2x372.-x1-2x2-2x30,x1+2x2+2x372,第一步:编写M文件function f,g=myfun(x)f=-x(1)*x(2)*x(3);g(1)=-x(1)-2*x(2)-2*x(3);g(2)=x(1)+2*x(2)+2*x(3)-72;,第二步:求解在MATLAB工作窗中键入x0=10,10,10;x=constr(myf

26、un,x0)即可,模型2:,MATLAB求解此问题的命令是:,x,fval,exitflag,output,lambda,grad,hessian=fmincon(fun,x0,A,b,A1,b1,LB,UB,nonlcon,options,p1,p2,),fun是目标函数的m_文件名.nonlcon是约束函数C(x)和C1(x)的m_文件名.文件输出为C,C1.,3.非线性无约束极小问题,用命令x=fmin(f,x0)。或用命令x=fminu(f,x0),或用命令x=fmins(f,x0)。,4.非线性最小二乘问题,用命令x=leastsq(f,x0),或用命令x=curvefit(f,x0

27、)。,5.二次规划,用命令x=qp(H,c,A,b)。,合金强度y与其中含碳量x有密切关系,如下表,根据此表建立y(x)。并对结果作可信度进行检验、判断x对y影响是否显著、检查数据中有无异常点、由x的取值对y作出预测。,2.将17至19岁的运动员每两岁一组分为7组,每组两人测量其旋转定向能力,以考察年龄(x)对这种运动能力(y)的影响。现得到一组数据如下表,合金强度y与其中含碳量x有密切关系,如下表,根据此表建立y(x)。并对结果作可信度进行检验、判断x对y影响是否显著、检查数据中有无异常点、由x的取值对y作出预测。,解:在x-y平面上画散点图,直观地知道y与x大致为线性关系。用命令polyf

28、it(x,y,1)可得y=140.6194x+27.0269。,x=0.1:0.01:0.18;x=x,0.2,0.21,0.23;y=42,41.5,45,45.5,45,47.5,49,55,50,55,55.5,60.5;polyfit(x,y,1)plot(x,y,r*),三)、回归分析,作回归分析用命令b,bint,r,rint,ststs=regress(y,x,alpha)可用help查阅此命令的具体用法残差及置信区间可以用rcoplot(r,rint)画图,x=0.1:0.01:0.18;x=x,0.2,0.21,0.23;y=42,41.5,45,45.5,45,47.5,4

29、9,55,50,55,55.5,60.5;X=ones(12,1),x;b,bint,r,rint,stats=regress(y,X,0.05);b,bint,stats,rcoplot(r,rint),结果含义为0=27.0269 1=140.61940的置信区间是 22.3226,31.73131的置信区间是 111.7842,169.4546,tji01.m,R2=0.9219 F=118.0670,p10-4.R是衡量y与x的相关程度的指标,称为相关系数.R越大,x与y关系越密切.通常R大于0.9才认为相关关系成立.F是一统计指标,p是与F对应的概率,当 p0.05时,回归模型成立.

30、此例中 p=0 10-40.05,所以,所得回归模型成立。观察所得残差分布图,看到第8个数据的残差置信区间不含零点,此点视为异常点,剔除后重新计算。,此时键入:X(8,:)=;y(8)=;b,bint,r,rint,stats=regress(y,X);b,bint,stats,rcoplot(r,rint),可以看到:置信区间缩小;R2、F变大,所以应采用修改后的结果。,2.将17至19岁的运动员每两岁一组分为7组,每组两人测量其旋转定向能力,以考察年龄(x)对这种运动能力(y)的影响。现得到一组数据如下表,试建立关系y(x),并作必要的统计分析。,解:在x-y平面上画散点图,直观地知道y与

31、x大致为二次函数关系.设模型为y=a1x2+a2x+a3,此问题可以利用命令polyfit(x,y,2)来解,也可以象上题一样求解。,x=17:2:29;x=x,x;y=20.48,25.13,26.15 30,26.1,20.3,19.35,24.35,28.11,26.3,31.4,26.92,25.7,21.3;polyfit(x,y,2)plot(x,y,r*),下面介绍用命令polytool来解。,x=17:2:29;x=x,x;y=20.48,25.13,26.15,30,26.1,20.3,19.35,24.35,28.11,26.3,31.4,26.92,25.7,21.3;p

32、olytool(x,y,2),得到一个交互式窗口,首先在命令窗口键入,窗口中绿线为拟合曲线、红线为y的置信区间、可通过移动鼠标的十字线或通过在窗口下方输入来设定x值,窗口左边则输出与x对应的y值及y的置信区间。通过左下方的Export下拉菜单可输出回归系数等。更详细的解释可通过help查阅。,3.某厂生产的某产品的销售量与竞争对手的价格x1和本厂的价格x2有关。下表是该产品在10个城市的销售记录。,试建立关系y(x1,x2),对结果进行检验。若某城市本厂产品售价160(元),对手售价170(元),预测此产品在该城市的销售量。,解.这是一个多元回归问题。若设回归模型是线性的,即设y=0+1x1+

33、2x2.那么依然用regress(y,x,alpha)求回归系数。键入,x1=120,140,190,130,155,175,125,145,180,150;x2=100,110,90,150,210,150,250,270,300,250;y=102,100,120,77,46,93,26,69,65,85;x=ones(10,1),x1,x2;b,bint,r,rint,stats=regress(y,x);b,bint,stats,得b=66.5176 0.4139-0.2698bint=-32.5060 165.5411-0.2018 1.0296-0.4611-0.0785stats

34、=0.6527 6.5786 0.0247,p=0.0247,若显著水平取0,01,则模型不能用;R2=0.6527较小;0,1的置信区间包含零点.因此结果不理想.于是设模型为二次函数.此题设模型为纯二次函数:,MATLAB提供的多元二项式回归命令为rstool(x,y,model,alpha).其中alpha为显著水平、model在下列模型中选一个:,linear(线性)purequadratic(纯二次)interaction(交叉)quadratic(完全二次),对此例,在命令窗中键入x(:,1)=;rstool(x,y,purequadratic)得到一个对话窗:,其意义与前面的对话窗

35、意义类似。若要回答“本厂售价160,对手售价170,预测该市销售量”的问题,只需在下方窗口中分别肩入160和170,就可在左方窗口中读到答案及其置信区间。下拉菜单Export向工作窗输出数据具体操作为:弹出菜单,选all,点击确定。此时可到工作窗中读取数据。可读数据包括:beta(回归系数)rmse(剩余标准差)residuals(残差)本题只要键入,beta,rmse,residuals,得beta=-312.5871 7.2701-1.7337-0.0228 0.0037rmse=16.6436residuals=6.6846-12.6703-0.2013 6.4855-19.6533 7.9989-11.4737 5.4303-4.9932 22.3926大家不妨用此命令选其它模型作一个比较。,MATLAB中还包括神经网络工具箱,小波分析工具箱,在网上还可以下载遗传算法工具箱,有兴趣的同学可以借这次机会,结合学习MATLAB,好好学习一下相关理论知识.,谢谢大家!,最后,祝大家学习,竞赛都取得成功。,参考书:数学实验,高等教育出版社参考书:科学计算技术与MATLAB,科学出版社,Thank you very much!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号