1、什么是MATLAB?n1.MATLAB代表MATrixLABoratoryn它首创者是美国新墨西哥大学计算机系系主任CleveMoler博士,他在教授线性代数课程发觉其它语言很不方便,篇构思开发了MATLAB。最初采取FORTRAN语言编写,20世纪80年代后出现了MATLAB第二版,全部采取C语言编写.n1984年Moler博士和一批数学家及软件教授创建了MathWorks企业,专门开发MATLAB。n1993年出现了微机版,到是6.5版重庆邮电大学重庆邮电大学-数学建模数学建模第5页2.一个演草纸式科学计算语言3.MATLAB是一高性能技术计算语言.n强大数值计算和工程运算功效n符号计算功
2、效n强大科学数据可视化能力n各种工具箱重庆邮电大学重庆邮电大学-数学建模数学建模第6页MATLAB能干什么?MATLAB能够进行:n数学计算、算法开发、数据采集n建模、仿真、原型n数据分析、开发和可视化n科学和工程图形应用程序开发,包含图形用户界面创建。MATLAB广泛应用于:n数值计算、图形处理、符号运算、数学建模、系统辨识、小波分析、实时控制、动态仿真等领域。重庆邮电大学重庆邮电大学-数学建模数学建模第7页掌握MATLABMATLAB组成:组成:nMATLAB开发环境:进行应用研究开发交互式平台开发环境:进行应用研究开发交互式平台nMATLAB 数学与运算函数库:用于科学计算函数数学与运算
3、函数库:用于科学计算函数nMATLAB 语言:进行应用开发编程工具语言:进行应用开发编程工具n图形化开发:二维、三维图形开发工具图形化开发:二维、三维图形开发工具n应用程序接口应用程序接口(API):用于与其它预言混编:用于与其它预言混编n面向专门领域工具箱:小波工具箱、神经网络工具箱、面向专门领域工具箱:小波工具箱、神经网络工具箱、信号处理工具箱、图像处理工具箱、含糊逻辑工具箱、信号处理工具箱、图像处理工具箱、含糊逻辑工具箱、优化工具箱、鲁棒控制工具箱等几十个不一样应用工优化工具箱、鲁棒控制工具箱等几十个不一样应用工具箱。具箱。重庆邮电大学重庆邮电大学-数学建模数学建模第8页开发环境 包含:
4、命令窗口、图形窗口、编辑窗口、包含:命令窗口、图形窗口、编辑窗口、帮助窗口。帮助窗口。重庆邮电大学重庆邮电大学-数学建模数学建模第9页命令窗口n可在提醒符后输入交互式命令可在提醒符后输入交互式命令 n结果会自动产生结果会自动产生n比如:比如:MATLAB prompt()and cursor(|)command(typed at prompt)MATLAB output重庆邮电大学重庆邮电大学-数学建模数学建模第10页图形窗口在窗口中输入:nPlot(1,2,4,9,16,1,2,3,4,5)nMATLAB划出以下列图形:第11页编辑窗口n用来创建和修改M-files(MATLAB脚本)第12
5、页帮助窗口重庆邮电大学重庆邮电大学-数学建模数学建模第13页TheMATLABLanguageMATLAB 语言特点语言特点nMatlab基本数据单元是不需指定维数矩阵。基本数据单元是不需指定维数矩阵。nMatlab全全部部计计算算都都是是经经过过双双精精度度进进行行,在在内内存存中数都是双精度。中数都是双精度。ndouble 是一个双精度浮点数,每个存放双精是一个双精度浮点数,每个存放双精度数用度数用64位。位。nchar用于存放字符,每个存放字符用用于存放字符,每个存放字符用16位。位。重庆邮电大学重庆邮电大学-数学建模数学建模第14页MATLAB程序组成:程序组成:重庆邮电大学重庆邮电大
6、学-数学建模数学建模程序程序M文件与文件与m函数函数图形显示图形显示流程控制流程控制其它输出其它输出函数函数语句语句变量变量各种运算符各种运算符第15页常变量及其命名规则常变量及其命名规则n变量名能够有数字、字母、下划线组成;变量名能够有数字、字母、下划线组成;n变量首字符必须是字母;变量首字符必须是字母;n区分变量名大小写区分变量名大小写n每个变量名最长只能包含每个变量名最长只能包含19个字符。个字符。重庆邮电大学重庆邮电大学-数学建模数学建模第16页一.矩阵:1.矩阵建立与表示法:在命令窗口中输入:A=1,2,3;4,5,6;7,8,9能够得到:A=1 2 3 4 5 6 7 8 9若要显
7、示整行或整列,则能够用(:)冒号来表示。冒(:)代表矩阵中行(ROWS)或列(COLUMNS)全部。比如执行命令:A(:,2),就会显示第2列全部,结果为:ans=2 5 8重庆邮电大学重庆邮电大学-数学建模数学建模第17页n其它特殊矩阵生成方法:1)、eye(m,n)或eye(m)产生m*n 或m*m单位矩阵。比如:eye(3,4)与eye(3)分别产生以下矩阵:1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 12)、zeros(m,n)或zeros(m)产生m*n 或m*m 零矩阵。比如:zeros(3,4)与zeros(3)分别产生以下矩阵:0 0 0 0
8、 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0重庆邮电大学重庆邮电大学-数学建模数学建模第18页3)、ones(m,n)或ones(m)产生m*n或m*m全部元素为1矩阵。比如:ones(3,4)与ones(3)分别产生以下矩阵:1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12.惯用矩阵函数:1)、d=eig(A)返回矩阵A特征值所组成列向量;v,d=eig(A)返回分别由矩阵A特征向量和特征值(以其为主对角线元素,其余元素为零)两个矩阵。比如执行命令:v,d=eig(A)结果为:重庆邮电大学重庆邮电大学-数学建模数学建模第19页v=d
9、=0.2320 0.7858 0.4082 16.1168 0 0 0.5253 0.0868 -0.8165 0 -1.1168 0 0.8187 -0.6123 0.4082 0 0 -0.0000其中v(:,i)为d(i,i)所对应特征向量。2)、det(A)计算行列式A值。比如:det(A)结果为:ans=0重庆邮电大学重庆邮电大学-数学建模数学建模第20页3)、expm(A)对矩阵A求幂。比如:expm(A)结果为:ans=1.0e+006*1.1189 1.3748 1.6307 2.5339 3.1134 3.6929 3.9489 4.8520 5.75524)、inv(A)求
10、矩阵A逆。比如:inv(A)结果为:Warning:Matrix is close to singular or badly scaled.Results may be inaccurate.RCOND=2.055969e-018.ans=1.0e+016*-0.4504 0.9007 -0.4504 0.9007 -1.8014 0.9007 -0.4504 0.9007 -0.4504重庆邮电大学重庆邮电大学-数学建模数学建模第21页5)、orth(A)返回对应于A正交化矩阵。比如:orth(A)结果为:ans=0.2148 0.8872 0.5206 0.2496 0.8263 -0.3
11、8796)、poly(A)若A为一矩阵,则返回A特征多项式。比如:poly(A)结果为:ans=1.0000 -15.0000 -18.0000 -0.0000若A为一向量,则返回以A元素为根特征多项式。比如:r=1,2,3;p=poly(r)结果为:p=1 -6 11 -67)、rank(A)计算矩阵A秩。比如:r=rank(A)结果为:r=2重庆邮电大学重庆邮电大学-数学建模数学建模第22页3.矩阵四则运算符号:加“+”减“”乘“*”除“/”共轭转置“”非共轭转置“.”比如:b=1+2i;3+4ib=1.0000+2.0000i 3.0000+4.0000ibans=1.0000-2.00
12、00i 3.0000-4.0000ib.ans=1.0000+2.0000i 3.0000+4.0000i重庆邮电大学重庆邮电大学-数学建模数学建模第23页4.矩阵分解:1)、q,r=qr(A)将矩阵A做正交化分解,使得A=q*r。q为单位矩阵(unitary matrix),其范数(norm)为1。r为对角化上三角矩阵。比如:q,r=qr(A)q=-0.1231 0.9045 0.4082 -0.4924 0.3015 -0.8165 -0.8616 -0.3015 0.4082 r=-8.1240 -9.6011 -11.0782 0 0.9045 1.8091 0 0 -0.0000 n
13、orm(q)ans=1.0000重庆邮电大学重庆邮电大学-数学建模数学建模第24页2)、L,U=lu(A)将矩阵A做对角线分解,使得A=L*U,L为下三角矩阵(lower triangular matrix),U为上三角矩阵(upper triangular matrix)。比如:L,U=lu(A)L=0.1429 1.0000 0 0.5714 0.5000 1.0000 1.0000 0 0 U=7.0000 8.0000 9.0000 0 0.8571 1.7143 0 0 0.0000重庆邮电大学重庆邮电大学-数学建模数学建模第25页二、多项式:多项式是用向量形式来表示,从最右边算起,
14、第一个为0阶系数,第二个为1阶系数,依次类推。比如一个一元三次多项式:4x3+3x2+2x+1用4 3 2 1来表示。1.多项式运算:1)、乘:conv指令执行多项式相乘运算,指令格式为:z=conv(x,y)比如:x=1 3 5;y=2 4 6;z=conv(x,y)z=2 10 28 38 30重庆邮电大学重庆邮电大学-数学建模数学建模第26页假如要对两个以上多项式进行相乘,以重复使用conv指令,比如:(x,y同上)conv(conv(x,y),x)ans=2 16 68 172 284 280 1502)、分解:与1)相反,用deconv指令,其指令格式为:z,r=deconv(x,y
15、)表示x除以y商为z,余数为r。比如:z,r=deconv(z,x)z=2 4 6 r=0 0 0 0 0重庆邮电大学重庆邮电大学-数学建模数学建模第27页3)、求根:roots指令用于求多项式根。比如:fx=1 3 2;rootoffx=roots(fx)rootoffx=-2 -14)、polyval(p,x)计算多项式p在x出值,其中x能够是点或向量或矩阵。比如:p=1 -6 11 -6;x=1;p1=polyval(p,x)结果为:p1=0 x=1,2,3;p2=polyval(p,x)结果为:p2=0 0 0重庆邮电大学重庆邮电大学-数学建模数学建模第28页 x=A;p3=polyv
16、al(p,x)结果为:p3=0 0 0 6 24 60 120 210 3365)、polyder(p)求p微分多项式。比如:p=1-6 11-6;dp=polyder(p)dp=3 -12 11重庆邮电大学重庆邮电大学-数学建模数学建模第29页6)、r,p,k=residue(x,y)求x/y部分因式分解。若多项式x,y都没有重根,则可把x/y比值表示为x/y=r1/(s-p1)+r2/(s-p2)+.+rn/(s-pn)+ks比如用residue指令求x/(x2+3x+2)部分因式分解:x=1 0;y=1 3 2;r,p,k=residue(x,y)r=2 -1p=-2 -1 k=重庆邮电
17、大学重庆邮电大学-数学建模数学建模第30页n当输入三个参数r,p,k时,该函数又会生成原来函数。比如:?x,y=residue(r,p,k)x=1 0 y=1 3 2重庆邮电大学重庆邮电大学-数学建模数学建模第31页三符号变量、符号表示式、抽象函数:函数sym用于生成符号变量和符号表示式,如:x=sym(x)a=sym(alpha)分别创建变量x,alpha f=sym(a*x2+b*x+c)创建变量表示式f,但要注意此式并没有自动创建变量a,b,c,x。能够用函数syms对多个变量同时定义,如:syms a b c x函数sym也能够用来表示确定函数,如f=sym(f(x)生成函数f(x)。
18、重庆邮电大学重庆邮电大学-数学建模数学建模第32页四常见符号计算:1.微分:diff是求微分最惯用函数。其输入参数既能够是函数表示式,也能够是符号矩阵。Diff(f,x,n)表示对f关于x求n阶导数。比如:1).下面程序段将生成表示式sin(ax),并分别对其中x和a求导。?syms a x?f=sin(a*x);?df=diff(f,x)df=cos(a*x)*a?dfa=diff(f,a)dfa=cos(a*x)*x重庆邮电大学重庆邮电大学-数学建模数学建模第33页2)、若输入参数为矩阵,将对矩阵中每个元素求导。?syms a x?A=-sin(a*x),sin(a*x);cos(a*x)
19、,cos(a*x)A=-sin(a*x),sin(a*x)cos(a*x),cos(a*x)?dy=diff(A,x)dy=-cos(a*x)*a,cos(a*x)*a -sin(a*x)*a,-sin(a*x)*a重庆邮电大学重庆邮电大学-数学建模数学建模第34页3)、可用函数jacobian来计算Jacobi矩阵。?syms r l f?x=r*cos(l)*cos(f);?y=r*cos(l)*sin(f);?z=r*sin(l);?J=jacobian(x;y;z,r l f)J=cos(l)*cos(f),-r*sin(l)*cos(f),-r*cos(l)*sin(f)cos(l)
20、*sin(f),-r*sin(l)*sin(f),r*cos(l)*cos(f)sin(l),r*cos(l),0 重庆邮电大学重庆邮电大学-数学建模数学建模第35页2.积分:用函数int来求符号表示式积分。命令格式为:int(f,r,x0,x1)其中f为所要积分表示式,r为积分变量,若为定积分,则x0,x1为积分上下限。例:?sym x;?sym k real?f=exp(-(k*x)2)f=exp(-k2*x2)?int(f,x,-inf,inf)ans=signum(k)/k*pi(1/2)重庆邮电大学重庆邮电大学-数学建模数学建模第36页3.级数求和:函数用于对符号表示式求和。例:?s
21、yms k;?s1=symsum(1/k2,1,inf)s1=1/6*pi2重庆邮电大学重庆邮电大学-数学建模数学建模第37页4.极限:用函数limit来求表示式极限。函数limit惯用调用格式:n数学表示式命令格式nLimit(f),或limit(f,x)n Limit(f,x,a),或limit(f,a)n Limit(f,x,a,left)nLimit(f,x,a,right)重庆邮电大学重庆邮电大学-数学建模数学建模第38页5.化简:1)、collect(f)将表示式中相同次幂项合并,也能够再输入一个参数指定以哪个变量幂次合并。2)、expand(f)将表示式展开。3)、horner(
22、f)将表示式转换为嵌套格式。4)、factor(f)将表示式分解因式,而且分解后多项式全部系数都为有理数。5)、simplify(f)利用函数规则对表示式进行化简。重庆邮电大学重庆邮电大学-数学建模数学建模第39页重庆邮电大学重庆邮电大学-数学建模数学建模第40页第二节第二节MATLAB程序设计程序设计 重庆邮电大学重庆邮电大学-数学建模数学建模第41页1 脚本文件和函数文件脚本文件和函数文件11 M脚本文件脚本文件 对于一些比较简单问题对于一些比较简单问题,在指令窗中直接输入指令计算,在指令窗中直接输入指令计算。对于复杂计算,采取脚本文件(对于复杂计算,采取脚本文件(Script file)
23、最为适当)最为适当。MATLAB只是按文件所写指令执行只是按文件所写指令执行。M脚本文件特点是:脚本文件特点是:脚本文件组成比较简单,只是一串按用户意图排列而成(包脚本文件组成比较简单,只是一串按用户意图排列而成(包含控制流向指令在内)含控制流向指令在内)MATLAB指令集合。指令集合。脚本文件运行后脚本文件运行后,所产生全部变量都驻留在,所产生全部变量都驻留在 MATLAB基本基本工作空间工作空间(Base workspace)中。只要用户不使用去除指令)中。只要用户不使用去除指令(clear),),MATLAB指令窗不关闭,这些变量将一直保留指令窗不关闭,这些变量将一直保留在在基本工作空间
24、基本工作空间中。中。M文件有两种形式文件有两种形式:脚本文件(脚本文件(Script File)和函数文件和函数文件(Function File)。这两种文件扩展名,均为)。这两种文件扩展名,均为“.m”。重庆邮电大学重庆邮电大学-数学建模数学建模第42页1 脚本文件和函数文件(续脚本文件和函数文件(续1)12 M函数文件函数文件 与脚本文件不一样与脚本文件不一样,函数文件如同一个,函数文件如同一个“黑箱黑箱”,把一些数,把一些数据送进并经加工处理,再把结果送出来。据送进并经加工处理,再把结果送出来。MATLAB提供函数指令大部分都是由函数文件定义。提供函数指令大部分都是由函数文件定义。M函数
25、文件特点是:函数文件特点是:从形式上看从形式上看,与脚本文件不一样,与脚本文件不一样,函数文件笫一行总是以,函数文件笫一行总是以“function”引导引导“函数申明行函数申明行”。从运行上看从运行上看,与脚本文件运行不一样,与脚本文件运行不一样,每当函数文件运,每当函数文件运行,行,MATLAB就会专门为它开辟一个暂时工作空间,称为就会专门为它开辟一个暂时工作空间,称为函数工作空间函数工作空间(Function workspace)。当执行文件最终。当执行文件最终一条指令时一条指令时,就结束该函数文件运行,同时该暂时函数空,就结束该函数文件运行,同时该暂时函数空间及其全部中间变量就马上被去除
26、。间及其全部中间变量就马上被去除。MATLAB允许使用比允许使用比“标称数目标称数目”较少输入输出宗量,较少输入输出宗量,实现对函数调用实现对函数调用。重庆邮电大学重庆邮电大学-数学建模数学建模第43页1 脚本文件和函数文件(续脚本文件和函数文件(续2)13 M文件普通结构文件普通结构 因为从结构上看因为从结构上看,脚本文件只是比函数文件少一个,脚本文件只是比函数文件少一个“函数申函数申明行明行”,所以只须描述清楚函数文件结构,所以只须描述清楚函数文件结构。经典经典 M函数文件结构以下函数文件结构以下:函数申明行:位于函数文件首行,以关键字函数申明行:位于函数文件首行,以关键字 functio
27、 开头,开头,函数名以及函数输入输出宗量都在这一行被定义。函数名以及函数输入输出宗量都在这一行被定义。笫一注释行:紧随函数申明行之后以笫一注释行:紧随函数申明行之后以%开头笫一注释行。该开头笫一注释行。该行供行供lookfor关键词查询和关键词查询和 help在线帮助使用在线帮助使用。在线帮助文本区在线帮助文本区:笫一注释行及其之后连续以:笫一注释行及其之后连续以%开头全部注开头全部注释行组成整个在线帮助文本。释行组成整个在线帮助文本。编写和修改统计:与在线帮助文本区相隔一个编写和修改统计:与在线帮助文本区相隔一个“空空”行,也行,也以以%开头,标志编写及修改该开头,标志编写及修改该M文件作者
28、和日期等文件作者和日期等。函数体:为清楚起见,它与前面注释以函数体:为清楚起见,它与前面注释以“空空”行相隔。行相隔。重庆邮电大学重庆邮电大学-数学建模数学建模第44页2 函数调用和参数传递函数调用和参数传递21 局部变量和全局变量局部变量和全局变量 局部(局部(Local)变量:它存在于函数空间内部中间变量,产)变量:它存在于函数空间内部中间变量,产生于该函数运行过程中,其影响范围也仅限于该函数本身生于该函数运行过程中,其影响范围也仅限于该函数本身。全局(全局(Global)变量:经过)变量:经过 global 指令,指令,MATLAB也允许几也允许几个不一样函数空间以及基本工作空间共享同一
29、个变量,这种被个不一样函数空间以及基本工作空间共享同一个变量,这种被共享变量称为全局变量。共享变量称为全局变量。22 函数调用函数调用 在在MATLAB中,调用函数惯用形式是:中,调用函数惯用形式是:输出参数输出参数1,输出参数输出参数2,=函数名函数名(输入参数输入参数1,输入参数输入参数2,)函数调用能够嵌套,一个函数能够调用别函数,甚至调用函数调用能够嵌套,一个函数能够调用别函数,甚至调用它自己它自己(递归调用)。(递归调用)。重庆邮电大学重庆邮电大学-数学建模数学建模第45页2 函数调用和参数传递(续)函数调用和参数传递(续)23 参数传递参数传递 MATLAB在函数调用上有一个与众不
30、一样之处在函数调用上有一个与众不一样之处:函数所传递:函数所传递参数含有可调性参数含有可调性。传递参数数目可调性来源于如下两个MATLAB永久变量:函数体内函数体内 nargin 给出调用该函数时输入参数数目。给出调用该函数时输入参数数目。函数体内函数体内 nargout 给出调用该函数时输出参数数目。给出调用该函数时输出参数数目。只要在函数文件中包含这两个变量,就能够知道该函数文件只要在函数文件中包含这两个变量,就能够知道该函数文件调用时输入参数和输出参数数目。调用时输入参数和输出参数数目。值得注意:值得注意:nargin、nargout 本身都是函数,不是变量,所本身都是函数,不是变量,所
31、以用户不能赋值,也不能显示。以用户不能赋值,也不能显示。“变长度变长度”输入输出宗量:输入输出宗量:varargin、varrgout。含有接收。含有接收“任意多输入任意多输入”、返回、返回“任意多输出任意多输出”能力能力。跨空间变量传递:跨空间变量传递:evalin。(参考(参考:circle.m,am1.m)重庆邮电大学重庆邮电大学-数学建模数学建模第46页23 MATLAB程序结构和控制流程序结构和控制流231 程序结构程序结构 循环结构:循环结构:MATLAB提供两种循环方式。提供两种循环方式。次序结构次序结构 分支结构:分支结构:ifelseend。forend 循环和循环和whil
32、e-end循环。循环。232 程序流控制程序流控制 惯用指令:惯用指令:return,echo,input,pause,keyboard,break。switch-case 结构。结构。try-catch 结构。结构。警示指令:警示指令:error,warning。重庆邮电大学重庆邮电大学-数学建模数学建模第47页23 MATLAB程序结构和控制流(续)程序结构和控制流(续)233 图形用户界面(图形用户界面(GUI)编程)编程 当代主流应用程序已经从命令行交互方式转变为以图形界当代主流应用程序已经从命令行交互方式转变为以图形界面为主交互方式,这主要是因为它给用户带来了操作和控制面为主交互方式
33、,这主要是因为它给用户带来了操作和控制方便与灵活性。方便与灵活性。(面向对象编程)(面向对象编程)MATLAB能够以比较简单方式实现一系列图形界面功效。能够以比较简单方式实现一系列图形界面功效。经过对控件、菜单属性设置和经过对控件、菜单属性设置和 Callback 编写,就能够满足大编写,就能够满足大多数用户需求。多数用户需求。控件 Callback 属性:Callback 属性取值是字符串,能够是某个M文件名或一小段MATLAB语句。当用户激活控件对象(比如:在控件对象图标上单击鼠标左键)时,应用程序就运行 Callback 属性定义子程序。菜单菜单 Callback 属性属性:Callba
34、ck 属性取值是字符串,能够是属性取值是字符串,能够是某个某个M文件名或一小段文件名或一小段MATLAB语句。当用户激活菜单对象语句。当用户激活菜单对象时,若没有子菜单就运行时,若没有子菜单就运行 Callback 属性定义子程序。若有,属性定义子程序。若有,先运行先运行 Callback 属性定义子程序,再显示子菜单。属性定义子程序,再显示子菜单。重庆邮电大学重庆邮电大学-数学建模数学建模第48页24 M文件调试文件调试 编写编写 M文件时,错误(文件时,错误(Bug)在所难免。错误有两种:语法)在所难免。错误有两种:语法(Syntax)错误和运行()错误和运行(Run-time)错误。)错
35、误。语法错误是指变量名、函数名误写,标点符号缺、漏等。对语法错误是指变量名、函数名误写,标点符号缺、漏等。对于这类错误,通常能在运行时发觉,终止执行,并给出对应错于这类错误,通常能在运行时发觉,终止执行,并给出对应错误原因以及所在行号。误原因以及所在行号。运行错误是算法本身引发,发生在运行过程中。相对语法错运行错误是算法本身引发,发生在运行过程中。相对语法错误而言,运行错误较难处理误而言,运行错误较难处理。尤其是。尤其是M函数文件,它一旦运行函数文件,它一旦运行停顿,其中间变量被删除一空,错误极难查找。停顿,其中间变量被删除一空,错误极难查找。有两种调试方法:直接调试法和工具调试法。有两种调试
36、方法:直接调试法和工具调试法。重庆邮电大学重庆邮电大学-数学建模数学建模第49页24 M文件调试(续文件调试(续1)直接调试法:能够用下面方法发觉一些运行错误。直接调试法:能够用下面方法发觉一些运行错误。在在M文件中,将一些语句后面分号去掉,文件中,将一些语句后面分号去掉,迫使迫使M文件输出文件输出一些中间计算结果,方便发觉可能错误。一些中间计算结果,方便发觉可能错误。在适当位置,添加显示一些关键变量值语句(包含使用在适当位置,添加显示一些关键变量值语句(包含使用 disp 在内)。在内)。利用利用 echo 指令,使运行时在屏幕上逐行显示文件内容。指令,使运行时在屏幕上逐行显示文件内容。ec
37、ho on 能显示能显示M脚本文件;脚本文件;echo FunNsme on 能显示名为能显示名为FunNsme M函数文件。函数文件。在原在原M脚本或函数文件适当位置,增添指令脚本或函数文件适当位置,增添指令 keyboard。keyboard 语句能够设置程序断点语句能够设置程序断点。经过将原经过将原M函数文件函数申明行注释掉,可使一个中间变函数文件函数申明行注释掉,可使一个中间变量难于观察量难于观察M函数文件变为一个全部变量都保留在基本工函数文件变为一个全部变量都保留在基本工作空间中作空间中M脚本文件。脚本文件。重庆邮电大学重庆邮电大学-数学建模数学建模第50页第三节第三节 优化问题解法
38、优化问题解法重庆邮电大学重庆邮电大学-数学建模数学建模第51页一、无约束优化问题重庆邮电大学重庆邮电大学-数学建模数学建模第52页二、线性规划问题重庆邮电大学重庆邮电大学-数学建模数学建模第53页第54页三、非线性规划问题重庆邮电大学重庆邮电大学-数学建模数学建模第55页重庆邮电大学重庆邮电大学-数学建模数学建模第56页重庆邮电大学重庆邮电大学-数学建模数学建模第57页重庆邮电大学重庆邮电大学-数学建模数学建模第58页第四节第四节图形处理图形处理重庆邮电大学重庆邮电大学-数学建模数学建模第59页 基基 本本 绘绘 图图 函函 数数1plot,plot3建立向量或矩阵图形2Loglogx、y轴都
39、取对数标度建立图形3Semilogxx轴用于对数标度,y轴线性标度绘制图形4Semilogyy轴用于对数标度,x轴线性标度绘制图形5Title给图形加标题6Xlabel,Ylabel给x,y轴加标识7Text在图形指定位置上加文本字符串8gtext在鼠标位置上加文本字符串9grid打开网格线重庆邮电大学重庆邮电大学-数学建模数学建模第60页 绘绘 图图 入入 门门1plot基本调用格式2对於改变猛烈函数,可用fplot来进行较准确绘图3对符号函数作图可用ezplot重庆邮电大学重庆邮电大学-数学建模数学建模第61页特殊二(三)维绘图函数1bar(x,y)(barh(x,y),bar3,bar3
40、h)直方(水平)图2comet(x,y)(comet3)建立彗星流动图3errorbar(x,y,l,u)图形加上误差范围4polar(theta,rho)极坐标图5hist(y,x)向量统计直方图,其中y为要统计。当x为标6量时,x指定了统计区间数;当x为向量时,以该向量中7各元素为中心进行统计,区间数等于x向量长度。6rose(theta)极坐标频数累计柱状图重庆邮电大学重庆邮电大学-数学建模数学建模第62页9fill实心图7stairs(x,y)阶梯图8stem(x,y,fill)针状图11compass罗盘图10feather羽毛图12quiver,quiver3向量场图,通常与con
41、tour(),gradient()13配合使用.13pie,pie3饼图重庆邮电大学重庆邮电大学-数学建模数学建模第63页绘绘 制制 三三 维维 曲曲 面面mesh(z)语句给出矩阵语句给出矩阵Z元素三消隐图,元素三消隐图,surf和和mesh使用使用方法相同。为了方便测试立体绘图,方法相同。为了方便测试立体绘图,MATLAB提供了一个提供了一个peaks函数,可产生一个凹凸有致曲面,包函数,可产生一个凹凸有致曲面,包 含了三个局部极含了三个局部极大点及三个局部极小点,大点及三个局部极小点,要画出此函数最快方法即是直接键要画出此函数最快方法即是直接键入入peaks.三维三维函数还有meshc(
42、),meshz(),surfc(),surfl(),contourf(),waterfall()等.重庆邮电大学重庆邮电大学-数学建模数学建模第64页第五节第五节 解方程解方程重庆邮电大学重庆邮电大学-数学建模数学建模第65页一 般 代 数 方 程 函数solve用于求解普通代数方程根,假定S为符号表示式,命令solve(S)求解表示式等于0根,也能够再输入一个参数指定未知数。例:syms a b c x S=a*x2+b*x+c;solve(S)ans=1/2/a*(-b+(b2-4*a*c)(1/2)1/2/a*(-b-(b2-4*a*c)(1/2)b=solve(S,b)b=-(a*x2
43、+c)/x重庆邮电大学重庆邮电大学-数学建模数学建模第66页线 性 方 程 组 线性方程组求解问题能够表述为:给定两个矩阵A和B,求解满足方程AX=B或XA=B矩阵X。方程AX=B解用X=AB或X=inv(A)*B表示;方程XA=B解用X=B/A或X=B*inv(A)表示。不过斜杠和反斜杠运算符计算更准确,占用内存更小,算得更加快。第67页线 性 微 分 方 程 函数dsolve用于线性常微分方程(组)符号求解。在方程中用大写字母D表示一次微分,D2,D3分别表示二阶、三阶微分,符号D2y相当于y关于t二阶导数。函数dsolve 输出方式 格式 说明y=dsolve(Dyt=y0*y)一个方程
44、,一个输出参数u,v=dsolve(Du=v,Dv=u)两个方程,两个输出 参数S=dsolve(Df=g,Dg=h,Dh=-2*f)方程组解以S.f S.g S.h 结构数组形式输出第68页结果:u=tg(t-c)解解输入命令:y=dsolve(D2y+4*Dy+29*y=0,y(0)=0,Dy(0)=15,x)结果为:y=3e-2xsin(5x)第69页解解输入命令:x,y,z=dsolve(Dx=2*x-3*y+3*z,Dy=4*x-5*y+3*z,Dz=4*x-4*y+2*z,t);x=simple(x)%将x化简y=simple(y)z=simple(z)结果为:x=(c1-c2+c
45、3+c2e-3t-c3e-3t)e2ty=-c1e-4t+c2e-4t+c2e-3t-c3e-3t+(c1-c2+c3)e2tz=(-c1e-4t+c2e-4t+c1-c2+c3)e2t第70页 非 线 性 微 分 方 程 t,x=solver(f,ts,x0,options)ode45ode23ode113ode15sode23s由待解方程写成m-文件名ts=t0,tf,t0、tf为自变量初值和终值函数初值ode23:组合2/3阶龙格-库塔-芬尔格算法ode45:利用组合4/5阶龙格-库塔-芬尔格算法自变量值函数值用于设定误差限(缺省时设定相对误差10-3,绝对误差10-6),命令为:opt
46、ions=odeset(reltol,rt,abstol,at),rt,at:分别为设定相对误差和绝对误差.第71页1、在解n个未知函数方程组时,x0和x均为n维向量,m-文件中待解方程组应以x分量形式写成.2、使用Matlab软件求数值解时,高阶微分方程必须等价地变换成一阶微分方程组.注意注意:第72页解解:令 y1=x,y2=y11、建立m-文件vdp1000.m以下:function dy=vdp1000(t,y)dy=zeros(2,1);dy(1)=y(2);dy(2)=1000*(1-y(1)2)*y(2)-y(1);2、取t0=0,tf=3000,输入命令:T,Y=ode15s(
47、vdp1000,03000,20);plot(T,Y(:,1),-)3、结果如图第73页解解 1、建立m-文件rigid.m以下:function dy=rigid(t,y)dy=zeros(3,1);dy(1)=y(2)*y(3);dy(2)=-y(1)*y(3);dy(3)=-0.51*y(1)*y(2);2、取t0=0,tf=12,输入命令:T,Y=ode45(rigid,0 12,0 1 1);plot(T,Y(:,1),-,T,Y(:,2),*,T,Y(:,3),+)3、结果如图图中,y1图形为实线,y2图形为“*”线,y3图形为“+”线.第74页第75页第六节第六节回归分析回归分析
48、第76页一:一元线性与非线性回归分析引例:钢材消费量与国民收入关系一元回归模型与回归分析MATLAB软件实现介绍一元非线性回归模型 试验第77页为了研究钢材消费量与国民收入之间关系,在统计年鉴上查得一组历史数据。引例:钢材消费量与国民收入关系 年份196419651966197819791980消费(吨)698872988144627362825收入(亿)109712841502294831553372试分析预测若1981年到1985年我国国民收入以4.5%速度递增,钢材消费量将到达什么样水平?第78页钢材消费量-试验指标(因变量)Y;国民收入-自变量x;建立数据拟合函数y=E(Y|x)=f(
49、x);作拟合曲线图形分析。问题分析:第79页钢材消费量y与国民收入x散点图y=a+bx第80页回归分析是研究变量间相关关系一个统计分析。特点:试验指标(因变量)是随机变量。图形解释:y=E(Y|x)=f(x)假设:f(x)=ax+bxx0E(Y|x0)y0 x1E(Y|x1)第81页假设:(y=E(Y|x)=f(x))1)Y是一个正态随机变量,即Y服从正态分布,而且有方差D(Y)=2。2)依据观察值作散点图,观察出函数f(x)是线性形式还是非线性形式。第82页回归模型及回归分析1、一元线性回归模型、一元线性回归模型或需要处理问题:1)在回归模型中怎样预计参数a、b和2?知识介绍 2)模型假设是否正确?需要检验。3)利用回归方程对试验指标y进行预测或控制?第83页参数预计设观察值为(xi,yi)(i=1,2,n),代入模型中,yi=a+bxi+i