已阅读5页,还剩280页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
22.05.2020,.,1,开始,%输入自变量x的行矩阵f1=sin(x);%输出因变量f1的行矩阵f2=cos(x);%输出因变量f2的行矩阵plot(x,f1),x,f2);%调用绘图命令一次画出两条曲线.例1-2求方程3x4+7x3+9x2-23=0的全部根:p=3,7,9,0,-23;%建立多项式系数向量x=roots(p)%调用求根命令求出方程的根.,22.05.2020,.,10,例1-3求f=xlog(1+x)在0.1上的定积分S解S=quad(x.*log(1+x),0,1)例1-4求解线性方程组:Ax=b。其中A=2,-3,1;8,3,2;45,1,-9;b=4;2;17;解x=inv(A)*b注意:线性方程组的解也可写成x=ab,1.1.4Matlab操作示例,22.05.2020,.,11,1.2Matlab的运行环境与安装,硬件环境:(1)CPU奔腾以上(2)内存256M以上(3)硬盘40G以上(4)CD-ROM驱动器和鼠标。软件环境:(1)Windows98/NT/2000或WindowsXP(2)其他软件根据需要选用,1.2.1Matlab的运行环境,22.05.2020,.,12,1.2.2Matlab的安装,安装Matlab6.5系统,需运行系统自带的安装程序setup.exe,一般只要用鼠标双击安装图标,就会启动安装程序,你只需按照安装提示正确输入(或粘贴)安装序列号后点击确认键,并按提示修改安装路径(或默认安装到C盘)就能完成安装。安装完毕后,在开始-程序-Matlab.exe菜单中,双击Matlab图标,即可运行程序。,22.05.2020,.,13,1Matlab系统的启动与一般的Windows程序一样,启动Matlab系统有3种常见方法:(1)使用Windows“开始”菜单,找到Matlab.exe图标,然后双击。(2)运行Matlab系统启动程序matlab.exe。(3)利用桌面快捷方式。,1.3.1启动与退出Matlab集成环境,22.05.2020,.,14,首次启动Matlab时,展现在屏幕上的界面为Matlab的默认界面.默认界面中主要有六个窗口,其分布如下图所示。,1.3.1启动与退出Matlab集成环境,默认设置下主要窗口布局,22.05.2020,.,15,从默认界面中可切换出左边两个主要窗口如下图所示。,1.3.1启动与退出Matlab集成环境,22.05.2020,.,16,Matlab6.5的集成环境包括Matlab主窗口、命令窗口(CommandWindow)、工作空间窗口(Workspace)、命令历史窗口(CommandHistory)、当前目录窗口(CurrentDirectory)和启动平台窗口(LaunchPad)。,1.3.1启动与退出Matlab集成环境,工作空间,命令历史,命令窗口,22.05.2020,.,17,命令窗口(CommandWindow),工作空间(Workspace),命令历史(CommandHistory),当前目录(CurrentDirectory),主窗口,22.05.2020,.,18,2Matlab系统的退出要退出Matlab系统,也有3种常见方法:(1)在Matlab主窗口File菜单中选择ExitMatlab命令。(2)在Matlab命令窗口输入Exit或Quit命令。(3)单击Matlab主窗口的“关闭”按钮。,1.3.1启动与退出Matlab集成环境,22.05.2020,.,19,Matlab主窗口是Matlab的主要工作界面。主窗口除了嵌入一些子窗口外,还主要包括菜单栏和工具栏。1菜单栏在Matlab6.5主窗口的菜单栏,共包含File、Edit、View、Web、Window和Help6个菜单项。(1)File菜单项:File菜单项实现有关文件的操作。(2)Edit菜单项:Edit菜单项用于命令窗口的编辑操作。(3)View菜单项:View菜单项用于设置Matlab集成环境的显示方式。(4)Web菜单项:Web菜单项用于设置Matlab的Web操作。(5)Window菜单项:主窗口菜单栏上的Window菜单,只包含一个子菜单Closeall,用于关闭所有打开的编辑器窗口,包括M-file、Figure、Model和GUI窗口。(6)Help菜单项:Help菜单项用于提供帮助信息。,1.3.2主窗口及子窗口,22.05.2020,.,20,2工具栏Matlab6.5主窗口的工具栏共提供了10个命令按钮。这些命令按钮均有对应的菜单命令,但比菜单命令使用起来更快捷、方便。命令窗口是Matlab的主要交互窗口,用于输入命令并显示除图形以外的所有执行结果。Matlab命令窗口中的“”为命令提示符,表示Matlab正在处于准备状态。在命令提示符后键入命令并按下回车键后,Matlab就会解释执行所输入的命令,并在命令后面给出计算结果。,1.3.2主窗口及子窗口,22.05.2020,.,21,在通常的编程中,一个行只输入一条独立的命令,命令行以回车结束。但一行也可以输入若干条命令,但各命令之间必须以逗号分隔,互相独立的命令也可用分号分隔。例如p=15,m=35,n=20p=15;m=35;n=20在编程中,逗号表示换列,相当于一个空格;分号表示换行,分号与回车的作用都是换行.如果一个命令行很长,一个物理行之内写不下,可以在第一个物理行之后加上3个小黑点“”并按下回车键,然后接着下一个物理行继续写命令的其他部分。3个小黑点称为续行符,即把后面的物理行看作该行的逻辑继续。在Matlab里,有很多的控制键和方向键可用于命令行的编辑。,1.3.3Matlab编程输入法,22.05.2020,.,22,工作空间是Matlab用于存储各种变量和结果的内存空间。在该窗口中显示工作空间中所有变量的名称、大小、字节数和变量类型说明,可对变量进行观察、编辑、保存和删除。如果想要把工作空间中的变量及其数据存成文件,只需键入命令:Savefilename.matvariblename不写变量名将会把工作空间中全部数据保存到你所给的文件内.,1.3.4工作空间窗口,22.05.2020,.,23,1当前目录窗口当前目录是指Matlab运行文件时的工作目录,只有在当前目录或搜索路径下的文件、函数可以被运行或调用。在当前目录窗口中可以显示或改变当前目录,还可以显示当前目录下的文件并提供搜索功能。将用户目录设置成当前目录也可使用cd命令。例如,将用户目录c:mydir设置为当前目录,可在命令窗口输入命令:cdc:mydir,1.3.5当前目录窗口和搜索路径,22.05.2020,.,24,2Matlab的搜索路径当用户在Matlab命令窗口输入一条命令后,Matlab按照一定次序寻找相关的文件。基本的搜索过程是:(1)检查该命令是不是一个变量。(2)检查该命令是不是一个内部函数。(3)检查该命令是否当前目录下的M文件。(4)检查该命令是否Matlab搜索路径中其他目录下的M文件。,1.3.5当前目录窗口和搜索路径,22.05.2020,.,25,用户可以将自己的工作目录列入Matlab搜索路径,从而将用户目录纳入Matlab系统统一管理。设置搜索路径的方法有:(1)用path命令设置搜索路径。例如,将用户目录c:mydir加到搜索路径下,可在命令窗口输入命令:path(path,c:mydir)(2)用对话框设置搜索路径在Matlab的File菜单中选SetPath命令或在命令窗口执行pathtool命令,将出现搜索路径设置对话框。通过AddFolder或AddwithSubfolder命令按钮将指定路径添加到搜索路径列表中。在修改完搜索路径后,则需要保存搜索路径。,1.3.5当前目录窗口和搜索路径,22.05.2020,.,26,在默认设置下,历史记录窗口中会自动保留自安装起所有用过的命令的历史记录,并且还标明了使用时间,从而方便用户查询。而且,通过双击命令可进行历史命令的再运行。如果要清除这些历史记录,可以选择Edit菜单中的ClearCommandHistory命令。,1.3.6命令历史记录窗口,22.05.2020,.,27,Matlab6.5的启动平台窗口可以帮助用户方便地打开和调用Matlab的各种程序、函数和帮助文件。Matlab6.5主窗口左下角还有一个Start按钮,单击该按钮会弹出一个菜单,选择其中的命令可以执行Matlab产品的各种工具,并且可以查阅Matlab包含的各种资源。,1.3.7启动平台窗口和Start按钮,22.05.2020,.,28,1.4Matlab帮助系统,进入帮助窗口可以通过以下3种方法:(1)单击Matlab主窗口工具栏中的Help按钮。(2)在命令窗口中输入helpwin、helpdesk或doc。(3)选择Help菜单中的“MatlabHelp”选项。,1.4.1帮助窗口,1.4.2帮助命令,Matlab帮助命令包括help、lookfor以及模糊查询1help命令在Matlab6.5命令窗口中直接输入help命令将会显示当前帮助系统中所包含的所有项目,即搜索路径中所有的目录名称。同样,可以通过help加函数名来显示该函数的帮助说明。,22.05.2020,.,29,2lookfor命令help命令只搜索出那些关键字完全匹配的结果,lookfor命令对搜索范围内的M文件进行关键字搜索,条件比较宽松。lookfor命令只对M文件的第一行进行关键字搜索。若在lookfor命令加上-all选项,则可对M文件进行全文搜索。3模糊查询Matlab6.0以上的版本提供了一种类似模糊查询的命令查询方法,用户只需要输入命令的前几个字母,然后按Tab键,系统就会列出所有以这几个字母开头的命令。,1.4.2帮助命令,22.05.2020,.,30,在帮助窗口中选择演示系统(Demos)选项卡,然后在其中选择相应的演示模块,或者在命令窗口输入Demos,或者选择主窗口Help菜单中的Demos子菜单,打开演示系统。,1.4.3演示系统,在MathWorks公司的主页()上可以找到很多有用的信息,国内的一些网站也有丰富的信息资源。,1.4.4远程帮助系统,22.05.2020,.,31,第二章Matlab语言基础,2.1Matlab的工作环境,2.2Matlab的变量及其命名规则,2.3Matlab矩阵命令及其变换,2.4Matlab常用数学函数,2.5Matlab矩阵的运算与分解,2.6Matlab的逻辑运算、条件语句与循环控制语句,22.05.2020,.,32,在MATLAB命令窗口下进行基本数学运算,只需将运算式直接打入提示号()之後,并按入Enter键即可。例如在命令窗口中键入:(10*19+2/4-34)/2*3,回车后可得:ans=234.7500MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案,并显示其数值屏幕上。如果在上述的例子结尾加上分号”;”,则计算结果不会显示在指令视窗上,要得知计算值只须键入该变数值即可.,2.1.1Matlab的命令窗口计算输入,2.1Matlab的工作环境,22.05.2020,.,33,MATLAB可以将计算结果以不同的精确度的数字格式显示,我们可以在指令视窗上的功能选单上的Options下选NumericalFormat,或者直接在指令视窗键入以下的各个数字显示格式的指令。formatshort(这是默认的)MATLAB利用了二个游标键可以将所下过的指令叫回来重覆使用。按下则前一次指令重新出现,之后再按Enter键,即再执行前一次的指令。而键的功用则是往后执行指令。其它在键盘上的几个键如,Delete,Insert,其功能则显而易见,试用即知,无须多加说明。当要暂时执行作业系统(例如Dos)的指令而还要执行MATLAB,可以利用!加上原作业系统的指令,例如!dir,!formata:。,2.1.2Matlab的数字格式,22.05.2020,.,34,Ctrl-C(即同时按Ctrl及C二个键)可以用来中止执行中的MATLAB的工作。有三种方法可以结束MATLAB1.exit2.quit3.直接关闭MATLAB的命令视窗(Commandwindow),2.1.3Matlab的退出,22.05.2020,.,35,1.变量名的大小写是敏感。2.变量的第一个字符必须为英文字母,而且不能超过31个字符。3.变量名可以包含下连字符、数字,但不能为空格符、标点。4.为读取方便,变量名尽量采用首写字母为大写的英文单词,避免和库函数名冲突.,2.2.1变量,2.2Matlab的变量及其命名规则,22.05.2020,.,36,ans预设的计算结果的变量名eps正极小值esp=2.2204e-16pi内建的值inf或值无限大NaN无法定义一个数目(1/0)i或j虚数单位i=j=sqrt(-1)nargin函数输入参数个数nargout函数输出参数个数realmax最大的正实数realmin最小的正实数flops浮点运算次数,2.2.2预定义的变量,22.05.2020,.,37,2.3Matlab矩阵命令及其变换,MATLAB书写表达式的规则与“手写算式”差不多相同。如果一个指令过长可以在结尾加上.(代表此行指令与下一行连续),例如键入3*.6%求3与6的乘积运行可得结果ans=18,2.3.1Matlab的赋值语句表达式,22.05.2020,.,38,2.3.2矩阵(数组)的创建格式,格式一:手工输入3行4列矩阵;A=1,2,3,4;-1,5,3,6;2,0,3,7;格式二:给定步长自动生成行矩阵;B=1:0.1:2;%行矩阵也叫数组格式三:用随机命令自动生成mn矩阵;C=rand(m,n);格式四:调用等距插值命令生成行矩阵;D=linspace(a,b,n);,22.05.2020,.,39,1全零矩阵的生成:A=zeros(m,n)2全1矩阵的生成:B=ones(m,n);3.单位矩阵的生成:C=eye(n);4.对角矩阵的生成:D=diag(1,2,3,4);5.hilbert矩阵的生成:E=hilb(n)6.魔方矩阵的生成:F=magic(n);,2.3.3特殊矩阵的表示与简单运算,22.05.2020,.,40,矩阵的基本运算法则,2.3.3特殊矩阵的表示与简单运算,22.05.2020,.,41,数组的基本运算法则,2.3.3特殊矩阵的表示与简单运算,22.05.2020,.,42,Matlab矩阵变换操作示例(一),clearA=rand(5)%生成一个5阶随机矩阵;A1=A(1:3,2:4);%取出A中由1,2,3行,2,3,4列构成的子矩阵A2=A(5,4,3,2,1,:);%对A中的行重新排序;A(1,2,3,:)=;%删除A的1,2,3行;A(:,1,5)=;%删除A的1,5列;A(1,2,3,:)=A(2,3,1,:);%置换A的1,2,3行;A3=A(:);%逐列排序把A拉成一个列向量;A(:)=B;%把B中的元素按列依次赋给A;注:要求A与B的元素一样多,但行数可以不相等;,2.3.3特殊矩阵的表示与简单运算,22.05.2020,.,43,Matlab矩阵变换操作示例(二),1.按矩阵形式以矩阵B为块元素生成分块矩阵:A=repmat(B,n,m);2.把矩阵A的第i行的s倍加到第j行:A(j,:)=A(j,:)+A(i,:)*s;3.交换A的第i列与第j列:A(:,i,j)=A(:,j,i);4.元素重排:按列元次序把m*n个元素的矩阵排成nm矩阵:B=reshape(A,n,m)5.矩阵合成:C=cat(1,A1,A2);D=cat(2,A1,A2);,2.3.3特殊矩阵的表示与简单运算,22.05.2020,.,44,第三章Matlab数值计算,3.5多项式运算,3.6插值与拟合,3.4随机函数rand和randn,3.1Matlab常用数学函数,3.2Matlab矩阵的运算与分解,3.3Matlab的逻辑运算、条件语句与循环控制语句,3.7数值积分,3.8常微分方程数值解,22.05.2020,.,45,3.1MATLAB常用数学函数,3.1.1三角函数,注:只要给x赋予实值或复值,运行可输出函数值,例:sin(pi/3),cos(5),但X一般取复数矩阵.,22.05.2020,.,46,3.1.2双曲函数,注:只要给x赋予实值,运行可输出函数值例:tanh(-2),asech(-3),但X通常取矩阵.,22.05.2020,.,47,功能正弦函数与双曲正弦函数格式Y=sin(X)%计算参量X(可以是向量、矩阵,元素可以是复数)中每一个角度分量的正弦值Y,所有分量的角度单位为弧度。Y=sinh(X)%计算参量X的双曲正弦值Y。,3.1.3.1三角函数与双曲函数的操作,函数sin、sinh,22.05.2020,.,48,几点补充说明,(1)sin(pi)并不是零,而是与浮点精度有关的无穷小量eps,因为pi仅仅是精确值浮点近似的表示值而已;(2)对于复数Z=x+iy,函数的定义为:sin(x+iy)=sin(x)*cos(y)+i*cos(x)*sin(y);,;,22.05.2020,.,49,例2-1x=-pi:0.01:pi;plot(x,sin(x)x=-5:0.01:5;plot(x,sinh(x)图形结果为图2-1。,正弦函数与双曲正弦函数的图象,3.1.3.1三角函数与双曲函数的操作,22.05.2020,.,50,函数asin、asinh,功能反正弦函数与反双曲正弦函数格式Y=asin(X)%返回参量X(可以是向量、矩阵)中每一个元素的反正弦函数值Y。若X中有的分量处于-1,1之间,则Y=asin(X)对应的分量处于-/2,/2之间,若X中有分量在区间-1,1之外,则Y=asin(X)对应的分量为复数。Y=asinh(X)%返回参量X中每一个元素的反双曲正弦函数值Y,3.1.3.1三角函数与双曲函数的操作,22.05.2020,.,51,反正弦函数与反双曲正弦函数的定义为:,反正弦函数与反双曲正弦函数的图象,例2-2x=-1:.01:1;plot(x,asin(x)x=-5:.01:5;plot(x,asinh(x)图形结果为图2-2。,22.05.2020,.,52,函数cos、cosh,功能余弦函数与双曲余弦函数格式Y=cos(X)%计算参量X(可以是向量、矩阵,元素可以是复数)中每一个角度分量的余弦值Y,所有角度分量的单位为弧度。我们要指出的是,cos(pi/2)并不是精确的零,而是与浮点精度有关的无穷小量eps,因为pi仅仅是精确值浮点近似的表示值而已。Y=sinh(X)%计算参量X的双曲余弦值Y,3.1.3.1三角函数与双曲函数的操作,22.05.2020,.,53,若X为复数z=x+iy,则函数定义为:cos(x+iy)=cos(x)*cos(y)+i*sin(x)*sin(y),,例2-3x=-pi:0.01:pi;plot(x,cos(x)x=-5:0.01:5;plot(x,cosh(x)图形结果为图2-3。,余弦函数与双曲余弦函数图,22.05.2020,.,54,函数acos、acosh,功能反余弦函数与反双曲余弦函数格式Y=acos(X)%返回参量X(可以是向量、矩阵)中每一个元素的反余弦函数值Y。若X中有的分量处于-1,1之间,则Y=acos(X)对应的分量处于0,之间,若X中有分量在区间-1,1之外,则Y=acos(X)对应的分量为复数。Y=asinh(X)%返回参量X中每一个元素的反双曲余弦函数Y,3.1.3.1三角函数与双曲函数的操作,22.05.2020,.,55,反余弦函数与反双曲余弦函数定义为:,例2-4x=-1:.01:1;plot(x,acos(x)x=-5:.01:5;plot(x,acosh(x)图形结果为图2-4。,反余弦函数与反双曲余弦函数,22.05.2020,.,56,3.1.4指数函数、对数函数及复函数,例:exp(-2-5i),abs(3+4i),imag(1+2i)conj(-1+8i),complex(4,5),log(-1+3i);,22.05.2020,.,57,3.1.4.1指数函数exp(x),功能以e为底数的指数函数格式Y=exp(X)%对参量X的每一分量,求以e为底数的指数函数Y。X中的分量可以为复数。对于复数分量如,z=x+iy,则相应地计算式为:ez=ex*(cos(y)+i*sin(y)。例2-5A=-1.9,-0.2,3.1415926,5.6,7.0,2.4+3.6i;Y=exp(A)计算结果为:Y=1.0e+003*Columns1through40.00010.00080.02310.2704Columns5through61.0966-0.0099-0.0049i,22.05.2020,.,58,矩阵按特征根取值的指数函数expm(A),功能求方阵的对角形以e为底数的指数函数格式Y=expm(X)%计算以e为底数、x的每一个特征根为指数的指数函数值矩阵。说明该函数为一内建函数,它有三种计算算法:(1)使用文件expm1.m中的用比例法与二次幂算法得到的Pad近似值;(2)使用Taylor级数近似展开式计算,这种计算在文件expm2.m中。但这种一般计算方法是不可取的,通常计算是缓慢且不精确的;(3)在文件expm3.m中,先是将矩阵对角线化,再把函数计算出相应的的特征向量,最后转换过来。但当输入的矩阵没有与矩阵阶数相同的特征向量个数时,就会出现错误。,3.1.4.1指数函数exp(x),22.05.2020,.,59,Expm(A)的计算原理,%expm(A)的计算分两步:(1)用命令:V,D=eig(A),直接求出的特征根和特征向量,给出分解式:A=V*D/V(2)在分解式中只对对角矩阵D中的特征根取指数函数值,也就是expm(A)=V*diag(exp(diag(D)/V,3.1.3.1指数函数exp(x),22.05.2020,.,60,A=hilb(4);%生成一个4阶xilbert矩阵Y=expm(A)计算结果为:Y=3.25061.20680.83550.64171.20681.74030.54170.42880.83550.54171.41000.33180.64170.42880.33181.2729,expm(A)应用举例,3.1.4.1指数函数exp(x),22.05.2020,.,61,对数函数log(x)的命令应用,功能自然对数,即以e为底数的对数。格式Y=log(X)%对参量X中的每一个元素计算自然对数。其中X中的元素可以是复数与负数,但由此可能得到意想不到的结果。若z=x+i*y,则log对复数的计算如下:log(z)=log(abs(z)+i*atan2(y,x)例2-6下面的语句可以得到无理数的近似值:Pi=abs(log(-1)计算结果为:Pi=3.1416,3.1.4.2对数函数log(x),22.05.2020,.,62,方阵的对数函数logm(X),设A有n个特征向量构成矩阵V,即有V,D=eig(A),A=V*D/V;按expm(A)的逆运算,定义:logm(A)=V*diag(logm(diag(D)/V;例如:A=xilb(4),调用logm(A)可得结论:ans=-0.51571.28190.32740.17981.2819-3.91212.50020.51200.32742.5002-6.25923.01190.17980.51203.0119-4.9282,3.1.4.2对数函数log(x),22.05.2020,.,63,以10为底的对数函数log10(A),功能常用对数,即以10为底数的对数。格式Y=log10(X)%计算X中的每一个元素的常用对数,若X中出现复数,则可能得到意想不到的结果。例2-7L1=log10(realmax)%由此可得特殊变量realmax的近似值L2=log10(eps)%由此可得特殊变量eps的近似值M=magic(4);L3=log10(M)计算结果为:L1=308.2547L2=-15.6536L3=1.20410.30100.47711.11390.69901.04141.00000.90310.95420.84510.77821.07920.60211.14611.17610,22.05.2020,.,64,复数的求模函数abs(X),功能数值的绝对值与复数的模格式Y=abs()%返回矩阵X的每一个元素的绝对值;若X为复数矩阵,则返回每一元素的模:abs(X)=sqrt(real(X).2+imag(X).2)。例2-8A=-1.9,-0.2,3.1415926,5.6,7.0,2.4+3.6i;Y=abs(A)计算结果为:Y=1.90000.20003.14165.60007.00004.3267,3.1.4.2对数函数log(x),22.05.2020,.,65,复数的共轭函数conj(Z),功能复数的共轭值格式ZC=conj(Z)%返回参量Z的每一个分量的共轭复数:conj(Z)=real(Z)-i*imag(Z)函数imag功能复数的虚数部分格式Y=imag(Z)%返回输入参量Z的每一个分量的虚数部分。例2-9imag(2+3i)计算结果为:ans=3,3.1.4.2复变函数,22.05.2020,.,66,复数的虚部函数imag(Z),功能复数的虚数部分格式Y=imag(Z)%返回输入参量Z的每一个分量的虚数部分。例2-10imag(2+3i)计算结果为:ans=3函数real功能复数的实数部分。格式Y=real(Z)%返回输入参量Z的每一个分量的实数部分。例2-11real(2+3i)计算结果为:ans=2,3.1.4.2复变函数,22.05.2020,.,67,复数的幅角函数angle(Z),功能复数的相角格式P=angle(Z)%返回输入参量Z的每一复数元素的、单位为弧度的相角,其值在区间-,上。说明angle(z)=imag(log(z)=atan2(imag(z),real(z)例2-12Z=1-i,2+i,3-i,4+i;1+2i,2-2i,3+2i,4-2i;1-3i,2+3i,3-3i,4+3i;Angle(Z)=-0.78540.4636-0.32180.24501.1071-0.78540.5880-0.4636-1.24900.9828-0.78540.6435,3.1.4.2复变函数,22.05.2020,.,68,生成复函数complex,功能用实数与虚数部分创建复数格式c=complex(a,b)%用两个实数a,b创建复数c=a+bi。输出参量c与a、b同型(同为向量、矩阵、或多维阵列)。该命令比下列形式的复数输入更有用:a+i*b或a+j*b因为i和j可能被用做其他的变量(不等于sqrt(-1),或者a和b不是双精度的。c=complex(a)%输入参量a作为输出复数c的实部,其虚部为0:c=a+0*i。例2-13a=uint8(1;2;3;4);%非符号8-bit整数型数据b=uint8(4;3;2;1);c=complex(a,b)计算结果为:c=1.0000+4.0000i2.0000+3.0000i3.0000+2.0000i4.0000+1.0000i,22.05.2020,.,69,3.1.4.3Matlab的圆整函数和求余函数,例:floor(2.6)=2,ceil(-3.5)=3mod(7,3)=1,22.05.2020,.,70,功能朝零方向取整格式B=fix(A)%对A的每一个元素朝零的方向取整数部分,返回与A同维的数组。对于复数参量A,则返回一复数,其分量的实数与虚数部分分别取原复数的、朝零方向的整数部分。例2-14A=-1.9,-0.2,3.1415926,5.6,7.0,2.4+3.6i;B=fix(A)计算结果为:B=Columns1through4-1.000003.00005.0000Columns5through67.00002.0000+3.0,3.1.4.4圆整函数fix,22.05.2020,.,71,3.1.4.5圆整函数round,功能朝最近的方向取整。格式Y=round(X)%对X的每一个元素朝最近的方向取整数部分,返回与X同维的数组。对于复数参量X,则返回一复数,其分量的实数与虚数部分分别取原复数的、朝最近方向的整数部分。例2-15A=-1.9,-0.2,3.1415926,5.6,7.0,2.4+3.6i;Y=round(A)计算结果为:Y=Columns1through4-2.000003.00006.0000Columns5through67.00002.0000+4.0000i,22.05.2020,.,72,3.1.4.6圆整函数floor,功能朝负无穷大方向取整格式B=floor(A)%对A的每一个元素朝负无穷大的方向取整数部分,返回与A同维的数组。对于复数参量A,则返回一复数,其分量的实数与虚数部分分别取原复数的、朝负无穷大方向的整数部分。例2-16A=-1.9,-0.2,3.1415926,5.6,7.0,2.4+3.6i;F=floor(A)计算结果为:F=Columns1through4-2.0000-1.00003.00005.0000Columns5through67.00002.0000+3.0000i,22.05.2020,.,73,3.1.4.7圆整函数ceil,功能朝正无穷大方向取整格式B=floor(A)%对A的每一个元素朝正无穷大的方向取整数部分,返回与A同维的数组。对于复数参量A,则返回一复数,其分量的实数与虚数部分分别取原复数的、朝正无穷大方向的整数部分。例2-17A=-1.9,-0.2,3.1415926,5.6,7.0,2.4+3.6i;B=ceil(A)计算结果为:B=Columns1through4-1.000004.00006.0000Columns5through67.00003.0000+4.0000i,22.05.2020,.,74,3.1.4.7取余数函数rem,功能求作除法后的剩余数(正负均可)格式R=rem(X,Y)%返回结果:X-fix(X./Y).*Y其中X、Y应为整数。若X、Y为浮点数,由于计算机对浮点数的表示的不精确性,则结果将可能是不可意料的。fix(X./Y)为商数X./Y朝零方向取的整数部分。若X与Y为同符号的,则rem(X,Y)返回的结果与mod(X,Y)相同,不然,若X为负数,则rem(X,Y)=mod(X,Y)-Y。该命令返回的结果在区间sign(X)*abs(Y),0,若Y中有零分量,则相应地返回NaN。,22.05.2020,.,75,功能模数(带符号的除法余数)用法M=mod(X,Y)%输入参量X、Y应为整数,此时返回余数X-Y.*floor(X./Y),其结果总是正数或零;若运算数x与y有相同的符号,则mod(X,Y)等于rem(X,Y)。总之,对于整数x,y,有:mod(-x,y)=rem(-x,y)+y。若输入为实数或复数,由于浮点数在计算机上的不精确表示,该操作将导致不可预测的结果。例2-18M1=mod(13,5)M2=mod(1:5,3)计算结果为:M1=3M2=12012,3.1.4.8取余函数mod,22.05.2020,.,76,3.1.4.9组合函数nchoosek,22.05.2020,.,77,3.1.4.10按升序重新排序函数sort,功能把输入参量中的元素按从小到大的方向重新排列格式B=sort(A)%沿着输入参量A的不同维的方向、从小到大重新排列A中的元素。A可以是字符串的、实数的、复数的单元数组。对于A中完全相同的元素,则按它们在A中的先后位置排列在一块;若A为复数的,则按元素幅值的从小到大排列,若有幅值相同的复数元素,则再按它们在区间-,的幅角从小到大排列;若A中有元素为NaN,则将它们排到最后。若A为向量,则返回从小到大的向量,若A为二维矩阵,则按列的方向进行排列;若A为多维数组,sort(A)把沿着第一非单元集的元素象向量一样进行处理。B=sort(A,dim)%沿着矩阵A(向量的、矩阵的或多维的)中指定维数dim方向重新排列A中的元素。B,INDEX=sort(A,)%输出参量B的结果如同上面的情形,输出INDEX是一等于size(A)的数组,它的每一列是与A中列向量的元素相对应的置换向量。若A中有重复出现的相同的值,则返回保存原来相对位置的索引。,22.05.2020,.,78,例2-20A=-1.9,-2,3.1415926,5.6,7.0,2.4+3.6i;B1,INDEX=sort(A)M=magic(4);B2=sort(M)%逐列从小到大给出排序计算结果为:B1=Columns1through4-0.2000-1.90003.14162.4000+3.6000iColumns5through65.60007.0000INDEX=213645B2=423157689111012,22.05.2020,.,79,(1).方阵的行列式:det(A)(2).方阵的逆:inv(A)(3).矩阵的迹:trace(A)(4).矩阵的秩:rank(A)(5).矩阵和向量的范数:norm(A);欧几里德范数;norm(x,inf);无穷范数(6)向量p的最大元素:max(p);(7)矩阵A的最大元素:max(max(A);,3.2.1矩阵的运算命令,3.2矩阵的运算与分解,22.05.2020,.,80,(1)LU分解:L,U=lu(X)%满足LU=XU为上三角阵,L为下三角阵或其变换形式;(2)QR分解:Q,R=qr(A)求得正交矩阵Q和上三角阵R,Q和R满足:QR=A;(3)特征值分解V,D=eig(A)计算A的特征值对角阵D和特征向量V,使AV=VD成立;(4)SVD分解:U,S,V=svd(A)在分解式A=U*S*V中,S是一个对角矩阵;,3.2.2矩阵分解,22.05.2020,.,81,设=3214;2557;1559;4791;求下列各式的结果;A1=sqrt(A);%对矩阵A各元素开方A2=det(A);%求的行列式A3=inv(A);%求A的逆矩阵a1=trace(A);%求的迹V,D=eig(A);%求的特征向量与特征根;a2=norm(A);%求的正规范数a3=norm(A(:);%求拉成一列时的范数,矩阵运算练习,22.05.2020,.,82,3.2.3矩阵的分解练习,clearA=rand(5)%产生阶随机矩阵U,S,V=svd(A);%对做奇异值分解A8=U*U;%验证为正交矩阵A9=V*V;%验证为正交矩阵L,U=lu(A);%对作分解Q,R=qr(A);%对作分解B1=Q*Q;%验证为正交矩阵A10=hilb(6);%生成阶HILB矩阵V,D=eig(A10);求10特征向量与根B2=V*V;验证是否是正交矩阵,22.05.2020,.,83,1逻辑判断符=,=,=2逻辑运算符:%主体语句else执行命令n+1end%结束,3.3逻辑运算、条件语句与循环控制语句,22.05.2020,.,84,语句格式:if条件1%给出条件1命令1;%执行命令1elseif条件2%给出条件1命令2;%执行命令2.elseif条件n-1%给出条件1命令n-1;%执行命令n-1else%其余条件不写出;命令n;%执行命令n;end%结束,(2)if-elseif条件语句,22.05.2020,.,85,3.3.1条件语句应用示例(一),22.05.2020,.,86,语句格式:switchcase%定义case为整数变量case1结论1%变量取值case1时case2结论2%变量取值case2时case3结论3%变量取值case3时.caseN结论N%变量取值caseN时end%语句结束,(3)switch-case语句,22.05.2020,.,87,4循环语句for语句命令格式:fork=n1:d:n2%以d为步长;g(k+1)=f(k);%循环主体,;end%结束符;while语句命令格式:whilef(x,n)3t8=t8+1;C(t8,8)=B(k1,k2);endendendCP=t1,t2,t3,t4,t5,t6,t7,t8/100bar(P),22.05.2020,.,103,求多项式的根,即多项式为零的值,可能是许多学科共同的问题。用MATLAB可以求解这个问题,并提供其它的多项式操作工具。在MATLAB里,多项式由一个行向量表示,它的系数是按降幂排列。例如,输入多项式x412x30 x225x116,只须按降幂输入它的系数:p=1-12025116;注意,必须包括具有零系数的项。除非特别地辨认,MATLAB无法知道哪一项为零。给出这种形式,用函数roots找出一个多项式的根。r=roots(p)%此命令可求出它的四个根为:r=11.7473,2.7028,-1.2251+1.4672i,-1.2251-1.4672i,3.5多项式运算,3.5.1多项式求根,22.05.2020,.,104,因为在MATLAB中,无论是一个多项式,还是它的根,都是向量,MATLAB按惯例规定,多项式是行向量,根是列向量。给出一个多项式的根,也可以构造相应的多项式。在MATLAB中,命令poly执行这个任务。pp=poly(r)pp=1.0e+002*Columns1through40.0100-0.12000.00000.2500Column51.1600+0.0000ipp=real(pp)%throwawayspuriousimaginarypartpp=1.0000-12.00000.000025.0000116.0000因为MATLAB无隙地处理复数,当用根重组多项式时,如果一些根有虚部,由于截断误差,则poly的结果有一些小的虚部,这是很普通的。消除虚假的虚部,如上所示,只要使用函数real抽取实部。,3.5.1多项式的重构,22.05.2020,.,105,函数conv支持多项式乘法(执行两个数组的卷积)。考虑两个多项式a(x)=x32x23x4和b(x)=x34x29x16的乘积:a=1234;b=14916;c=conv(a,b)c=162050758464结果是c(x)=x66x520 x450 x375x284x64。两个以上的多项式的乘法需要重复使用conv。,3.5.2多项式的乘积(卷积),22.05.2020,.,106,对多项式加法,MATLAB不提供一个直接的函数。如果两个多项式向量大小相同,标准的数组加法有效。把多项式a(x)与上面给出的b(x)相加。d=a+bd=261220结果是d(x)=2x36x212x20。当两个多项式阶次不同,低阶的多项式必须用首零填补,使其与高阶多项式有同样的阶次。考虑上面多项式c和d相加:e=c+000de=162052819684结果是e(x)=x66x520 x452x381x296x84。要求首零而不是尾零,是因为相关的系数象x幂次一样,必须整齐。,3.5.3多项式的加法,22.05.2020,.,107,第四章Matlab数值计算,3.1.5多项式加法的库函数程序源代码为:functionp=mmpadd(a,b)%MMPADDPolynomialaddition.%MMPADD(A,B)addsthepolynomialAandB%Copyright(c)1996byPrenticeHall,Inc.ifnargin2error(Notenoughinputarguments)enda=a(:).;%makesureinputsarepolynomialrowvectorsb=b(:).;na=length(a);%findlengthsofaandbnb=length(b);p=zeros(1,nb-na)a+zeros(1,na-nb)b;%addzerosasnecessary,3.5.4多项式的加法函数程序,22.05.2020,.,108,在一些特殊情况,一个多项式需要除以另一个多项式。在MATLAB中,这由函数deconv完成。用上面的多项式b和cq,r=deconv(c,b)q=1234r=0000000这个结果是b被c除,给出商多项式q和余数r,在现在情况下r是零,因为b和q的乘积恰好是c。,3.5.5多项式的除法,22.05.2020,.,109,由于一个多项式的导数表示简单,MATLAB为多项式求导提供了函数polyder。例如,设6有次多项式g=162048697244h=polyder(g)%输入求导命令可得结果如下h=6308014413872,3.5.6多项式的导数,22.05.2020,.,110,根据多项式系数的行向量,可对多项式进行加,减,乘,除和求导,也应该能对它们进行估值。在MATLAB中,估值由函数polyval来完成。例x=linspace(-1,3);%choose100datapointsbetween-1and3.p=14-7-10;%usespolynomialp(x)=x34x27x10v=polyval(p,x);计算x值上的p(x),把结果存在v里。然后用函数plot绘出结果。plot(x,v),title(x3+4x2-7x-10),xlabel(x)%得图形如下,3.5.7多项式的估值与曲线作图,22.05.2020,.,111,在许多应用中,例如富里哀(Fourier),拉普拉斯(Laplace)和Z变换,出现有理多项式或两个多项式之比。在MATLAB中,有理多项式由它们的分子多项式和分母多项式
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年9月潮州市直遴选面试真题回忆版
- 公务员遴选面试真题及解题思路【范本模板】
- 2025年国考行测判断推理真题解析与备考策略指导
- 中学生开学第一课《安全教育主题班会》课件
- 2025幼儿园教师资格证笔试真题及答案
- 卫生统计学试题及答案题型大全
- 国考行测真题答案
- 中医方剂学试题及答案
- 傅雷家书习题及答案
- 2025年国家公务员考试(国考)申论面试真题及答案
- 江苏入团考试试题及答案2025年
- 微信客户维护培训课件
- GB/T 22577-2025核电站用1E级电缆通用要求
- 《房屋工程总承包工程量计算规范》
- 2025年中小学生读书知识竞赛题库及答案
- 学困生教学课件
- 血液透析患者假性动脉瘤的护理查房
- 内镜室院感护理
- 茶百道企业介绍
- 广西协美化学品有限公司年产7400吨高纯有机过氧化物项目环评报告
- 2025年二年级数学口算天天练
评论
0/150
提交评论