1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,数学建模培训,-,Matlab,基础,课程目的,帮助同学们掌握常用的数学软件,培养学生运用数学软件分析和解决数学问题和实际问题的能力。通过对实际问题的数学处理与计算机求解,完成建模和求解的任务,使同学们真正体验到数学及计算机的实际应用。,数学软件与,Matlab,的关系,国际上最常用的三种数学类科技应用软件为:,3M,Matlab,Mathematica,Maple,还有,MathCAD,4M,之间的侧重,MATLAB,在数值计算方面独占鳌头,Mathematica,和,Maple,则分居符号计算软件的前两
2、名,Mathcad,因其提供计算、图形、文字处理的统一环境而深受中学生欢迎,课程安排,Matlab,概述,Matlab,数值运算,Matlab,符号运算,Matlab,绘图,Matlab,工具箱,Matlab,程序设计,1,、,MATLAB,概述,Matlab,的发展,V1,矩阵语言,/,图形,V2,数据分析与处理,V3,应用工具,V4,科学数据可视化,(,亮点,),GUI,开发工具,稀疏矩阵,Matlab,的更新,V5,多维数组,结构与嵌套数组,面向目标编程,集成编辑,/,调试工具,实时仿真,MATLAB,语言的特点,语言简洁紧凑,语法限制不严,程序设计,自由度大,可移植性好,运算符、库函数
3、丰富,图形功能强大,界面友好、编程效率高,扩展性强,Matlab,应用领域,工业研究与开发,数学教学,特别是线性代数,数值分析和科学计算方面的教学与研究,电子学、控制理论和物理学等工程和科学学科,方面的教学与研究,经济学、化学和生物学等计算问题的所有其他,领域中的教学与研究,例:用简短命令计算并绘制在,0,x6,范围内的,sin(2x),、,sinx,2,、,sin,2,x,。,x=linspace(0,6),y1=sin(2*x),y2=sin(x.2),y3=(sin(x).2;,plot(x,y1,x,y2,x,y3),阶梯图,用四种方法描述,cos(x)*sin(y),图形,MATLA
4、B,的主要功能,1,数值计算功能,MATLAB,以矩阵作为数据操作的基本单位,还提供了十分丰富的数值计算函数。,MATLAB,提供了丰富的矩阵运算处理功能,是,基于矩阵运算的处理工具,。,变量,矩阵,,运算,矩阵的运算。,例如:,C=A+B,,,A,B,C,都是矩阵,是矩阵的加运算。,即使一个常数,,Y=5,,,MATLAB,也看做是一个,1,1,的矩阵。,2.,符号计算功能,Matlab,和著名的符号计算语言,Maple,相结合,使得,Matlab,具有符号计算功能。,符号运算即用字符串进行数学分析。,允许变量不赋值而参与运算。,用于解代数方程、微积分、复合导数、积分、二重积分、有理函数、微
5、分方程、泰勒级数展开、寻优等等,可求得解析符号解。,绘图功能与计算结果的可视化,具有高层绘图功能,两维、三维绘图,具有底层绘图功能,句柄绘图,使用,plot,函数可随时将计算结果可视化,4.,图形化程序编制功能,动态系统进行建模、仿真和分析的软件包,用结构图编程,而不用程序编程,只需拖几个方块、连几条线,即可实现编,程功能,MATLAB,工具箱,MATLAB,包含两部分内容:基本部分和各种可选的工具箱。,MATLAB,工具箱分为两大类:功能性工具箱和学科性工具箱。,许多学科,在,MATLAB,中都有专用工具箱,现已有,30,多个工具箱,但,MATLAB,语言的扩展开发还远远没有结束,各学科的相
6、互促进,将使得,MATLAB,更加强大。,MATLAB,主工具箱,符号数学工具箱,SIMULINK,仿真工具箱,控制系统工具箱,信号处理工具箱,图象处理工具箱,通讯工具箱,系统辨识工具箱,神经元网络工具箱,金融工具箱,6.MATLAB,的兼容功能,可与,C,语言、,FORTURE,语言跨平台兼容,用函数,CMEX,、,FMEX,实现,此功能不推荐使用,7.MATLAB,的容错功能,非法操作时,给出提示,并不影响其操作,例如:,1/0,Warning:Divide by zero,ans,=,Inf,8.MATLAB,的开放式可扩充结构,Matlab,所有函数都是开放的,用户可按自己意愿随意更改
7、正因为此功能,使得,Matlab,的应用越来越广泛,9.,强大的联机检索帮助系统,可随时检索,Matlab,函数,可随时查询,Matlab,函数的使用方法,Matlab,的功能产品,1.Matlab compiler,将,m,文件转化为,c,文件,加快运行速度。,2.,Matlab,c/c,+Graphics Library,由,m,文件产生,GUI,独立运行的,c,程序代码。,3.,Matlab,c/c,+Math Library,由,m,文件产生独立运行的,c,程序代码。,4.Databast Toolbox,在,Matlab,中进行对数据库的读写。,5.Databast,Acquisi
8、tition,Toolbox,在,Matlab,中直接读取数据库的数据。,6.Excel Link,可让,Excel,世界直接调用,Matlab,的数据。,7.Matlab Report Generator,Matlab,的报告产生器。,8.Matlab Runtime Sever,将个人应用程序包成一个软件,并在没有,Matlab,的环境下执行。,9.Matlab Web Sever,与,NT,的,Web Sever,合用在,Sever,端执行,Matlab,的运算或绘图。,初识,MATLAB,例 绘制正弦曲线和余弦曲线。,x=0:0.5:360*pi/180;,plot(x,sin(x),
9、x,cos(x,);,例,求方程,3x,4,+7x,3,+9x,2,-23=0,的全部根。,p=3,7,9,0,-23;%,建立多项式系数向量,x=,roots(p,);%,求根,例,求解线性方程组,a=2,-3,1;8,3,2;45,1,-9;b=4;2;17;x=,inv(a,)*b,(,1,),方向键和控制键可以编辑修改已输入的命令,:,回调上一行命令,:,回调下一行命令,(,2,),命令窗口的分页输出,more off,:,不允许分页,more on,:,允许分页,more(n,),:指定每页输出的行数,matlab,与,dos,兼容命令,1.,dir,可列出指定目录下的文件和子目录清
10、单,例如,:,dir,可显示当前目录下的所有文件,dir,c:matlab,dir,c:matlab,*.m,2.cd,可改变当前工作目录,cd,c:matlabtoolbox,3.type,可显示指定文件的全部内容,type,myfile.m,4.delete,删除指定文件,del,abc,删除当前目录下的,abc,文件,del,c:matlabaaa.m,注意:只可删除用户文件,其它文件不要轻易删除,否则系统会瘫痪,工作空间窗口,工作空间是,Matlab,用于暂时存储各种变量和结果的内存空间。在该窗口中显示工作空间中所有变量的名称、大小、字节数和变量类型说明,可对变量进行观察、编辑、保存和
11、删除。,1,、变量,变量的命名:变量的名字必须以字母开头(不能超过,19,个字符),之后可以是任意字母、数字或下划线;变量名称区分字母的大小写;变量中不能包含有标点符号。,使用,exist,来查询变量或函数是否存在?,exist(A,)returns:,0 if A does not exist,1 if A is a variable in the workspace,2 if A is an M-file on,MATLABs,search path.It also returns 2 when,A is the full pathname to a file or when A is t
12、he name of an,ordinary file on,MATLABs,search path,3 if A is a MEX-or DLL-file on,MATLABs,search path,4 if A is a MDL-file on,MATLABs,search path,5 if A is a built-in MATLAB function,6 if A is a P-file on,MATLABs,search path,7 if A is a directory,8 if A is a Java class,变量查询函数,who,与,whos,(,简与全,),作用都是
13、列出在,matlab,工作空间中已经驻留的变量名清单,不同的是,whos,在给出驻留变量的同时,还给出他们的维数及性质,永久变量,在,matlab,工作内存中,驻留了几个由系统本身在启动时定义的变量,我们称为永久变量,永久变量用,who,指令是查看不到的,只可 随时调用,clear,:清除工作空间中所有的变量,clear,变量名:清除指定的变量,数据的显示格式由,format,命令控制。,format,只是影响结果的显示,不影响其计算与存储;,MATLAB,总是以,双字长浮点数,(双精度)来执行所有的运算。,如果结果为整数,则显示没有小数;如果结果不是整数,则输出形式有:,format(sho
14、rt),:短格式(,5,位定点数),99.1253,format long,:长格式(,15,位定点数,99.12345678900000,format short e,:短格式,e,方式,9.9123e+001,format long e,:长格式,e,方式,9.912345678900000e+001,format bank,:,2,位十进制,99.12,format hex,:十六进制格式,format compact,:屏幕显示方式为紧凑,数据间隔小,format loose,:屏幕显示方式为松散,为系统默认格式,简单的数学运算,1,、常用的数学运算符,,,,*(乘),,/,(左除),
15、右除),,(幂),在运算式中,,MATLAB,通常不需要考虑空格;多条命令可以放在一行中,它们之间需要用分号隔开;逗号告诉,MATLAB,显示结果,而分号则禁止结果显示。,eps,容差变量,,(,计算机的最小数,),在,pc,机上,=2-52,pi,圆周率,的近似值,3.1415926,inf,或,Inf,表示正无大,定义为,1/0,NaN,非数,,(Not a Number),它产生于,0,,,0/0,,,/,等运算,即,0*,inf,i,,,j,虚数单位,flops,浮点运算数,ans,对于未赋值运算结果,自动赋给,ans,nargin,函数的输入变量个数,nargout,函数的输出变
16、量个数,2,、常用数学函数,abs,sin,cos,tan,asin,acos,atan,sqrt,exp,imag,real,sign,log,log10,conj,(共扼复数)等,当前目录窗口和搜索路径,1,当前目录窗口 当前目录是指,MATLAB,运行文件时的工作目录,只有在当前目录或搜索路径下的文件、函数可以被运行或调用。在当前目录窗口中可以显示或改变当前目录,还可以显示当前目录下的文件并提供搜索功能。,将用户目录设置成当前目录也可使用,cd,命令。例如,将用户目录,c:mydir,设置为当前目录,可在命令窗口输入命令:,cd,c:mydir,cd,path,:由当前目录进入,path
17、目录,cd,.,:返回上一级目录,cd,:显示当前目录,2,MATLAB,的搜索路径,当用户在,MATLAB,命令窗口输入一条命令后,,MATLAB,按照一定次序寻找相关的文件。基本的搜索过程是:,(1),检查该命令是不是一个变量。,(2),检查该命令是不是一个内部函数。,(3),检查该命令是否当前目录下的,M,文件。,(4),检查该命令是否,MATLAB,搜索路径中其,他目录下的,M,文件。,用户可以将自己的工作目录列入,Matlab,搜索路径,从而将用户目录纳入,Matlab,系统统一管理。设置搜索路径的方法有:,(1),用,path,命令设置搜索路径。,Path,显示,matlab,启
18、动时设定的搜索路径,例如,将用户目录,c:mydir,加到搜索路径下,可在命令窗口输入命令:,path(path,c:mydir,),可将你需要的目录永久纳入,matlab,搜索路径,打开,c:matlab,toolboxlocal,matlabrc.m,在所有搜索路径后加上,c:mydir,;,用对话框设置搜索路径,在,Matlab,的,File,菜单中选,Set Path,命令或在命令窗口执行,pathtool,命令,将出现搜索路径设置对话框。通过,Add Folder,或,Add with Subfolder,命令按钮将指定路径添加到搜索路径列表中。在修改完搜索路径后,则需要保存搜索路径
19、命令历史记录窗口,在默认设置下,历史记录窗口中会自动保留自安装起所有用过的命令的历史记录,并且还标明了使用时间,从而方便用户查询。而且,通过双击命令可进行历史命令的再运行。如果要清除这些历史记录,可以选择,Edit,菜单中的,Clear Command History,命令,。,MATLAB,帮助系统,帮助窗口,进入帮助窗口可以通过以下,3,种方法:,(1),单击,Matlab,主窗口工具栏中的,Help,按钮。,(2),在命令窗口中输入,helpwin,、,helpdesk,或,doc,。,(3),选择,Help,菜单中的,“,Matlab,Help,”,选项。,帮助命令,Matlab,
20、帮助命令包括,help,、,lookfor,以及模糊查询。,1,help,命令在,Matlab,7,命令窗口中直接输入,help,命令将会显示当前帮助系统中所包含的所有项目,即搜索路径中所有的目录名称。同样,可以通过,help,加函数名来显示该函数的帮助说明。,演示系统,在帮助窗口中选择演示系统,(Demos),选项卡,然后在其中选择相应的演示模块,或者在命令窗口输入,Demos,,或者选择主窗口,Help,菜单中的,Demos,子菜单,打开演示系统,。,远程帮助系统,在,MathWorks,公司的主页,(,),上可以找到很多有用的信息,国内的一些网站也有丰富的信息资源。,MATLAB,的数值
21、计算,数值运算的功能,创建矩阵,矩阵运算,多项式运算,线性方程组,数值统计,线性插值,函数优化,微分方程的数值解,一、命令行的基本操作,创建矩阵的方法,直接输入法,规则:,矩阵元素必须用,括住,矩阵元素必须用逗号或空格分隔,在,内矩阵的,行与行,之间必须,用分号分隔,a=1;b=2;c=3;,x=5 b c;a*b,a+c,c/b,x=,5.000 2.000 3.000,2.000 4.000 1.500,y=2,4,5;,3 6 8,y=,2 4 5,3 6 8,矩阵元素可以是,任何,matlab,表达式,,可以是实数,也可以是复数,复数可用特殊函数,I,,,j,输入。大的矩阵可以用分行输
22、入,,回车键代表分号,。,a=1 2 3;4 5 6,x=2 pi/2;sqrt(3)3+5i,矩阵元素,符号的作用,逗号和分号的作用,逗号和分号可作为指令间的分隔符,,matlab,允许多条语句在同一行出现。,分号如果出现在指令后,屏幕上将不显示结果。,注意:只要是赋过值的变量,不管是否在屏幕上显示过,都存储在工作空间中,以后可随时显示或调用。,变量名尽可能不要重复,否则会覆盖。,当一个指令或矩阵太长时,可用,续行,冒号的作用,用于生成等间隔的向量,默认间隔为,1,。,用于选出矩阵指定行、列及元素。,循环语句,2.,用,matlab,函数创建矩阵,空,阵,matlab,允许输入空阵,当一项操
23、作无结果时,返回空阵。,rand,随机矩阵,eye,单位矩阵,zeros,全部元素都为,0,的矩阵,ones,全部元素都为,1,的矩阵,diag,产生对角矩阵,例,eye(2,,,3)zeros(2,,,3),ans,=,ans,=,1,0,0 0,0,0,0,1,0 0,0,0,ones(2,,,3),ans,=,1,1,1,1,1,1,V=5 7 2,;,A=,diag(V,),A=,5,0,0,0,7,0,0,0,2,例,eye(2),ans,=,1,0,0,1,zeros(2),ans,=,0,0,0,0,ones(2),ans,=,1,1,1,1,例 在区间,20,50,内均匀分布的
24、5,阶随机矩阵。,命令如下:,x=20+(50-20)*rand(5),此外,常用的函数还有,reshape(A,m,n,),,它在矩阵总元素保持不变的前提下,将矩阵,A,重新排成,mn,的二维矩阵。,也可用,linspace,函数产生行向量。其调用格式为:,linspace(a,b,n),其中,a,和,b,是生成向量的第一个和最后一个元素,,n,是元素总数。,例,a=linspace(1,10,10),a=,1 2 3 4 5 6 7 8 9 10,还有伴随矩阵、稀疏矩阵、魔方矩阵,(magic),、对角矩阵、范德蒙等矩阵的创建,不一一介绍了。,注意:,matlab,严格区分大小写字母,,
25、因此,a,与,A,是两个不同的变量。,matlab,函数名,必须小写,。,3.,用,m,文件创建矩阵,对于比较大且比较复杂的矩阵,可以为它专门建立一个,M,文件。下面通过一个简单例子来说明如何利用,M,文件创建矩阵。,例,利用,M,文件建立,MYMAT,矩阵。,(1),启动有关编辑程序或,Matlab,文本编辑器,并输入待建矩阵。,(2),把输入的内容以纯文本方式存盘,(,设文件名为,mymatrix.m,),。,(3),在,Matlab,命令窗口中输入,mymatrix,,即运行该,M,文件,就会自动建立一个名为,MYMAT,的矩阵,可供以后使用。,4.,用冒号表达式创建矩阵,利用冒号表达式
26、可以线性等间距地建立一个向量来创建矩阵 一般格式是:,e1:e2:e3,其中,e1,为初始值,,e2,为步长,,e3,为终止值。或者为:(,start:step:end,),例,a=1:2:10,a=,1 3 5 7 9,5.,矩阵的修改,直接修改,可用,键找到所要修改的矩阵,用键移动到要修改的矩阵元素上即可修改,。,指令修改,可以用,A(,)=,来修改。,例如,a=1 2 0;3 0 5;7 8 9,a=1 2 0,3 0 5,7 8 9,a(3,3)=0,a=1 2 0,3 0 5,7 8 0,把,Matlab,工作空间中一些有用的数据长久保存下来的方法是生成,mat,数据文件。,save
27、将工作空间中所有的变量存到,matlab.mat,文件中。,二、数据的保存与获取,默认文件名,save data,将工作空间中所有的变量存到,data.mat,文件中。,save data a b,将工作空间中,a,和,b,变量存到,data.mat,文件中。,下次运行,Matlab,时即可用,load,指令调用已生成的,mat,文件。,load,load data,load data a b,mat,文件是标准的二进制文件,还可以,ASCII,码形式保存。,即可恢复保存过的所有变量,矩阵加、减(,)运算,规则:,相加、减的两矩阵必须有相同的行和列两矩阵对应元素相加减。,允许参与运算的两矩阵
28、之一是标量。标量与矩阵的所有元素分别进行加减操作。,三、矩阵运算,2.,矩阵乘(,),运算,规则:,A,矩阵的列数必须等于,B,矩阵的行数,标量可与任何矩阵相乘,a=1 2 3;4 5 6;7 8 0;b=1;2;3;c=a*b,c=14,32,23,d=-1;0;2;f=pi*d,f=-3.1416,0,6.2832,矩阵除的运算在线性代数中没有,有矩阵逆的运算,在,matlab,中有两种矩阵除运算。,两种除法:,和,/,,分别表示左除和右除。如果,A,矩阵是非奇异方阵,则,AB,和,B/A,运算可以实现。,AB,等效于,A,的逆左乘,B,矩阵,而,B/A,等效于,A,矩阵的逆右乘,B,矩阵
29、对于矩阵来说,左除和右除表示两种不同的除数矩阵和被除数矩阵的关系。对于矩阵运算,一般,ABB/A,。,a p a,自乘,p,次幂,方阵,1,的,整数,3.,矩阵乘方,an,ap,pa,对于,p,的其它值,计算将涉及特征值,和特征向量,如果,p,是矩阵,,a,是标量,ap,使用特征值和特征向量自乘到,p,次,幂;如,a,p,都是矩阵,,ap,则无意义。,a=1,2,3;4,5,6;7,8,9;a2,ans=30 36 42,66 81 96,102 126 150,当一个方阵有复数特征值或负实特征值时,非整数幂是复数阵。,a0.5,ans=,0.4498+0.7623i 0.5526+0.2
30、068i 0.6555-0.3487i,1.0185+0.0842i 1.2515+0.0228i 1.4844-0.0385i,1.5873-0.5940i 1.9503-0.1611i 2.3134+0.2717i,inv,矩阵求逆,det,行列式的值,eig,矩阵的特征值,diag ,对角矩阵,矩阵转置,sqrt,矩阵开方,4.,矩阵的其它运算,5.,矩阵的范数,矩阵范数的函数为:,(1),norm(V,),或,norm(V,2),:计算矩阵,V,的,2,范数。,(2)norm(V,1),:计算矩阵,V,的,1,范数。,(3),norm(V,inf,),:计算矩阵,V,的,范数。,6.,
31、矩阵的一些特殊操作,矩阵的变维,a=1:12;b=,reshape,(a,3,4),c=zeros(3,4);c(:)=a(:),矩阵的变向,rot90,:,旋转,;,fliplr,:,左右翻,;,flipud,:,上下翻,矩阵的抽取,diag,:,抽取主对角线,;(,对于非方阵的情况,?),tril,:,抽取主下三角,;,triu,:,抽取主上三角,然后其余补零元素,矩阵的扩展,关系运算,关系符号,意义,=,=,=,小于,小于或等于,大于,大于或等于,等于,不等于,关系运算符的运算法则,当两个比较量是标量时,直接比较两数的大小。若关系成立,关系表达式结果为,1,,否则为,0,。,当参与比较的
32、量是两个维数相同的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,并给出元素比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由,0,或,1,组成。,(3),当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,并给出元素比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由,0,或,1,组成。,注意:,其书写方法与数学中的不等式符号不尽相同。,数组运算指,元素对元素,的算术运算,,与通常意义上的由符号表示的线性代数,矩阵运算不同。,数组加减,(.+,.-),a.+b,a.-b,7.,矩阵的数组运算,对
33、应元素相加减(与矩阵加减等效),2.,数组乘除,(,,,./,,,.,),a,b a,,,b,两数组必须有相同的行,和列两数组,相应元素,相乘。,a=1 2 3;4 5 6;7 8 9;,b=2 4 6;1 3 5;7 9 10;,a.*b,ans=,2 8 18,4 15 30,49 72 90,a=1 2 3;4 5 6;7 8 9;,b=2 4 6;1 3 5;7 9 10;,a*b,ans=,25 37 46,55 85 109,85 133 172,a./b=b.a,a.b=b./a,a./b=b.a,都是,a,的元素被,b,的对应元,素除,“,/”,是斜杠,a.b=b./a,都是,
34、b,的元素被,a,的对应元,素除,“,”,是反斜杠,例,:a=1 2 3;b=4 5 6;c1=a.b;c2=b./a,c1=4.0000 2.5000 2.0000,c2=4.0000 2.5000 2.0000,给出,a,b,对应元素间的商,.,3.,数组乘方,(.),元素对元素的幂,例,:,a=1 2 3;b=4 5 6;,z=a.2,z=,1.00 4.00 9.00,z=a.b,z=,1.00 32.00 729.00,(1.4 2.5 3.6),matlab,语言把多项式表达成一个行向量,,该向量中的元素是按多项式降幂排列的。,f(x)=a,0,x,n,+a,1,x,n-1,+a,
35、n-1,x+a,n,可用行向量,p=a,0,a,1,a,n-1,a,n,表示,poly,产生特征多项式系数向量,特征多项式一定是,n+1,维的,特征多项式第一个元素一定是,1,四、多项式运算,例,:,a=1 2 3;4 5 6;7 8 0;,p=poly(a),p=1.00 -6.00 -72.00 -27.00,p,是多项式,p(x)=x,3,-6x,2,-72x-27,的系数,matlab,描述方法,我们可用:,p1=poly2str(p,x),函数文件,显示,数学多项式的形式,p1=x3-6 x2-72 x 27,注意:多项式中缺少的幂次用,0,补齐。,2.roots,求多项式的根,a=
36、1 2 3;4 5 6;7 8 0;p=poly(a),p=,1.00 -6.00 -72.00 -27.00,r=,roots(p,)-,求由,p,构成的多项式的根,r=12.12,-5.73 ,显然,r,是矩阵,a,的特征值,-0.39,当然我们可用,poly,令其返回多项式形式,(,这是,poly,的第二个功能,),p2=poly(r),p2=,1.00 -6.00 -72.00 -27.00,matlab,规定多项式系数向量用行向量表示,一组根用列向量表示。,P=,poly(r,),输入,r,是多项式所有根,返回值为代表多项式的行向量形式。,P=,poly(A,),,输入是,N*N,的
37、方阵,返回值,p,是长度为,N+1,的行向量多项式,它是矩阵,A,的特征多项式,也就是说多项式,p,的根是矩阵,A,的特征值。,求根的另一种方法,str1=x3-6x2-72x-27;,p1=str2poly(str1);,r=roots(p1);,注:,str2poly,实现把一个字符串表示的多项式转换为一个行向量表示的多项式。,poly2str,同理。,3.,conv,多项式乘运算,(,向量卷积,),例,:a(x)=x,2,+2x+3;b(x)=4x,2,+5x+6;,c=(x,2,+2x+3)(4x,2,+5x+6),a=1 2 3;b=4 5 6;,c=conv(a,b),或,c=co
38、nv(1 2 3,4 5 6),c=4.00 13.00 28.00 27.00 18.00,p=poly2str(c,x),其中,x,表示自变量,p=4 x4+13 x3+28 x2+27 x+18,4.deconv,多项式除运算,(,解卷积,),a=1 2 3;,c=4.00 13.00 28.00 27.00 18.00,d=deconv(c,a),d=4.00 5.00 6.00,d,r=deconv(c,a),余数,c,除,a,后的整数,它们之间的关系为,:c=,conv(a,d)+r,5.,多项式导数或微分,matlab,提供,polyder,函数计算多项式的导数。,命令格式:,p
39、olyder(p,):,求,p,的导数,polyder(a,b,):,求,多项式,a,b,乘积的导数,p,q=,polyder(a,b,):,求,多项式,a,除以,b,的商的导数,并以,p/q,的格式表示。,例:,a=1 2 3 4 5;poly2str(a,x),ans,=x4+2 x3+3 x2+4 x+5,b=,polyder(a,),b=4 6 6 4,poly2str(b,x),ans,=4 x3+6 x2+6 x+4,6.,多项式的积分,matlab,提供,polyint,函数计算多项式的积分。,命令格式:,polyint(p,k,):,求多项式,p,的积分,设积分的常数项为,k,
40、polyint(p,),默认,k=0,例:,a=1 2 3 4 5;poly2str(a,x),ans,=x4+2 x3+3 x2+4 x+5,b=polyint(a,8),b=0.2 0.5 1.0 2.0 5.0 8.0,poly2str(b,x),ans,=0.2 x5+0.5 x4+x3+2 x2+5 x+8,五、代数方程组求解,matlab,中有两种除运算左除和右除。,对于方程,ax=b,,,a,为,a,nm,矩阵,有三种情况:,当,n=m,时,此方程成为“恰定”方程,当,nm,时,此方程成为“超定”方程,当,n1 2 3 4,1 2 3 4,5 6 7 8,5 6 7 8,八、
41、拟合与插值,多项式拟合,采用最小二乘法对给定的数据进行多项式拟合,最后给出多项式的系数。,p=,polyfit(x,y,n,),,采用,n,次多项式,p,来拟合数据,x,和,y,,从而使得,y,与,p(x,),最小均方差最小。,x0=0:0.1:1;,y0=-.447 1.978 3.11 5.25 5.02 4.66 4.01 4.58 3.45 5.35 9.22;,p=polyfit(x0,y0,3),p=56.6915 -87.1174 40.0070 -0.9043,xx=0:0.01:1;yy=,polyval(p,xx,);,plot(xx,yy,-b,x0,y0,or),曲线拟
42、合图形用户接口,Matlab7.0,提供了支持曲线拟合的图形用户接口。在“,Figure”,窗口“,ToolsBasic Fitting”,菜单中。,为了使用该工具,先用待拟合的数据画图。,x=0:0.2:10;,y=0.25*x+20*,sin(x,);,plot(x,y,ro,);,在复选框“,Plot fits”,中选择“,cubic”,。,2.,插值,插值的定义,是对某些集合给定的数据点之间函数的估值方法。,当不能很快地求出所需中间点的函数时,插值是一个非常有价值的工具,它可以在已知数据之间寻找估计值,常用到信号处理和图像处理中。,Matlab,提供了一维、二维、三次样条等许多插值选择
43、interp1,一维插值,interp2,二维插值,interp3,三维插值,spline,三次样条插值,griddata,栅格数据插值,利用已知点确定未知点,粗糙,精确,集合大的,简化的,一维插值就是对一维函数,y=,f(x,),进行插值。,yi,=interp1(x,y,xi,method),x,必须是向量,,y,可以是向量也可以是矩阵。,(,x,y,),代表的是已知数据。这时,,xi,代表需要估计值的位置,,yi,表示插值后的估计值。,method,用于指定插值的方法:,1.method=,nearest,,在已知数据的最临近点设置插值点,对插值点的数进行四舍五入。对超出范围的点返回
44、一个,NaN,。此方法是最快的插值方法,但数据平滑方面最差,其得到的数据是不连续的。,2.method=,linear,,采用直线连接相邻的两点,即线性插值,是此函数的缺省默认方法。执行速度比最临近插值稍慢,数据平滑要由于临近插值,且数据是连续的。,3.,method=,spline,,采用三次样条函数来获得插值点。处理速度最慢,可以产生最光滑的结果。,Matlab,提供了一个样条插值工具箱,位于,toolbox,splines,下。,4.,method=,pchip,,采用分段三次埃尔米特多项式插值。,例:,x=0:2*,pi;y,=,sin(x);xi,=0:0.1:8;,yi1=inte
45、rp1(x,y,xi,linear),yi2=interp1(x,y,xi,nearest),yi3=interp1(x,y,xi,spline,),yi4=interp1(x,y,xi,cubic),p=polyfit(x,y,3);yy=,polyval(p,xi,);,subplot(3,2,1);plot(x,y,o);,subplot(3,2,2);plot(x,y,o,xi,yy);,subplot(3,2,3);plot(x,y,o,xi,yi1);,subplot(3,2,4);plot(x,y,o,xi,yi2);,subplot(3,2,5);plot(x,y,o,xi,y
46、i3);,subplot(3,2,6);plot(x,y,o,xi,yi4);,二维插值,二维插值主要应用于图像处理和数据的可视化,对双变量的函数,z=,f(x,y,),进行插值。,zi,=interp2(x,y,z,xi,yi,method),原始数据,x,y,z,决定插值函数,z=,f(x,y,),返回值,zi,是,(,xi,yi,),在函数,f(x,y,),上的值。,method,同样可以采用最临近插值、双线性插值、三次样条插值。,MATLAB,的符号运算,科学与工程技术中的数值运算固然重要,但自然科学理论分析中各种各样的公式、关系式及其推导就是符号运算要解决的问题。,在,Matlab7
47、0,中,符号计算虽以数值运算的补充身份出现,但它们都是科学计算研究的重要内容。,Matlab,开发了实现符号计算的工具包,Symbolic Math Toolbox,。,符号数学工具箱中的工具是建立在功能强大的,Maple,的基础上。,它最初是由加拿大的滑铁卢,(Waterloo),大学开发出来的。,如果要求,Matlab7.0,进行符号运算,那么首先由,Maple,计算并将结果返回到,Matlab7.0,命令窗口。,两个数学分析的可视化界面,图示化符号计算器,(,由命令,funtool,引出,),泰勒级数逼近分析界面,(,由命令,taylortool,引出,),图示化符号计算器,由三个独立
48、的窗口构成,通过函数运算控制窗口来演示另外两个图形窗口,任何时候,只有一个窗口属于激活状态。而被激活的函数图像可随运算控制窗口的操作而做相应的变化。,下面给出运算控制窗口的键位功能。,前两行是函数,f,和,g,的具体解析式,第三行是自变量,x,的取值范围和常数,a,的值。,第四行只对,f,起作用,如求导、积分、简化、提取分子和分母、倒数、反函数。,第五行是处理,f,和,a,的加减乘除等运算。,第六行前四个进行,f,和,g,之间的运算,后三个分别是:求复合函数;把,f,传递给;,swap,是实现,f,和,g,功能的交换。,最后一行是对计算器自身进行操作。,Funtool,计算器存有一张函数列表,
49、fxlist,这,7,个功能键分别是:,Insert,:把当前激活窗的函数写入列表,Cycle,:依次循环显示,fxlist,中的函数,Delete,:从,fxlist,列表中删除激活窗的函数,Reset,:使计算器恢复到初始调用状态,Help,:获得关于界面的在线提示说明,Demo,:自动演示,Close,:关闭整个计算器,泰勒级数逼近分析,该界面用于观察函数,f(x,),在给定区间被,N,阶泰勒多项式,Tn(x,),逼近的情况。,f(x,),的输入可由命令,taylortool(fx,),引入,或者在栏中直接输入表达式,回车确定。,N,默认值为,7,,,a,是级数的展开点。,函数的观察区间
50、默认为,(-2pi,,,2pi),。,符号运算的功能,符号表达式、符号矩阵的创建,符号线性代数,因式分解、展开和简化,符号代数方程求解,符号微积分,符号微分方程,一、符号运算的基本操作,什么是符号运算,与数值运算的区别,数值运算中必须先对变量赋值,,然后才能参与运算。,符号运算无须事先对独立变量赋值,,运算结果以标准的符号形式表达。,特点:,运算对象可以是没赋值的符号变量,以推理解析的方式进行,因此不受计算误差累积所带来的困扰。,可以给出完全正确的封闭解或任意精度的数值解,(,当封闭解不存在时,),。,符号计算指令的调用简单,和经典教科书公式相近。,计算所需的时间较长。,Symbolic Ma






