资源描述
,单击此处编辑母版样式,单击此处编辑幻灯片母版样式,第二层,第三层,第四层,第五层,*,数值计算的工具,MATLAB,电子计算机技术为应用数学解决实际问题创造了物质条件。,“,今天,在技术科学中最有用的数学研究领域是数值分析和数学建模。,”,“,一切科学与工程技术人员的教育必须包括越来越多的数学和计算科学的内容。数学建模和相伴的计算正成为工程设计中的关键工具。科学家正日益依赖于计算方法以及在解释结果的精度和可靠性方面有充分的经验。,”,1,吴文俊:,“任何数学都要讲究逻辑推理,但这只是问题的一个方面,更重要的是用数学去解决问题,解决日常生活中,其他科学中出现的数学问题。学校给出的数学题目都是有答案的,已知什么,求证什么,都是很清楚的,题目也是一定做得出的。但是来到了社会上,所面对的问题大多是预先不知道答案的,甚至不知道是否会有答案。这就要求学生培养创造能力,学会处理各种实际数学问题的方法。”,数学软件既是数值计算的工具,也是数值实验的工具。,2,MATLAB,“,矩阵实验室,”,MATLAB,基本操作,MATLAB,数值计算,MATLAB,符号计算,MATLAB,图形处理,MATLAB,程序设计,MATLAB,实际应用,3,1 MATLAB,基本操作,一、,MATLAB,的开发环境,1,、,MATLAB,系统 的组成,MATLAB,开发环境,MATLAB,数学函数库,MATLAB,语言,图形功能,应用程序接口,五个部分。,4,2,、,MATLAB6.x,的开发环境,MATLAB6.x,的开发环境包括命令窗口、启动平台窗口、工作空间窗口、命令历史窗口、当前路径窗口、,M,文件编辑器、在线帮助浏览器等。,启动,MATLAB,后,将显示包括命令窗口、启动平台窗口、工作空间窗口、命令历史窗口和当前路径窗口等五个窗口和主菜单组成的操作桌面(主窗口)。,操作桌面在缺省状态下显示,3,个窗口,启动平台和工作空间窗口在同一个位置显示,命令历史窗口和当前目录窗口在同一位置显示。,MATLAB,设定了几种特定的窗口布局方式,可以在视图,(View),菜单中选择窗口布局,(Desktop Layout),设定,其中缺省方式为,Default,。,5,(,1,)命令窗口,(Command Window),MATLAB,是交互式的语言,输入命令即给出运算结果。而命令窗口则是,MATLAB,的主要交互窗口,用于输入和编辑命令行等信息,显示结果(图形除外)。,当命令窗口中出现提示符“,”,时,表示,MATLAB,已经准备好,可以输入命令、变量或运行函数。提示符总是位于行首。,在每个指令行输入后要按回车键,才能使指令被,MATLAB,执行。,6,(2),启动平台(,Launch Pad,),启动平台用于启动和管理系统中安装的,MATLAB,系统。可以通过双击来启动相应的选项。,启动平台是一个展示,MATLAB,功能和产品工具箱的平台,可以通过,Demos,了解,MATLAB,。,7,(,3,),工作空间,(Workspace),工作空间用于保存,MATLAB,变量的信息。,在工作空间可以对变量进行观察、编辑、保存和删除。,保存在工作空间中的自定义变量,直到使用了“,clear”,命令清除工作空间或关闭了,MATLAB,系统才被清除。,在命令窗口中键入“,whos”,命令,可以显示出保存在工作空间中的所有变量的名称、大小、数据类型等信息,如果键入“,who”,命令,则只显示变量的名称。,8,(,4,),命令历史窗口,(Command History),命令历史窗口记录用户每一次启动,MATLAB,的时间以及在命令窗口运行过的所有指令。,命令历史窗口中的指令可以被复制到命令窗口重新运行。,如果要清除掉这些记录,可以选择“,Edit”,菜单中的“,Clear Command History”,项。,9,(,5,)当前路径窗口,(Current Directory),当前路径窗口也称为当前目录窗口。可以显示或改变当前目录。,当前目录指的是,MATLAB,运行文件时的工作目录。只有在当前目录或搜索路径下的文件及函数可以被运用或调用,如果没有特殊指明,数据文件也将储存在当前目录下。,如果要建立自己的工作目录,在运行文件前必须将该文件所在目录设置为当前目录。,10,二、,MATLAB,的启动与退出,1,、,MATLAB,系统的启动,(,1,)在桌面上双击,MATLAB,快捷方式图标。,(,2,)在开始菜单中单击,MATLABMATLAB6.5,项。,(,3,)在,MATLAB,安装目录,MATLAB6p5,中双击,MATLAB,快捷方式。,(,4,)在,MATLAB,安装目录,MATLAB6p5binwin32,中双击,MATLAB.exe,图标。,2,、,MATLAB,系统的退出,(,1,)点击操作桌面的关闭按钮。,(,2,)执行操作桌面,fileExit MATLAB,命令。,(,3,)在命令窗口中输入命令,exit,或,quit,,并回车。,(,4,)用快捷键,Ctrl+Q,。,11,三、,MATLAB,的帮助系统,1,、帮助命令,帮助命令是查询函数语法的最基本的方法,查询信息直接显示在命令窗口。帮助命令有,help,、,lookfor,。,help%,在命令窗口直接输入,help,,显示主要的在线帮助主题。,help,函数名,%,显示关于某个具体函数的功能、调用格式、及相关函数,。,help,帮助主题,%,列出指定主题下的函数。例如,help elfun%,列出所有基本函数。,12,MATLAB,的帮助系统(续),lookfor image%,查找有关图像的函数和命令。,2,、在线帮助浏览器,MATLAB6.x,设计了全新的在线帮助浏览器,当在,View,菜单中选择了,Help,选项,或在,Help,菜单中选择了,MATLAB Help,选项时,都可以打开帮助浏览器。,3,、演示帮助,选择,Help,菜单中的,Demos,选项,可以打开演示窗口,观看要查询项的动画演示。,13,四、,MATLAB,的运行方式,1,、命令行运行方式,演算纸式的科学计算语言,在,MATLAB,的应用中,最基本、最简单的应用,就是在命令窗口中直接输入命令来实现计算或绘图功能。,MATLAB,命令行的一般形式为:,变量表达式,或:,表达式,(赋值语句),14,命令行运行方式(续),使用,MATLAB,最简单的方式是将,MATLAB,的命令窗口看作计算器,通过输入数学算式直接计算。,1,2,3,4,5,ans=,15,如果在输入的表达式后面跟上分号,“,;,”,,那么运行后就不会马上显示运算的结果,必须键入输出变量后才能显示运算结果。用分号关闭不必要的输出会使程序运行速度成倍甚至成百倍地提高。,1,2,3,4,5,;,则不会马上显示运算结果,要得到运算结果,必须,ans,则显示结果为,ans=,15,15,命令行运行方式(续),如果在表达式后面跟上逗号“,”或什么都不跟,运行后会马上显示该表达式的运算结果。,如果一个表达式很长,可以用续行号“,”,将其延续到下一行。,1+2+3+4+5+%,注意加号写在本行。,6+7+8+9+10,则输出结果,ans=,55,如果续行号前面是数字,直接使用续行号会出现错误,有三种解决办法,一是设法使续行号前面是一个运算符号,二是先空一格再加续行号,三是再加一个点。,16,在一行中也可以写几个语句,它们之间用逗号“,”或分号“;”隔开。,A=1,2,3.3,sin(4),X=1966/310+1,则输出结果,A,1.0000 2.0000 3.3000,-0.7568,X=,7.3419,。,命令行运行方式(续),17,2,、,m,文件运行方式,所谓,m,文件,就是用,MATLAB,语言编写的、可以在,MATLAB,中运行的程序。,它是以普通文本格式存放的,故可以用任何文本编辑软件进行编辑。,MATLAB,提供的,m,文件编辑器就是程序编辑器。,在,File,菜单中选择,NEW,,再选择,M-file,,或点击新建图标,就可以调出,m,文件编辑器,用户可以用此编辑器编写,m,文件。,m,文件有两种形式,一种称为命令文件(,Script File,),另一种称为函数文件(,Function File,),两种文件的扩展名都是,m,。,18,(,1,)命令文件,如果要输入较多的命令,或者要经常对某些命令进行重复的输入,则可以将这些命令按执行顺序存放在一个,m,文件中,以后只要在,MATLAB,的命令窗口中输入该文件的文件名,系统就会调入该文件并执行其中的全部命令。这种形式就是,MATLAB,的命令文件。,命令文件中的语句可以访问,MATLAB,工作空间的所有变量;而在命令文件执行过程中创建的变量也会一直保留在工作空间中,其他命令或,m,文件都可以访问这些变量。,命令文件相当于,DOS,批处理文件。,19,命令文件(续),求满足,1+2+3+n100,的最大正整数,n,的,MATLAB,程序为:,sum=0;n=0;%,赋初始值,while sum=100,,故应,对,sum,减,n,n=n-1;%,当循环结束时有,sum=100,,故,应对,n,减,1,n,sum%,显示最大正整数,n,以及和,sum,20,命令文件(续),将上述程序存入文件,fl.m,,然后在命令窗口键入,fl,显示结果为,n=,13,sum=,91,指出:,程序中由符号“,%”,开始的文字都是注释文字,用来对程序或程序行行进行注释说明,符号“,%”,称为注释符,,MATLAB,在执行时将忽略“,%”,后的内容。,21,(,2,)函数文件,函数文件是另一类,m,文件,可以像库函数一样方便地被调用,,MATLAB,提供的许多工具箱,是由函数文件组成的。,对于某一类特殊问题,用户可以建立系统的函数文件,形成专用工具箱。,函数文件的第一行有特殊的要求,它必须遵循如下的形式:,function=(),其他各行都是程序运行语句,没有特别要求。,函数文件的文件名必须是,.m,。,22,函数文件(续),实现符号函数,运算功能的函数,m,文件为:,function y=sgn(x)%,这是一个定义符号函数,y=sgn(x),的函数文件。,if xx=4/3*pi;,y=3*sgn(sin(x),显示结果为,:,y=,-3,24,五、,MATLAB,的常用命令,MATLAB,可以通过菜单对工作着的窗口进行操作,也可以通过键盘在命令窗口输入命令进行操作,下面给出几个常用的通用命令。,quit,关闭,MATLAB,exit,关闭,MATLAB,clc,清除,MATLAB,命令窗口中的所有显示内容,clear,清除工作空间中保存的所有变量,其他命令可以在学习应用中逐步熟悉。,25,六、,MATLAB,的基本运算,运算,数学表达式,MATLAB,运算符,MATLAB,表达式,示例,加,a+b,+,a+b,1+2,减,a-b,-,a-b,5-3,乘,ab,*,a*b,2*3,除,a b,/(,右除,),或,(,左除,),a/b,或,ba,6/2,或,26,幂,ab,ab,23,指出:右除相当于通常的除法。,26,七、,MATLAB,的变量与函数,1,、变量,变量就是在程序的运行过程中,其数值可以变化的量(数据),它可以代表一个或若干个内存单元(变量的地址)中的数据。为了对所有的变量所对应的存储单元进行访问,需要给变量命名。,MATLAB,变量命名的规则,是:,以字母开头,后面可以跟字母、数字或下划线。,不超过,31,个字符。,字符间不可以留空格。,区分大小写。,27,MATLAB,的变量与函数(续),系统变量,变量名,意义,ans,用于存储计算结果的默认变量,pi,圆周率,inf(Inf),无穷大,例如,1/0,eps,计算机的最小数,和,1,相加产生比,1,大的数,在,pc,机上为,2,52,。,NaN(nan),不定量,如,0/0,i,或,j,虚数单位,,i=j=sqrt(-1),28,MATLAB,的变量与函数(续),指出:,自定义变量名一般不应和系统变量同名。,在,MATLAB,中输入的内容直接决定变量的类型。,使用,who,和,whos,命令可以查看变量。,使用,clear,命令可以删除所有定义过的变量。如果只是删除其中某些变量,应在,clear,后面指定要删除的变量名。例如,clear a z,有了变量,就可以组成表达式,也就可以对变量进行赋值。,MATLAB,的赋值语句有两种形式。,变量名表达式,表达式,在第一种情况下,,MATLAB,将右边的表达式的值赋值给左边的变量,在第二种情况,,MATLAB,将表达式的值赋值给系统变量,ans,。,所谓表达式,就是用运算符号把特殊字符、函数名、变量名等有关运算量连接起来的式子,其结果是一个矩阵,。,29,2,、函数,数学函数,函数名,含义,函数名,含义,abs(x),x,的绝对值,atant(x),x,的反正切,sqrt(x),x,的平方根,cot(x),x,的余切,exp(x),e,的,x,次方,acot(x),x,的反余切,sin(x),x,的正弦,log(x),x,的自然对数,cos(x),x,的余弦,log10(x),x,的常用对数,asin(x),x,的反正弦,sinh(x),双曲正弦,acos(x),x,的反余弦,cosh(x),双曲余弦,tan(x),x,的正切,30,函数(续),机器函数,pause,程序将暂时停在该函数所在位置,击任意键程序继续执行,echo on,在命令窗口显示正在执行的程序指令,cputime,给出,MATLAB,所耗用的总机器时间,clock,给出日期及当前时间,指出,在表达式中,函数一定要出现在等式的右边。,每个函数对其自变量的个数和格式都有一定要求,如三角函数的单位是“弧度”而不是“度”。,函数允许嵌套,如,sqrt(sin(10),。,系统函数的函数名小写。注意函数名也是区分大小写的。,31,2 MATLAB,的数值计算,MATLAB,运算的基本数据对象是矩阵,标量可以看作是,11,的矩阵,向量可以看作是,1n,或,n1,的矩阵。因此,可以说,MATLAB,的数据结构就是矩阵,以矩阵运算为代表的基本运算功能一直是,MATLAB,引以为自豪的核心与基础。,32,一、矩阵的创建,矩阵是线性代数的基本运算单元。,通常矩阵是指含有,m,行,n,列数值的矩形结构。矩阵中的元素可以是实数也可以是复数,由此可以将矩阵划分为实矩阵和复矩阵。,MATLAB,支持线性代数所定义的全部矩阵运算。,在,MATLAB,中,创建矩阵,应遵循以下,原则,:,矩阵的元素必须在方括号,“,”,中。,矩阵的同行元素之间用空格或逗号,“,,,”,分隔。,矩阵的行与行之间用分号,“,;,”,或回车符分隔。,矩阵的尺寸不必预先定义。,矩阵元素可以是数值、变量、表达式或函数。如果矩阵元素是表达式,系统将自动计算出结果。,33,矩阵的创建(续),1,、直接输入法,在命令窗口按规则输入方式创建矩阵,例,1.,在命令窗口创建简单的数值矩阵。,A=1 3 2;3 1 0;2 1 5,回车后在命令窗口显示如下结果,A=,1 3 2,3 1 0,2 1 5,例,2.,在命令窗口创建带运算表达式的矩阵,不显示结果。,y=sin(pi/3),cos(pi/6);log(20),exp(2);,输入“,y”,回车,在命令窗口显示出来。,y,显示出的结果为,y=,0.8660 0.8660,2.9957 7.3891,34,矩阵的创建(续),指出:,在矩阵较大时,用分行输入的方式(用回车代替分号区分不同行)比较接近于线性代数中的矩阵,更直观一些。,任何矩阵元素内部不能有空格,否则会被认定是两个元素。,35,矩阵的创建(续),2,、通过数据文件创建矩阵,导入其他程序创建的数据,例,3.,用记事本输入一组数据,1 2 3 4,2 3 4 5,4 3 4 5,5 7 6 1,保存为,fort.txt,,用,load,命令读入,,load fort.txt,输入,fort,就可以在命令窗口显示创建的矩阵。,fort,显示结果为,fort=,1 2 3 4,2 3 4 5,4 3 4 5,5 7 6 1,36,矩阵的创建(续),指出:,通过,load,命令导入数据是形成矩阵的重要方法,解决了在工作现场没有,MATLAB,系统和其他数据管理系统的问题,可以只用基本的文字处理工具完成。,MATLAB,对文本形式的数据文件的扩展名并不计较,将上述数据文件换名保存为,fort.1,,仍然可以如上导入、应用。,文件名可以定义为,m1.txt,或,m1.1,。,但是,如果将文件命名为,1m.txt,,则显示出错信息:,“,Error:Missing operator,(算子),comma,(逗号),or semicolon,(分号),.,”,如果文件名命名为,3.txt,、,1.txt,、,3.1,等,则显示的是主文件名所用的数字。,数据文件保存为,word,或,wps,等的文件格式同样可以引用。,37,矩阵的创建(续),如果数据文件中有字母,则不能引用,显示出错信息,即使该字母在前面的指令中已经赋值也不可。,如果数据文件中有算式,则不能完整显示,算式元素将仅显示第一个运算符(或关系符)前的数字。,导入其他数据,如图像数据、,Excel,数据时,可以使用数据导入向导,Import Wizard,。,38,矩阵的创建(续),3,、通过,m,文件创建矩阵,将矩阵建立为,m,文件,先将矩阵按创建原则写入一个,m,文件中,在,MATLAB,命令窗口或程序中直接运行该,m,文件(输入该,m,文件名),即可将矩阵调入工作空间。,4,、通过函数创建矩阵,函数,功能,eye(n),产生,n,阶单位矩阵,ones(m,n),产生,m,n,矩阵,元素都是,“,1,”,zeros(m,n),产生,m,n,矩阵,元素都是,“,0,”,(,零矩阵,),产生空矩阵,39,矩阵的创建(续),指出:,当某一项操作无结果时,,MATLAB,将返回一个空矩阵,空矩阵的大小为,0,,但它确实存在于工作空间,可以通过变量名访问。,输入后的矩阵将保存在,MATLAB,工作空间中,并可以随时被访问调用,如果用户不用,“,clear,”,命令清除它,或给它重新赋值,该矩阵将一直保存在工作空间直到,MATLAB,关闭为止。,如果矩阵函数中只有一个参数,则为方阵。,四种创建矩阵的方法各有优点:直接输入法方便简捷;通过数据文件创建有利于调用其他软件产生的数据;通过,m,文件创建是用于创建较大尺寸的矩阵并便于修改;通过函数创建可以由,MATLAB,内部函数创建一些特殊矩阵。,40,矩阵的创建(续),5,、其他构造矩阵的方法,冒号法,1,冒号法构造向量,冒号表达式的一般格式为:,向量名初值:步长:终值。,例,4.,在窗口输入,x=0:0.5:2,回车后显示,x=,0 0.5000 1.0000 1.5000 2.0000,。,例,5.,在命令窗口输入,x=2:-0.5:0,回车后显示,x=,2.0000 1.5000 1.0000 0.5000 0,41,矩阵的创建(续),指出:,步长可以省略,省略步长,则步长为,1,。,步长可以为负,此时初值大于终值。,向量的元素比较多而又有增减规律时,这种方法非常便利。,冒号法表示向量时,向量的全体成员是从初值开始,以步长为增量,直到不超过终值的所有元素构成的序列。,冒号法的应用可以避免使用循环,提高程序运行速度。,42,矩阵的创建(续),2,冒号法构造矩阵,一般格式为:,A(:,j):,表示矩阵,A,的第,j,列;,A(i,:):,表示矩阵,A,的第,i,行。,例,6.,建立矩阵,。,解:,A(1,:)=1:5%,设置矩阵的第,1,行,A=,1 2 3 4 5,43,矩阵的创建(续),A(2,:)=6:10%,设置矩阵的第,2,行,A=,1 2 3 4 5,6 7 8 9 10,A(3,:)=11:15%,设置矩阵的第,3,行,设置完成,A=,1 2 3 4 5,6 7 8 9 10,11 12 13 14 15,44,矩阵的创建(续),指出:,在,MATLAB,中,还可以利用函数,linspace,产生行向量,其调用格式为:,linspace(a,b,n),。,其中,a,b,是向量的第一个和最后一个元素,,n,是元素的个数。这样产生的向量的元素成等差数列。,例如,,linspace(1,4,5),ans=,1.0000 1.7500 2.5000 3.2500 4.0000,函数,linspace,被称为线性等分函数。,45,矩阵的创建(续),指出:,冒号法和应用,linspace,都可以创建具有递增元素序列的向量,但是,用冒号法创建向量时,向量的元素不一定取到终值,而应用,linspace,则必然会取到,因为,b,表示的就是最后一个元素。,46,二、矩阵的运算,MATLAB,对于矩阵与矩阵之间的运算的处理方法与线性代数中的相同,运算,运算符,表达式,加,+,A+B,减,-,A-B,乘,*,A*B,除,/(,右除,),或,(,左除,),A/B,或,BA,幂,Ap,转置,(,单引号,),A,47,矩阵的计算(续),说明:,矩阵也可以和一个数之间进行运算。,线性代数没有定义除法运算,,MATLAB,为了便于计算,定义了矩阵的除法,并有左除和右除之分。,矩阵左除使用,“,”,运算符,右除使用,“,/,”,运算符。,X,AB,是解方程组,A*X,B,;,X,B/A,则是解方程组,X*A,B,。,一般地说,,ABB/A,。,在算法上,,AB,inv(A)*B,,,inv,是求某一个矩阵的逆矩阵;而,B/A,B*inv(A),。,指出:如果,A*B=B*A=I,(单位矩阵),称,A,和,B,互为逆矩阵。,如果矩阵中有复数元素,那么转置后得到它的复数共轭矩阵。,48,矩阵的运算(续),例,7.,若创建矩阵,A=1,0,2;0,1,3;1,0,4,B=1,2,3;4,5,6;7,8,9,C=1,2;3,4;5,6,并计算,A+B,、,A+3,、,A*C,、,A,2,、,C,T,、,A,-1,、,A,1,B,。,指出:,A,2,A2,;,C,T,C;,A,-1,=inv(A);,A,1,B=AB,(或,inv(A)*B,),在,MATLAB,系统中,还有一个数据结构是“数组”。数组在结构上和矩阵是完全一致的,唯一的区别是数组的运算不服从线性代数的规定,而是元素对元素间的运算。数组的加减运算与矩阵加减相同,数组的乘法、左除、右除、幂的运算符号分别是矩阵相应运算符前面加一个小圆点“,.”,。,矩阵运算的一个重要的应用是解线性方程组。,49,矩阵的运算(续),例,8.,求下面方程组的根。,解:解线性方程组,可以使用矩阵的左除“,”,,即,X,AB,。,A=2,1,-3;3,-2,2;5,-3,-1;,B=5;5;16;%,列向量,X=AB,X=,1,-3,-2,50,矩阵的运算(续),指出:,线性方程组,A*X,B,有两种解法:,X=AB,或,X=inv(A)*B,,但一般用第一种解法,在,MATLAB,中,第二种解法所用时间是第一种解法的,50,倍。,可以看出,同样解线性方程组,不同的算法的效率是有极大差距的,可见优化和选择算法是非常重要的。,求逆运算,inv(A),是重要的代数运算。,51,三、矩阵的操作,1,、矩阵的大小测度,Size,函数用来测试矩阵的大小,对于 矩阵,A,,,size(A),返回一个行向量,它包含了矩阵的行数,m,和列数,n,。如果专门显示行数和列数,则可以采用如下格式:,。,例,9.,已知矩阵,,,求矩阵的大小。,52,矩阵的操作(续),解:,A=1 1 1 1 1;1 2 3 4 5;1 3 6 10 15,设,A,为已知矩阵,A=,1 1 1 1 1,1 2 3 4 5,1 3 6 10 15,d=size(A),测试矩阵,A,的大小,d=,3 5,d1=size(A,1),测试矩阵的行数,d1=,3,d2=size(A,2),测试矩阵的列数,d2=,5,53,矩阵的操作(续),2,、矩阵的元素操作,例,10.,已知矩阵,,,写出矩阵的元素,A(2,3),将,A(3,5),改为,1,。,解:,A=1 1 1 1 1;1 2 3 4 5;1 3 6 10 15,A=,1 1 1 1 1,1 2 3 4 5,1 3 6 10 15,54,矩阵的操作(续),A(2,3),ans=,3,A(3,5)=-1,A=,1 1 1 1 1,1 2 3 4 5,1 3 6 10 -1,55,矩阵的操作(续),例,11.A=1 3 2;3 1 0;2 1 5,A=,1 3 2,3 1 0,2 1 5,B=4 3 6;5 1 4;3 4 6,B=,4 3 6,5 1 4,3 4 6,U(1,1)=A(1,1)+B(1,1);,U(1,2)=A(1,2)+B(1,2);,U(2,1)=A(2,1)-B(2,1);,U(2,2)=A(2,2)-B(2,2);,U,U=,5 6,-2 0,56,矩阵的操作(续),3,、矩阵块的操作,利用冒号表达式对矩阵进行拆分、提取子矩阵是矩阵操作的重要方面。提取的规则是,A(:,j),表示取矩阵,A,的第,j,列的全部元素;,A(i,:),表示取矩阵,A,的第,i,行的全部元素;,A(i,j),表示取矩阵,A,的第,i,行第,j,列交叉位置的元素;,A(i:i+m,:),表示取矩阵,A,的第,i,i+m,行的全部元素;,A(:,k:k+n),表示取矩阵,A,的第,k,k+n,列的全部元素;,A(i:i+m,k:k+n),表示取矩阵,A,的第,i,i+m,行内并在第,k,k+n,列中的全部元素。,57,矩阵的操作(续),例,12.,拆分矩阵的例子。,A=1 1 1 1 1;1 2 3 4 5;1 3 6 10 15,A=,1 1 1 1 1,1 2 3 4 5,1 3 6 10 15,A(2,3),ans=,3,A(3,5)=-1,A=,1 1 1 1 1,1 2 3 4 5,1 3 6 10 -1,58,矩阵的操作(续),A=1,2,3,4,5;6,7,8,9,10;11,12,13,14,15;16,17,18,19,20,A=,1 2 3 4 5,6 7 8 9 10,11 12 13 14 15,16 17 18 19 20,A(1,:),ans=,1 2 3 4 5,59,矩阵的操作(续),A(:,2:4),ans=,2 3 4,7 8 9,12 13 14,17 18 19,A(2:3,4:5),ans=,9 10,14 15,A(2:3,1:2:5),ans=,6 8 10,11 13 15,60,矩阵的操作(续),例,13.,组合矩阵的例子。,A=1,2;3,4,A=,1 2,3 4,B=2,3;4,5,B=,2 3,4 5,A,B,ans=,1 2 2 3,3 4 4 5,61,矩阵的操作(续),A;B,ans=,1 2,3 4,2 3,4 5,A;6,7,ans=,1 2,3 4,6 7,62,矩阵的操作(续),冒号表达式是,MATLAB,中非常重要的、应用非常广泛、也非常灵活的工具。,利用冒号表达式比利用循环语句赋值解决同一问题要快得多,所以实际编程时一般应当尽量采用冒号表达式而不是用循环。,63,矩阵的操作(续),例,14.,A=1 2 3 4 5,6 7 8 9 10,11 12 13 14 15,16 17 18 19 20,A=,1 2 3 4 5,6 7 8 9 10,11 12 13 14 15,16 17 18 19 20,A(end,:)%,取,A,的最后一行,ans=,16 17 18 19 20,64,矩阵的操作(续),A(1,4,3:end),取,A,的第,1,,,4,两行中第,3,列到最后一列。,ans=,3 4 5,18 19 20,A(1,4,:),取,A,的第,1,,,4,两行。,ans=,1 2 3 4 5,16 17 18 19 20,。,指出:,end,用来表示矩阵某一维末尾元素。,65,矩阵的操作(续),例,15,c=3.2,4.5;2.4,4.7;,d=c,ones(size(c);zeros(size(c),eye(size(c),d=,3.2000 4.5000 1.0000 1.0000,2.4000 4.7000 1.0000 1.0000,0 0 1.0000 0,0 0 0 1.0000,。,指出:,实际上,例,15,是分块输入矩阵的例子,是将矩阵分,4,块输入的。注意分块的意义。,66,四、数据的输出格式,format,命令的格式为:,format,格式符,格式符决定数据输出格式,常见格式及其含义有:,short,:输出小数点后,4,位,最多不超过,7,位有效数字。对于大于,1000,的实数,用,5,位有效数字的科学记数形式输出。,long,:,15,位有效数字形式输出。,short e,:,5,位有效数字的科学记数形式输出。,long e:15,位有效数字的科学记数形式输出。,rat:,近似有理数形式输出。,67,数据输出格式(续),指出:,format,命令只影响数据的输出格式,而不影响数据的存储和计算。,如果输出的矩阵的每个元素都是整数,则,MATLAB,就用整数格式显示结果。只要矩阵中有一个元素不是整数,,MATLAB,就按当前的输出格式显示。,默认的输出格式是,short,。,68,数据输出格式(续),注意,rat,格式。如果在进行运算前执行,format rat,命令,则可以用分数形式显示运算结果,这样便于核对手算的结果的正确性。,例如,,1/3,ans=,0.3333,format rat,1/3,ans=,1/3,在改变了输出格式后,为了以后还按默认的格式输出,应当再执行,format short,命令。,69,数据输出格式(续),即使在默认格式下,,0,也仅仅是输出,0,。教材中输出,0.0000,是不正确的。,显示格式是非常重要的,要熟悉几种重要的格式。,70,3 MATLAB,的符号运算,数值运算中的变量需要事先赋值,才能出现在表达式中参与运算。但人们经常需要对含有字符的矩阵和函数进行处理和运算,如求函数的微分、积分等等,这就需要进行符号运算。,MATLAB,的符号运算利用符号数学工具箱进行,符号工具箱的功能主要包括符号表达式的创建、符号矩阵的运算、符号表达式的化简和替换、符号微积分、符号代数方程、符号微分方程、符号函数绘图等等。,71,一、符号对象的创建,1,、字符串变量的创建,字符串是一种特殊的符号对象,在数据处理、造表和函数求值中,字符串具有重要的应用。,用单引号界定的字符序列称为字符串。,例如,s=hello,回车后,显示,s=,hello,72,符号对象的创建(续),指出:,字符串中的字符可以是数字、英文字母、汉字、横线、括号、表达式、方程等。,字符串也称字符串数据或字符变量。,用赋值符号,“,”,把字符串赋给某个标识符,例如,s,,这个标识符称为字符串变量名,简称字符名。,73,2,、符号变量和符号表达式的创建,MATLAB,的符号数学工具箱提供了两个基本函数,sym,和,syms,,用来创建符号变量、符号表达式和符号矩阵。,用函数,sym,建立符号变量、符号表达式和符号矩阵。,调用格式为:,变量,sym(,表达式,),y=sym(2+cos(x),将显示,y=,2+cos(x),这是一个符号表达式。,74,符号对象的创建(续),用函数,syms,建立符号变量、符号表达式和符号矩阵。,调用格式为:,Syms var1 var2 var3,注意空格。,syms y u,p=exp(-y/u),q=y2+u3+u*y,这样就建立了两个符号表达式,分别存放在变量,p,和,q,里。,指出:,由于,syms,函数书写简洁,意义清楚,符合,MATLAB,的习惯特点,一般提倡使用,syms,创建符号变量、符号表达式和符号矩阵。,75,符号对象的创建(续),注意用单引号创建的字符串变量和用函数,sym,、,syms,创建的符号变量性质并不完全一样。在符号工具箱中,有些指令的参数既可以用字符串型数据也可以用符号型数据,但也有一些指令的参数必须用符号型数据。,加法、求导等运算对数值形式的字符串和符号变量都按符号变量对待,不加区别,而级数求和命令,symsum(s,n,h,k),(,s,是通项表达式,,n,为级数的项数,,h,、,k,分别是求和的起止项数)中的,s,必须用符号表达式而不能用字符串。,MATLAB,中,在没有规定的情况下,默认最接近,x,的字母表示自变量。,76,二、符号微积分,limit(f,x,a),求表达式,f,当,xa,时的极限,diff(f),求表达式,f,对缺省变量的微分,diff(f,n),求表达式,f,对缺省变量求,n,阶微分,diff(f,v),求表达式,f,对变量,v,的微分,diff(f,v,n),求表达式,f,对变量,v,的,n,阶微分,int(f),求表达式,f,对缺省变量的积分,int(f,v),求表达式,f,对变量,v,的积分,int(f,v,a,b),求表达式,f,在区间,(a,b),上对变量,v,的定积分,77,符号微积分(续),例,.,已知,f(x)=ax,2,+bx+c,,求,f(x),的微分和积分。,解:,syms a b c x,f=sym(a*x2+b*x+c),f=,a*x2+b*x+c,diff(f,a),ans=,x2,int(f),ans=,1/3*a*x3+1/2*b*x2+c*x,int(f,x,0,2),ans=,8/3*a+2*b+2*c,78,4 MATLAB,的图形处理,79,MATLAB,的图形处理,(,续),x,y,z=sphere(30);,surf(x,y,z),box,80,二维图形的绘制,一、二维图形的绘制,1,、数据绘图命令,plot,plot(y),当,y,为向量时,以,y,的分量为纵坐标,以元素序号为横坐标,用直线依次连接数据点,绘制曲线。若,y,为实数矩阵,按列绘制每一列所对应的曲线,图中曲线数等于矩阵的列数。,plot(x,y),若,y,和,x,为同维向量,以,x,为横坐标,以,y,为纵坐标绘制连线图。若,x,是向量,,y,是行数或列数与,x,的长度相等的矩阵,则绘制多条不同色彩的连线图,,x,被作为这些曲线的共同坐标。若,x,和,y,是同型的矩阵,则以,x,和,y,的对应列元素为横纵坐标分别绘制曲线,曲线条数等于矩阵的列数。,plot(x,y1,x,y2,),以公共的,x,元素为横坐标,以,y1,,,y2,,,y3,,,元素为纵坐标值绘制多条曲线。,81,二维图形的绘制(续),例,1,以向量,y=(1,2,5,4.5,3,6,1),的各个分量为纵坐标,分量序号为横坐标绘制顺序连接线。,解:输入命令,y=1 2 5 4.5 3 6 1;,plot(y),82,二维图形的绘制(续),83,二维图形,(,续,),例,2.,画出一条正弦曲线和一条余弦曲线。,x=0:pi/10:2*pi;%,构造向量,y1=sin(x);%,构造对应的,y1,坐标,y2=cos(x);%,构造对应的,y2,坐标,plot(x,y1,x,y2)%,画出一个以,x,为横坐标,,y1,,,y2,为纵坐标的图形,指出:,构造向量采用了所谓的冒号法,格式为,向量名初值,:,步长:终值,%,步长为,1,时可以省略。,plot,是针对向量或矩阵的列来绘制曲线的,也就是说,使用,plot,之前必须首先定义好曲线上每一点的,x,坐标和,y,坐标。,在上述的格式中,,x,和,y,都可以是表达式。,如果自变量的间隔取得比较大,光滑的曲线就会显示出折线的本来面貌。,84,二维图形,(,续,),85,2,、函数绘图命令,1,解析函数绘图命令,fplot,使用格式:,fplot(fun,lims,s,tol),其中,,用单引号界定的输入参数,fun,,是解析函数字
展开阅读全文