自学matlab之2013b_第1页
自学matlab之2013b_第2页
自学matlab之2013b_第3页
自学matlab之2013b_第4页
自学matlab之2013b_第5页
已阅读5页,还剩243页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MATLAB语言基础与应用,物理工程学院,秦文华,MATLAB语言介绍,一、MATLAB语言的发展matlab语言是由美国的CleverMoler博士于1980年开发的;设计者的初衷是为解决“线性代数”课程的矩阵运算问题;取名MATLAB即MatrixLaboratory矩阵实验室的意思;它将一个优秀软件的易用性与可靠性、通用性与专业性、一般目的的应用与高深的科学技术应用有机地相结合起来,MATLAB是一种直译式的高级语言,比其它程序设计语言容易。MATLAB语言与其它语言的关系仿佛和C语言与汇编语言的关系一样MATLAB已经不仅仅是一个“矩阵实验室”了,它集科学计算、图象处理;声音处理于一身,并提供了丰富的Windows图形界面设计方法MATLAB语言是功能强大的计算机高级语言,它以超群的风格与性能风靡全世界,成功地应用于各工程学科的研究领域,MATLAB最早在美国是作为大学工科学生必修的计算机语言之一MATLAB语言已在我国推广使用,现在已应用于各学科研究部门和许多高等院校;特别是MATLAB在我国大学生数学建模竞赛中的应用,为参赛者在有限的时间内准确、有效的解决问题提供了有力的保证。MATLAB语言不受计算机硬件的影响,现有的硬件条件下的计算机都可以使用。当然,随着应用功能的增强,对硬件的要求也在提高。,二、matlab能在各领域做什么,工业研究与开发数学教学,特别是线性代数数值分析和科学计算方面的教学与研究电子学、控制理论和物理学等工程和科学学科方面的教学与研究经济学、化学和生物学等计算问题的所有其他领域中的教学与研究,二、MATLAB语言的功能,强大的数值(矩阵)运算功能广泛的符号运算功能高级与低级兼备的图形功能(计算结果的可视化功能)可靠的容错功能应用灵活的兼容与接口功能信息量丰富的联机检索功能,三、MATLAB语言的特点,语言简洁紧凑,语法限制不严,程序设计自由度大,可移植性好运算符、库函数丰富图形功能强大界面友好、编程效率高扩展性强,丰富的MATLAB工具箱,MATLAB主工具箱符号数学工具箱SIMULINK仿真工具箱控制系统工具箱信号处理工具箱图象处理工具箱通讯工具箱系统辨识工具箱神经元网络工具箱金融工具箱,MATLAB的工具箱大致可以分为两类:功能型工具箱和领域型工具箱。许多学科,在MATLAB中都有专用工具箱,但MATLAB语言的扩展开发还远远没有结束,各学科的相互促进,将使得MATLAB更加强大,MATLAB的开放式可扩充结构,matlab所有函数都是开放的(源程序开放)用户可按自己意愿随意更改正因为此功能,使得matlab的应用越来越广泛强大的联机检索帮助系统可随时检索matlab函数可随时查询matlab函数的使用方法,四、MATLAB的工作环境,启动MATLAB主窗口MATLAB的命令窗口(1)命令窗口的菜单栏(2)命令窗口的工具栏(3)命令窗口的命令编辑区历史命令窗口当前目录窗口、工作空间窗口MATLAB帮助系统MATLAB的演示功能退出MATLAB,1.启动MATLAB,与常规的应用软件相同,MATLAB的启动也有多种方式,首先常用的方法就是双击桌面的MATLAB图标,也可以在开始菜单的程序选项中选择MATLAB组件中的快捷方式,当然也可以在MATLAB的安装路径的子目录中选择可执行文件“MATLAB.exe”。,启动MATLAB后,将打开一个MATLAB的欢迎界面,随后打开MATLAB的桌面系统(Desktop)如右图所示。,2.MATLAB的桌面工作环境,菜单栏和工具栏,工作空间窗口,当前目录窗口,历史命令窗口,命令窗口,3.命令窗口,命令窗口是MATLAB的主要交互窗口,用于输入命令并显示除图形以外的所有执行结果。MATLAB命令窗口中的“”为命令提示符,表示MATLAB正在处于准备状态。在命令提示符后键入命令并按下回车键后,MATLAB就会解释执行所输入的命令,并在命令后面给出计算结果。一般来说,一个命令行输入一条命令,命令行以回车结束。但一个命令行也可以输入若干条命令,各命令之间以逗号分隔,若前一命令后带有分号,则逗号可以省略。,如果一个命令行很长,一个物理行之内写不下,可以在第一个物理行之后加上3个小黑点()并按下回车键,然后接着下一个物理行继续写命令的其他部分。3个小黑点称为续行符,即把下面的物理行看作该行的逻辑继续。在MATLAB里,有很多的控制键和方向键可用于命令行的编辑。使用方向键【】【】遍历前面输入过的命令使用【】【】在命令行移动光标编辑命令其他按键还有【Pageup】、【Pagedown】、【Delete】、【Home】、【End】、【Esc】等等编程时不适和在命令窗口直接输入,利用文件编辑器输入文本,命令窗口常用控制命令clf清除图形窗口clc清除命令窗口的显示内容clear清除MATLAB工作空间中保存的变量cd设置当前目录edit打开M文件编辑器exit关闭/退出MATLABquit关闭/退出MATLAB,4.历史命令窗口,历史命令窗口保存用户输入过的历史命令,为用户下次使用同一命令提供方便。历史命令窗口中保存的历史命令记录:每次开启MATLAB的时间及其每次开启MATLAB后在命令窗口中运行过的所有指令历史命令窗口中的简单操作:用鼠标双击一条命令,即可在命令窗口中立即执行选中命令,利用鼠标右键可以复制该指令利用组合操作【Ctr+鼠标左键】可以选中多条命令进行复制或操作(按鼠标右键出项的功能选项)可以利用【Edit】菜单中的选项清除历史记录,5.当前目录窗口,显示当前工作目录下存在的资源(文件或文件夹),是默认保存当前文件的目录;建议用户为自己建立一个专门的工作目录,用于存放自己创建的文件,并设为当前目录;把用户目录设置成当前目录的方法利用窗口的交互界面设置利用命令设置:在命令窗口中输入命令cdd:my-work,即可讲自己的用户目录设置成当前目录,MATLAB的路径搜索器MATLAB的路径搜索顺序:在命令窗口输入一个字符串abcd,MATLAB编辑器做如下顺序的操作:1.把abcd当成一个参数去检索;2.检查abcd是否是一个内置的函数;3.在默认目录下搜索文件名为:abcd.m的文件4.在搜索路径下的所有目录中搜索abcd.m如果存在相同的名称,第一个搜索到就停止改变搜索路径利用命令和File菜单选项可以修改编辑搜索路径,6.工作空间窗口,工作空间窗口显示当前内存中存在的变量及其数值,也就是以前运行过的变量及其结果,内存中存在的变量就是当前能使用的变量;可以利用clear命令清除内存变量可以利用who和whos两个指令查看内存变量的信息可以利用鼠标左键双击工作空间窗口中的变量打开窗口查看该变量的详细数据用户编写程序时一般首先清除当前内存中的变量信息,以免对自己的程序数据造成影响。(程序变量名输入错误或变量没有定义),7.MATLAB帮助系统,完善的帮助系统是任何应用软件必要的组成部分。MATLAB提供了相当丰富的帮助信息,同时也提供了获得帮助的方法。首先,可以通过桌面平台的【Help】菜单来获得帮助,也可以通过工具栏的帮助选项获得帮助。此外,MATLAB也提供了在命令窗口中的获得帮助的多种方法,在命令窗口中获得MATLAB帮助的命令及说明列于下表中。其调用格式为:命令+指定参数,Demo演示系统MATLAB主包和各个工具包都有很好的演示程序,该组演示程序采用交互式界面引导,操作方便。它有很好的演示示范作用,是其他书籍不能替代的,对学习和掌握MATLAB都非常重要。通过【Help】菜单选项或通过命令【Demos】都可以打开该演示系统,五、初识MATLAB,1.绘制正弦曲线和余弦曲线。x=0:0.5:360*pi/180;plot(x,sin(x),x,cos(x);2.求方程3x4+7x3+9x2-23=0的全部根。p=3,7,9,0,-23;%建立多项式系数向量x=roots(p)%求根3.求解线性方程组。a=2,-3,1;8,3,2;45,1,-9;b=4;2;17;x=inv(a)*b,第一章MATLAB语言入门,1.1常量与变量1.2标量、矩阵和向量1.3各种运算符1.4常用数学函数1.5MATLAB语句,1.1常量与变量,常量同其他计算机语言一样,MATLAB中使用的数据也可分为常量和变量。例如:3.11200.12e3l.2e25e312i它们都是合法的MATLAB常量,或者称为数值。MATLAB中的复数类型常量可直接写成手写格式,这是与其他计算机语言的明显不同之处。在MATLAB内部,每一个数据元素都是用双精度(Double,8字节)来表示和存储的,大约有16位有效数字。其数值有效范围约为10-30810+308,这样的取值范围对于绝大多数情况下的数值计算已经足够。,变量MATLAB中也是使用变量来保存信息。变量由变量名表示,变量的命名应遵循如下规则:变量名必须以字母开头变量名可以由字母、数字和下划线混和组成;但不包含标点符号和空格变量名区分字母大小写变量名的字符长度不应超过31个,其后的字符被忽略固定变量在MATLAB中还存在着一些系统默认的特殊变量,即在MATLAB语句中若出现固定变量名,则系统就将其赋予默认值。,注意:如果定义了与固定变量相同名字的变量,原始的特殊取值将会丢失,直至使用清除命令【clear命令】或重新启动MATALB,所以在使用中应避免重新定义这些固定变量。,变量和赋值语句,变量MATLAB的变量分为字符变量和数值变量两种,字符变量必须用单引号括起来MATLAB和其他高级语言不同的是,MATLAB使用变量时不需要预先对变量类型进行说明,MATLAB会自动根据所输入的数据来决定变量的数据类型和分配存储空间。变量的赋值MATLAB赋值语句有两种形式:(1)变量=表达式(2)表达式,MATLAB赋值语句有两种形式:(1)变量=表达式(2)表达式其中“表达式”是用运算符将有关运算量连接起来的式子,其结果是一个矩阵。注:第二种语句形式下,将表达式的值赋给MATLAB的永久变量ans。数值变量a=55.15b=3.1415+api+a;字符变量a=happynewyear,如果在语句的最后加分号,那么,MATLAB仅仅执行赋值操作,不再显示运算的结果。在一条语句中,如果表达式太复杂,一行写不下,可以加上三个小黑点(续行符)并按下回车键,然后接下去再写。例如下列语句:s=1-1/2+1/3-1/4+1/5-1/6+1/7-1/8+1/9-1/10+1/11-1/12;,MATLAB表达式算术表达式。运算符有:(加)、(减)、*(乘)、/(右除)、(左除)、(乘方)对于矩阵来说,左除和右除表示两种不同的除数矩阵和被除数矩阵的关系。关系表达式。运算符有:(大于)、=(大于或等于)、=(等于)、=(不等于)逻辑表达式。运算符有:b=2;c=3;x=5bc;a*ba+cc/bx=5.0002.0003.0002.0004.0001.500,1)、在命令窗口中输入,2)、语句生成,(1)用线性等间距生成向量矩阵(start:step:end)a=1:2:10a=13579,其中start为起始值,step为步长,end为终止值。当步长为1时可省略step参数;另外step也可以取负数。,(2)a=linspace(n1,n2,n)在线性空间上,行矢量的值从n1到n2,数据个数为n,缺省n为100。a=linspace(1,10,10)a=12345678910,(4)一些常用的特殊矩阵单位矩阵:eye(m,n);eye(m)零矩阵:zeros(m,n);zeros(m)一矩阵:ones(m,n);ones(m)对角矩阵:对角元素向量V=a1,a2,anA=diag(V)随机矩阵:rand(m,n)产生一个mn的均匀分布的随机矩阵,(3)a=logspace(n1,n2,n)在对数空间上,行矢量的值从10n1到10n2,数据个数为n,缺省n为50。这个指令为建立对数频域轴坐标提供了方便。a=logspace(1,3,3)a=101001000,eye(2,3)ans=100010zeros(2,3)ans=000000ones(2,3)ans=111111V=572;A=diag(V)A=500070002,eye(2)ans=1001zeros(2)ans=0000ones(2)ans=1111,注:如果已知A为方阵,则V=diag(A)可以提取A的对角元素构成向量V。,保存矩阵等数据信息,利用外部数据文件(*.mat)保存和装载矩阵创建的矩阵或其他变量存在于MATLAB环境中,只要不重新定义其数值就不改变,但是当退出MATLAB环境,重新启动MATLAB时其变量定义就不存在了。在MATLAB的运行过程中可以使用专用命令save和load来对矩阵数据以MAT文件格式将计算环境中的矩阵数据长期保留下来,以备以后使用。MAT文件(即扩展名为mat的文件)是MATLAB保存数据的一种标准格式的二进制文件。save命令:命令格式save路径文件名变量名load命令:命令格式load路径文件名,矩阵的下标,在MATLAB系统中,矩阵的元素是通过其行、列的标号来标示的,矩阵元素所处的行号和列号称为该元素的下标。矩阵的元素可以通过其下标来引用,A(k,l)即表示矩阵A第k行第l列的元素,k和l的取值从1开始。利用矩阵的下标不但可以得到矩阵的元素值,而且可以借助于矩阵的下标生成矩阵的子阵。命令格式为:BA(x,y),该命令由已定义的矩阵A,根据向量x指定的行和相量y指定的列生成一新的矩阵B。其中x是由A的行号组成的任意排列的行向量,y是由A的列号组成的任意排列的行向量。,矩阵的操作,1、矩阵下标:MATLAB通过确认矩阵下标,可以对矩阵进行插入子块,提取子块和重排子块的操作。A(m,n):提取第m行,第n列元素A(:,n):提取第n列元素A(m,:):提取第m行元素A(m1:m2,n1:n2):提取第m1行到第m2行和第n1列到第n2列的所有元素(提取子块)。A(:):得到一个长列矢量,该矢量的元素按矩阵的列进行排列矩阵扩展:如果在原矩阵中一个不存在的地址位置上设定一个数(赋值),则该矩阵会自动扩展行列数,并在该位置上添加这个数,而且在其他没有指定的位置补零。消除子块:如果将矩阵的子块赋值为空矩阵,则相当于消除了相应的矩阵子块。,2、矩阵的大小m,n=size(A,x):返回矩阵的行列数m与n,当x=1,则只返回行数m,当x=2,则只返回列数n。length(A)=max(size(A):返回行数或列数的最大值。rank(A):求矩阵的秩,a=123;345;m,n=size(a)m=2n=3,length(a)ans=3max(size(a)ans=3,rank(a)ans=2,3、利用help命令可了解矩阵操作函数:helpelmat,1.3各种运算符,1.4常用数学函数,MATLAB提供了几乎所有初等函数,包括三角函数、对数函数、指数函数和复数运算函数等。函数的调用格式为:函数名(变量)函数的变量即是MATLAB的矩阵变量,但函数的运算却是按数组的运算规则进行的,即函数运算的结果是将函数运算分别作用于函数变量(矩阵)的每一个元素。,MATLAB的常用数学函数,可以利用帮助命令:Helpelfun列出常用的基本数学函数,1.5MATLAB语句,MATLAB采用命令行式的表达式语言,每一个命令行就是一条语句,其格式与书写的数学表达式十分相近,非常容易掌握。用户在命令窗口中输入语句并按下回车键后,该语句就由MATLAB系统解释运行,并立即给出结果。MATLAB的语句采用如下两种形式之一:表达式(表达式的结果赋值给ans变量)变量表达式表达式由变量名、常量、函数和运算符构成,其中的变量名都应该是已经赋值过的变量。注意:前面已经讲过分号“;”运算符在语句中的作用,它可以控制结果的显示与否。,本节主要内容,MATLAB语言的特点和应用MATLAB软件环境及功能介绍MATLAB语言入门常量与变量标量、矩阵和向量各种运算符常用数学函数MATLAB语句形式,第二章MATLAB语言的数值运算,矩阵运算和数组运算关系运算和逻辑运算多项式及其运算线性方程组的解数值输出(显示)格式,一、矩阵运算和数组运算,MATLAB强大的数值运算是其突出的特点,四则运算与幂运算-矩阵加-矩阵减*-矩阵乘/-矩阵右除-矩阵左除-矩阵幂(乘方),.*-点乘(数组乘)./-点右除(数组右除).-点左除(数组左除).-点幂(数组幂或乘方),1.1矩阵的加减和数组的加减,矩阵加减和数组加减的运算效果是一致的,运算符也相同,没有区别参与运算的变量有两种情况:两个相同维数的矩阵相加减其中一个矩阵为标量(它们都是按照实际矩阵的加减运算规则进行的)举例,A=123;456;789;B=ones(3);%产生一个三阶全1方阵C1=A+B;%矩阵加C2=1+A;%标量和矩阵加C3=A+1;C2-C1;%矩阵减,结果应该为全零阵C3-C1;%矩阵减,结果应该为全零阵1-C1+A,1.2矩阵乘和数组乘,(一)矩阵乘矩阵乘和数组乘(点乘)的运算是不同的,运算符合也不同,一定要注意区分。矩阵乘条件:参与矩阵乘的两个矩阵必须满足矩阵乘法的规则即:CmnAmkBkn注:两个矩阵的顺序不能随意交换,否则不能满足维数关系或结果不正确。参与矩阵运算的两个矩阵其中一个可以是标量:标乘举例:,a=1122;3344;b=111;222;333;444;a*bans=171717373737b*a%交换顺序后不满足矩阵乘?Errorusing=mtimesInnermatrixdimensionsmustagree.,A=round(10*rand(3)+1;B=round(10*rand(3)+1;A*B-B*A%交换顺序后计算结果是不同的ans=206151-103-33-39-401713,1.2矩阵乘和数组乘,(二)数组乘数组乘也称为“点乘”参与数组乘的两个矩阵的维数必须是相等的其中一个矩阵可以是标量,和标乘的结果一致点乘的顺序可以交换,不影响计算结果数组乘的运算可以从向量的内积过程理解举例:(1)矩阵乘和数组乘的区别(方阵)(2)满足数组乘的矩阵不一定满足矩阵乘,a=111;222;333;b=eye(3);c=a*bc=111222333d=a.*b%可以看出结果的区别d=100020003e=b.*a%交换顺序并不影响计算结果e=100020003,分析下面程序段:x=0:0.01*pi:2*pi;y1=sin(x);y2=sin(2*x);y3=x*sin(x);程序是否能够得到希望的结果?,1.3矩阵除和数组除,(一)矩阵除矩阵除和数组除的运算完全不一样矩阵除分为矩阵左除和矩阵右除矩阵右除运算符“/”例如“B/A”,表示矩阵B右除A条件:两个矩阵的列数相等,或者除数矩阵是标量矩阵左除运算符“”例如“AB”,表示矩阵B左除A条件:两个矩阵的行数相等,或者除数矩阵是标量显然:矩阵除不能交换矩阵的顺序,如果A是一个非奇异方阵,那么AB和B/A对应A的逆与B的左乘和右乘;即分别等价于:B/A=BA-1和AB=A-1B。此时X=AB是矩阵方程AX=B的解这里的X具有与B相同的维数;同理矩阵方程XA=B的解是X=B/A。,如果A是一个非奇异方阵,那么AB和B/A对应A的逆与B的左乘和右乘;即分别等价于:B/A=BA-1和AB=A-1B。此时X=AB是矩阵方程AX=B的解这里的X具有与B相同的维数;同理矩阵方程XA=B的解是X=B/A。虽然非奇异矩阵的除法可以通过与矩阵的逆相乘实现但是从运行时间和精度来说都不如使用矩阵除法B/A中A可以为标量,B中各元素除以A示例,(二)数组除数组除同样可以分为左除和右除运算符:右除“./”左除“.”参与运算的两个矩阵必须是相同维数的矩阵数组除是两个矩阵对应元素间进行除法运算参与运算的矩阵可以是标量左除和右除的计算结果一样示例,思考下面程序:x=-4*pi:0.01*pi:4*pi;y1=sin(x);y2=y1/x;y3=y1./x;可以画出y2和y3的波形验证分析的结论。,(一)矩阵乘方矩阵乘方可以看作是矩阵乘法的扩充,参与运算的矩阵须是方阵运算符“”,使用格式“Ap”p为大于零的整数,表示p个矩阵A相乘,即“Ap=AAA.A”;p为小于零的整数,表示p个A的逆矩阵相乘,或者是p个矩阵A相乘的逆;p等于零,“Ap”的运算结果是与A同维的单位阵,1.4矩阵乘方和数组乘方,(二)数组乘方数组乘方是矩阵对应元素之间的运算运算符号:“.”使用格式:“A.B”其中A、B可以是两个同维的矩阵;也可以其中一个为标量。设p为标量,矩阵A、B分别记作:AaijB=bij,则各种情况下的解释如下:A.p=aijpA矩阵的p次方:A矩阵的每个元素的p次方形成新的矩阵;p.A=paijp的A次方:A矩阵的每个元素分别作为幂指数,形成新的矩阵A.B=aijbijA的B次方:对应位置上的元素分别组合进行幂运算,形成新的矩阵,分析下面程序段是否能够完成:画出信号sinx、sin2x、sinx2的波形x=0:0.01*pi:2*pi;y1=sin(x);y2=sin(2*x);y3=sin(x2);plot(x,y1,x,y2,x,y3),应该为:y3=sin(x.2);,1.5矩阵的转置,运算符:“”运算规则:若矩阵A的元素为实数,则与线性代数中矩阵的转置相同。若A为复数矩阵,则A转置后的元素由A对应元素的共轭复数构成。即为共轭转置;若仅希望转置,则用如下命令:“A.”。,1.6常用矩阵运算函数,det()函数det()函数用于求解方阵A行列式的值,其调用格式为:d=det(A)%将方阵A的行列式的值赋值给drank()函数rank()函数用于求解矩阵的秩,使用格式为:r=rank(A)%将矩阵A的秩赋值给rinv()函数inv()函数用于求解方阵的逆矩阵,使用格式为:d=inv(A)%将矩阵A的逆矩阵赋值给d,A为方阵,size()函数size()函数用于计算矩阵的行数和列数使用格式为:d=size(A)%将矩阵A的行数和列数组成的向量赋值给dm,n=size(A)%将矩阵A的行数赋值给m和列数赋值给nlength()函数length()函数用于计算矩阵的长度(函数和列数的较大者,行向量取列数)使用格式为:b=length(A)%将矩阵A的长度赋值给bb=max(size(A),prod()函数prod()函数用于实现矩阵元素的求积运算sum()函数sum()函数用于实现矩阵元素的求和运算max()函数max()函数用于求出矩阵元素的最大值fliplr()函数fliplr()函数用于实现矩阵矩阵的反折运算用于产生对称信号(偶函数)时非常有用举例:,除了数值运算以外MATLAB支持关系和逻辑运算2.1关系运算MATLAB的基本关系运算符为:(大于)=(大于等于)=),等于(=),不等于(=)。(8)逻辑与(b=1,4,9,16;d=a+b系统运行结果:d=261220,当两个多项式次数不同时,要用0补足例c=1,-5,0,1,-5;%四次多项式b=1,4,9,16;%三次多项式e=c+0,b%将三次多项式b前面加一个0%补足成四次多项式,再相加运算结果e=1-441011,3.3多项式的乘除,多项式的乘除运算就没有加减运算那么简单了,需要通过编程来实现,MATLAB中有相应的函数来实现,(1)多项式的相乘函数conv()格式Rconv(P1,P2)说明计算多项式A和B的乘积,若A的长度为m,B的长度为n,则R的长度为m+n-l(2)多项式的除法函数deconv()格式div,rest=deconv(A,B)说明计算多项式A除以多项式B,得到商多项式div,余数多项式rest。如果rest的元素全部为0,则表示多项式A可以整除多项式B。,例:计算多项式S3+2S2+3S+4与S3+4S2+9S+16的乘积。a=1234;b=14916;c=conv(a,b)c=162050758464结果为:c(S)=S6+6S5+20S4+50S3+75S2+84S+64用除法验证结果div,rest=deconv(d,a)div=14916rest=0000000结果rest为零向量,表示能够整除。结果和前面的计算一致,多项式数学形式的显示函数,函数poly2sym()格式p1=poly2sym(p,x)说明显示数学多项式的形式,例如:p=1,2,3,4;p=poly2sym(p,s)p=s3+2*s2+3*s+4,3.4多项式的根,多项式根的求解函数roots()格式r=roots(p)说明返回一个向量赋值给r(或ans),该向量是多项式p的根通过多项式的根可以构建多项式函数poly()格式ppoly(a)说明若a为向量r0r1r2r3r4,返回由向量元素为根的多项式,即(S-r0)(S-r1)(S-r2)(S-r3)(S-r4);若a为矩阵(方阵),则返回矩阵a的特征多项式。,例子:,r=12;p=poly(r);poly2sym(p,x)ans=x2-3*x+2roots(p)ans=21poly(ans)ans=1-32,多项式的根就是一元方程的解,例:求方程x4+7x3+9x-20=0的全部根。在MATLAB命令窗口输入:p=1,7,0,9,-20;%建立多项式系数向量x=roots(p)%求根,得到的结果是:x=-7.2254-0.4286+1.5405i-0.4286-1.5405i1.0826,通过poly和roots两个函数可以很方便地求出矩阵的特征多项式和特征根,a=zeros(2);a(1,1)=1;a(2,2)=2;aa=1002poly(a)ans=1-32roots(ans)ans=21,3.5导数和积分,对多项式的求导和积分运算通过函数polyder()和polyint()实现polyder()函数格式q=polyder(p)说明计算多项式的微分,返回多项式赋值给qpolyint()函数格式1q=polyint(p,k)说明计算多项式p的积分。其中k为q中的常数项值;为一个标量。格式2q=polyint(p)说明同上,但假设k0。,3.6多项式的求值,函数polyval()格式ypolyval(p,x)说明计算多项式p在x处的值,x可以是向量也可以是矩阵,并且当x为向量或矩阵时,该命令计算的是多项式在每个元素处的值示例:计算多项式项x2+2x+1即(x+1)2的值,p=121;%p(x)=x2+2x+1v=12;A=12;34;y1=polyval(p,1)y1=4,y2=polyval(p,v)y2=%求向量的值49y3=polyval(p,A)y3=%求矩阵的值491625,线性方程解的存在性判据:唯一解、无穷解、无解系数矩阵的秩、增广系数矩阵的秩、未知量个数线性方程组的求解问题是一个非常复杂的问题,有多种求解方法,这里我们作为对求解线性方程组的认识,介绍其基本的求解问题和求解方法。方程为:A*X=B,其中X为未知矩阵,A、B为系数矩阵方程的解为:X=inv(A)*B=AB方程为:X*A=B方程的解为:X=B*inv(A)=B/A以上解法中方程的系数矩阵A是非奇异阵,得到的是一个准确解。如果A不是非奇异阵,利用矩阵除法仍然可以得到一个解,不过不是准确解,是满足一定误差条件下的近似解(最小二乘解)。,四、线性方程组的解,例题:求解线性方程组,A=5,6,0,0,01,5,6,0,00,1,5,6,00,0,1,5,60,0,0,1,5B=1,0,0,0,1.r_A=rank(A)r_AB=rank(A,B)X=ABA*X-B,A=5r_AB=5X=2.2662-1.72181.0571-0.59400.3188ans=1.0e-015*-0.4441-0.6661-0.222000,A=1,1,-3,-13,-1,-3,41,5,-9,8B=1,4,0.r_A=rank(A)r_AB=rank(A,B)X=ABA*X-B,A=1,-2,3,-13,-1,5,-32,1,2,-2B=1,2,3.r_A=rank(A)r_AB=rank(A,B)X=ABA*X-B,五、数值输出(显示)格式,在MATLAB内部,所有的数据存储都是相同,只是显示格式的不同,带来不同的显示结果,每一个元素都是用双精度来表示和存储的,大约有16位有效数字。其值有效范围约为1030810308数值显示格式任何MATLAB语句的执行结果都可以在屏幕上显示,同时赋值给指定的变量没有指定变量时,赋值给一个特殊变量ans数据的显示格式由format命令控制MATLAB总是以双字长浮点数(双精度)来执行所有的运算,数值显示格式Format命令如果结果为整数,则显示没有小数;如果结果不是整数,则输出形式有:formatshort:短格式(5位定点数)99.1253formatlong:长格式(15位定点数)99.12345678900000formatshorte:短格式e方式9.9123e+001formatlonge:长格式e方式9.912345678900000e+001formatbank:2位十进制(小数部分)99.12formathex:十六进制格式formatrat:有理数格式,MATLAB的符号运算,matlab不仅具有数值运算功能,还开发了在matlab环境下实现符号计算的工具包SymbolicMathToolbox,符号运算的功能,符号表达式、符号矩阵的创建符号的算术运算符号表达式的简化和格式化符号微积分运算符号函数中的变量符号函数的可视化,一、符号运算的基本操作,什么是符号运算与数值运算的区别数值运算中必须先对变量赋值,然后才能参与运算。符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达。,特点:运算对象可以是没赋值的符号变量可以获得任意精度的解SymbolicMathToolbox符号运算工具包通过调用Maple软件实现符号计算的。maple软件主要功能是符号运算,它占据符号软件的主导地位。,2.符号变量与符号表达式,符号变量的声明sym()函数和syms()函数例如:x=sym(x)symsabcxyx符号表达式f=sym(a*x2+b*x+c)符号方程和符号表达式类似只是定义中带等号,符号方程和符号表达式类似只是定义中带等号例:f1=sym(ax2+bx+c)二次三项式f2=sym(ax2+bx+c=0)方程符号表达式或符号方程可以赋给符号变量,以后调用方便;也可以不赋给符号变量直接参与运算,3.符号矩阵的创建数值矩阵A=1,2;3,4A=a,b;c,d不识别用matlab函数sym创建矩阵(symbolic的缩写)命令格式:A=sym()符号矩阵内容同数值矩阵需用sym指令定义需用标识,例如:A=sym(a,2*b;3*a,0)A=a,2*b3*a,0这就完成了一个符号矩阵的创建。注意:符号矩阵的每一行的两端都有方括号,这是与matlab数值矩阵的一个重要区别。,符号矩阵的修改,指令修改用A(,)=new来修改。用A1=subs(A,old,new)来修改,例如:A=sym(a,2*b;3*a,0);A(2,2)=4*bA=a,2*b3*a,4*b,A1=subs(A,c,b)A1=a,2*c3*a,4*c,将数值矩阵转化为符号矩阵函数调用格式:sym(A)A=1/3,2.5;1/0.7,2/5A=0.33332.50001.42860.4000sym(A)ans=1/3,5/210/7,2/5,符号矩阵与数值矩阵的转换,将符号常量矩阵转化为数值矩阵函数调用格式:eval(A)A=1/3,2.5;1/0.7,2/5;A=sym(A)A=1/3,5/210/7,2/5B=eval(A)B=0.33332.50001.42860.4000注:也可以使用double()函数进行转换。,二、符合函数中的变量,变量替换subs(f,old,new)默认变量,符号表达式和符号矩阵的运算定义了符号表达式和符号矩阵后,就可以进行运算了,运算方法与数值计算中的运算符和基本函数的使用方法基本相同。但要保证都是符号表达式或符号矩阵,也就是利用sym()等命令创建的符号表达式或矩阵,三、符号运算,例1:f=2*x2+3*x-5;g=x2+x-7;symsxf=2*x2+3*x-5;g=x2+x-7;h=f+gh=3*x2+4*x-12例2:f=cos(x);g=sin(2*x);symsxf=cos(x);g=sin(2*x);f/g+f*gans=cos(x)/sin(2*x)+cos(x)*sin(2*x),符号矩阵的运算也类似,例3:A=sym(a,2*b;3*a,0);B=sym(2*a,c;b,2*c);C=A+BC=3*a,2*b+c3*a+b,2*csin(A)ans=sin(a),sin(2*b)sin(3*a),0,diff(f)对缺省变量求微分diff(f,v)对指定变量v求微分diff(f,v,n)对指定变量v求n阶微分int(f)对f表达式的缺省变量求积分int(f,v)对f表达式的v变量求积分int(f,v,a,b)对f表达式的v变量在(a,b)区间求定积分,3.符号微积分与积分变换,int(被积表达式,积分变量,积分上限,积分下限)定积分,缺省时为不定积分,例.计算二重不定积分,F=int(int(x*exp(-x*y),x),y)F=1/y*exp(-x*y),4.符号代数方程求解*,matlab符号运算能够解一般的线性方程、非线性方程及一般的代数方程、代数方程组。当方程组不存在符号解时,又无其他自由参数,则给出数值解。命令格式:solve(f)求一个方程的解Solve(f1,f2,fn)求n个方程的解,例1.ax2+bx+c=0求解f=sym(a*x2+b*x+c);或f=sym(a*x2+b*x+c=0);solve(f)对缺省变量x求解ans=1/2/a*(-b+(b2-4*a*c)(1/2)1/2/a*(-b-(b2-4*a*c)(1/2),计算机格式,一般格式,例2.符号方程cos(x)=sin(x)求解f1=solve(cos(x)=sin(x)f1=1/4*pi,solve(f,b)对指定变量b求解ans=-(a*x2+c)/x,例3.解方程组x+y+z=1x-y+z=22x-y-z=1g1=x+y+z=1,g2=x-y+z=2,g3=2*x-y-z=1f=solve(g1,g2,g3)f=solve(x+y+z=1,x-y+z=2,2*x-y-z=1),f=x:1x1symy:1x1symz:1x1symf.xans=2/3x,y,z=solve(x+y+z=1,x-y+z=2,2*x-y-z=1)x=2/3y=-1/2z=5/6,5.符号微分方程求解用一个函数可以方便地得到微分方程的符号解符号微分方程求解指令:dsolve命令格式:dsolve(f,g)f微分方程,可多至12个微分方程的求解;g为初始条件默认自变量为x,可任意指定自变量t,u等微分方程的各阶导数项以大写字母D表示,y1,y2=dsolve(x1,x2,xn)返回微分方程的解,一阶微分方程dsolve(Dx=y,Dy=-x,x(0)=0,y(0)=1)ans:x(t)=sin(t),y(t)=cos(t)x,y=dsolve(Dx=y,Dy=-x,x(0)=0,y(0)=1)二阶微分方程dsolve(D2y=-a2*y,y(0)=1,Dy(pi/a)=0)ans=cos(a*x),例3.,y=dsolve(D2y+2*Dy+2*y=0,y(0)=1,Dy(0)=0)y=exp(-x)*cos(x)+exp(-x)*sin(x)ezplot(y)方程解y(t)的时间曲线图,求该方程的解,四、符合表达式简化和格式化,simplify()函数simple()函数pretty()函数,MATLAB的绘图功能,matlab具有非常完善的绘图功能,能够描绘二维、三维的多种图形,二维曲线图形的绘制,单个向量画图x=1,3,5,2,6,3,9,7,5,3,1;plot(x)在这种情况下,当x是实向量时,以该向量元素的下标为横坐标,元素值为纵坐标画出一条连续曲线,这实际上是绘制折线图两个向量画图X=1:5;Y=0.7,0.5,0.2,-0.4,0.6;plot(X,Y)%画连线图plot(X,Y,*)%画散点图,绘制单根二维曲线plot函数的基本调用格式为:plot(x,y)其中x和y为长度相同的向量,分别用于存储x坐标和y坐标数据。例如:x=-3:0.1:3;y=x.3-x+1;plot(x,y),例:在0x2区间内,绘制曲线y=2e-0.5xcos(4x)程序如下:x=0:pi/100:2*pi;y=2*exp(-0.5*x).*cos(4*pi*x);plot(x,y),绘制多根二维曲线调用格式为:plot(x1,y1,x2,y2,xn,yn)x1和y1,x2和y2,xn和yn分别组成一组向量对,每一组向量对的长度可以不同。每一向量对可以绘制出一条曲线,这样可以在同一坐标内绘制出多条曲线。例如:x=linspace(0,2*pi,30);y=sin(x);z=2*cos(x);plot(x,y,x,z),具有两个纵坐标标度的图形在MATLAB中,如果需要绘制出具有不同纵坐标标度的两个图形,可以使用plotyy绘图函数。调用格式为:plotyy(x1,y1,x2,y2)其中x1,y1对应一条曲线,x2,y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于x1,y1数据对,右纵坐标用于x2,y2数据对。举例:,例:用不同标度在同一坐标内绘制曲线y1=0.2e-0.5xcos(4x)和y2=2e-0.5xcos(x)。程序如下:x=0:pi/100:2*pi;y1=0.2*exp(-0.5*x).*cos(4*pi*x);y2=2*exp(-0.5*x).*cos(pi*x);plotyy(x,y1,x,y2);,二维曲线绘图的修饰,plot(x,y,s)plot(x1,y1,s1,x2,y2,s2)s、s1、s2为用来指定线型、色彩、数据点形的选项字符串;可以缺省使用确认值各参数选项取值见下表例如,b-.表示蓝色点划线,y:d表示黄色虚线并用菱形符标记数据点。当选项省略时,MATLAB规定,线型一律用实线,颜色将根据曲线的先后顺序依次。,示例x=0:pi/20:2*pi;y1=sin(x);y2=cos(x);plot(x,y1)plot(x,y2)plot(x,y1,x,y2)plot(x,y1,x,y2)%不加option选项,函数会自动分配颜色plot(x,y1,r:,x,y2,md)按设定格式输出曲线,例在同一坐标内,分别用不同线型和颜色绘制曲线y1=0.2e-0.5xcos(4x)和y2=2e-0.5xcos(x),标记两曲线交叉点。程序如下:x=linspace(0,2*pi,1000);y1=0.2*exp(-0.5*x).*cos(4*pi*x);y2=2*exp(-0.5*x).*cos(pi*x);k=find(abs(y1-y2)x=0:0.2:10;y=exp(-0.3*x).*sin(2*x);stem(x,y)输出图形:,的图形,T取0.2,二维图形的修饰,坐标轴范围的调整axis(xmin,xmax,ymin,ymax)坐标控制axis函数的调用格式为:axis(xminxmaxyminymaxzminzmax)axis函数功能丰富,常用的格式还有:axisequal:纵、横坐标轴采用等长刻度。axissquare:产生正方形坐标系(缺省为矩形)。axisauto:使用缺省设置。axisoff:取消坐标轴。axison:显示坐标轴。,图形标注有关图形标注函数的调用格式为:title(图形名称)xlabel(x轴说明)ylabel(y轴说明)text(x,y,图形说明)legend(string1,string2,)添加图例gtext(string)说明:在鼠标给定的位置上写出由string给出的字符串。这种标注对不同曲线标注时非常有效。给坐标加网格线用grid命令来控制。gridon/off命令控制是画还是不画网格线,不带参数的grid命令在两种状态之间进行切换。给坐标加边框用box命令来控制。boxon/off命令控制是加还是不加边框线,不带参数的box命令在两种状态之间进行切换。,(1)创建或打开图形窗口figure命令:每调用一次就打开一个新的图形窗口,作为当前窗口figure(n)命令:创建或打开第n个图形窗口,使之成为当前窗口clf命令:清除当前图形窗口中的所有内容cla命令:清除当前图形窗口中的图形,保留其坐标这样利用figure命令可以将不同函数的曲线显示在不同的窗口上同时观察。,图形窗口的控制,(2)图形重叠holdon命令:保留当前窗口的图形holdoff命令:解除holdon命令默认情况下,plot命令在执行时首先将当前图形窗口清屏,看到的是最后一条plot命令绘出的图形,若执行了holdon命令则可以在保留原来图形的基础上绘制图形,实现了多个图形绘制在一个图形窗口上,不同于打开新图形窗口的办法。(3)图形窗口分割subplot(m,n,p)将当前窗口分割成m行、n列,并且现在在其中的第p个区域绘图。各个绘图区域以“从左到右,先上后下”的原则来编号。,程序如下:clear;x=0:0.1:2*p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论