收藏 分享(赏)

第二章Matlab编程基础.ppt

上传人:ysd1539 文档编号:5998251 上传时间:2019-03-23 格式:PPT 页数:174 大小:4.73MB
下载 相关 举报
第二章Matlab编程基础.ppt_第1页
第1页 / 共174页
第二章Matlab编程基础.ppt_第2页
第2页 / 共174页
第二章Matlab编程基础.ppt_第3页
第3页 / 共174页
第二章Matlab编程基础.ppt_第4页
第4页 / 共174页
第二章Matlab编程基础.ppt_第5页
第5页 / 共174页
点击查看更多>>
资源描述

1、1,第二章 之 Matlab编程基础,2,2-1 Matlab软件的运行环境 与安装方法,Matlab6.5软件对系统的基本要求主要有: (1)Pentium,Pentium Pro,Pentium II,Pentium III,Pentium IV,Intel Xeon,AMD Athlon; (2)支持操作系统为Win2000、WinXP; (3)CD-ROM驱动器,用于从光盘安装该软件; (4)内存128 MB RAM,建议采用256 MB RAM及其以上; (5)全部安装该软件所需要的硬盘空间最少不低于1000MB,建议使用硬盘40G以上; (6)支持256色以上显示器,建议采用32M

2、以上显卡,3,安装Matlab的setup按钮,4,安装Matlab的界面,5,安装Matlab的界面,6,安装Matlab时输入密码的界面,7,Matlab组件选择窗口界面,MATLAB组件的选择窗口,8,Matlab桌面快捷方式,9,Matlab的操作界面窗口说明,历史指令窗口,工作空间浏览器,命令窗口,当前目录浏览器(后台),开始按钮,切换按钮,当前工作目录设定,命令提示符号,输入命令/指令区域,10,2-2 Matlab软件的常用窗口简介,命令窗口(Command Window),11,历史命令(指令)窗口,12,工作空间浏览器窗口,13,当前目录浏览器(Current Directo

3、ry Browser),14,内存数组编辑器(Array Editor),15,M文件编辑/调试器窗口,16,Matlab的交互界面分类目录窗口,17,帮助导航/浏览器(Help Navigator/Browser),18,2-3MATLAB的运行方式,一、命令行运行方式演算纸式的科学计算语言 在MATLAB的应用中,最基本、最简单的应 用,就是在命令窗口中直接输入命令来实现计算 或绘图功能。MATLAB命令行的一般形式为: 变量表达式 或: 表达式(赋值语句),19,命令行运行方式(续), 使用MATLAB最简单的方式是将MATLAB的命令窗口看作计算器,通过输入数学算式直接计算。12345

4、ans=15 如果在输入的表达式后面跟上分号“;”,那么运行后就不会马上显示运算的结果,必须键入输出变量后才能显示运算结果。用分号关闭不必要的输出会使程序运行速度成倍甚至成百倍地提高。12345; 则不会马上显示运算结果,要得到运算结果,必须ans则显示结果为ans=15,20,命令行运行方式(续),如果在表达式后面跟上逗号“,”或什么都不跟,运行后会马上显示该表达式的运算结果。 如果一个表达式很长,可以用续行号“”将其延续到下一行。 1+2+3+4+5+ %注意加号写在本行。6+7+8+9+10则输出结果ans=55如果续行号前面是数字,直接使用续行号会出现错误,有三种解决办法,一是设法使续

5、行号前面是一个运算符号,二是先空一格再加续行号,三是再加一个点。,21,在一行中也可以写几个语句,它们之间用逗号“,”或分号“;”隔开。A=1,2,3.3,sin(4),X=1966/310+1则输出结果A1.0000 2.0000 3.3000, -0.7568X=7.3419。,命令行运行方式(续),22,二、m文件运行方式,所谓m文件,就是用MATLAB语言编写的、可以在MATLAB中运行的程序。它是以普通文本格式存放的,故可以用任何文本编辑软件进行编辑。MATLAB提供的m文件编辑器就是程序编辑器。 在File菜单中选择NEW,再选择M-file,或点击新建图标,就可以调出m文件编辑器

6、,用户可以用此编辑器编写m文件。 m文件有两种形式,一种称为命令文件(Script File),另一种称为函数文件(Function File),两种文件的扩展名都是m。,23,(1)命令文件,如果要输入较多的命令,或者要经常对某些命令进行重复的输入,则可以将这些命令按执行顺序存放在一个m文件中,以后只要在MATLAB的命令窗口中输入该文件的文件名,系统就会调入该文件并执行其中的全部命令。这种形式就是MATLAB的命令文件。 命令文件中的语句可以访问MATLAB工作空间的所有变量;而在命令文件执行过程中创建的变量也会一直保留在工作空间中,其他命令或m文件都可以访问这些变量。 命令文件相当于DO

7、S批处理文件。,24,命令文件(续),求满足1+2+3+n=100,故应对sum减n n=n-1; %当循环结束时有sum=100,故应对n减1 n,sum %显示最大正整数n以及和sum,25,命令文件(续),将上述程序存入文件fl.m,然后在命令窗口键入 fl显示结果为 n=13 sum=91指出:程序中由符号“%”开始的文字都是注释文字,用来对程序或程序行行进行注释说明,符号“%”称为注释符,MATLAB在执行时将忽略“%”后的内容。,26,(2)函数文件,函数文件是另一类m文件,可以像库函数一样方便地被调用,MATLAB提供的许多工具箱,是由函数文件组成的。 对于某一类特殊问题,用户可

8、以建立系统的函数文件,形成专用工具箱。 函数文件的第一行有特殊的要求,它必须遵循如下的形式:function=() 其他各行都是程序运行语句,没有特别要求。 函数文件的文件名必须是.m。,27,函数文件(续),实现符号函数运算功能的函数m文件为: function y=sgn(x) %这是一个定义符号函数y=sgn(x)的函数文件。 if x0y1=-1; elseif x=0 y1=0; elsey1=1; end y=y1;,28,函数文件(续),将上述程序存为文件sgn.m,便可以将其作为普通的MATLAB函数来使用: x=4/3*pi; y=3*sgn(sin(x) 显示结果为: y=

9、-3,29,三、MATLAB的常用命令,MATLAB可以通过菜单对工作着的窗口进行操作,也可以通过键盘在命令窗口输入命令进行操作,下面给出几个常用的通用命令。 quit 关闭MATLAB exit 关闭MATLAB clc 清除MATLAB命令窗口中的所有显示内容 clear 清除工作空间中保存的所有变量其他命令可以在学习应用中逐步熟悉。,30,四、MATLAB的基本运算,指出:右除相当于通常的除法。,31,2-4MATLAB的变量与函数,一、变量 变量就是在程序的运行过程中,其数值可以变化的量(数据),它可以代表一个或若干个内存单元(变量的地址)中的数据。为了对所有的变量所对应的存储单元进行

10、访问,需要给变量命名。 MATLAB变量命名的规则是: 以字母开头,后面可以跟字母、数字或下划线。 不超过31个字符。 字符间不可以留空格。 区分大小写。,32,MATLAB的变量与函数(续),系统变量,33,MATLAB的变量与函数(续),指出: 自定义变量名一般不应和系统变量同名。 在MATLAB中输入的内容直接决定变量的类型。 使用who和whos命令可以查看变量。 使用clear命令可以删除所有定义过的变量。如果只是删除其中某些变量,应在clear后面指定要删除的变量名。例如 clear a z 有了变量,就可以组成表达式,也就可以对变量进行赋值。MATLAB的赋值语句有两种形式。 变

11、量名表达式 表达式在第一种情况下,MATLAB将右边的表达式的值赋值给左边的变量,在第二种情况,MATLAB将表达式的值赋值给系统变量ans。 所谓表达式,就是用运算符号把特殊字符、函数名、变量名等有关运算量连接起来的式子,其结果是一个矩阵。,34,二、函数,数学函数,35,函数(续),机器函数pause 程序将暂时停在该函数所在位置,击任意键程序继续执行echo on 在命令窗口显示正在执行的程序指令cputime 给出MATLAB所耗用的总机器时间clock 给出日期及当前时间 指出 在表达式中,函数一定要出现在等式的右边。 每个函数对其自变量的个数和格式都有一定要求,如三角函数的单位是“

12、弧度”而不是“度”。 函数允许嵌套,如sqrt(sin(10)。 系统函数的函数名小写。注意函数名也是区分大小写的。,36,2-4 MATLAB的数值计算,MATLAB运算的基本数据对象是矩阵,标量可以看作是11的矩阵,向量可以看作是1n或n1的矩阵。因此,可以说MATLAB的数据结构就是矩阵,以矩阵运算为代表的基本运算功能一直是MATLAB引以为自豪的核心与基础。,37,一、矩阵的创建,矩阵是线性代数的基本运算单元。 通常矩阵是指含有m行n列数值的矩形结构。矩阵中的元素可以是实数也可以是复数,由此可以将矩阵划分为实矩阵和复矩阵。 MATLAB支持线性代数所定义的全部矩阵运算。 在MATLAB

13、中创建矩阵应遵循以下原则: 矩阵的元素必须在方括号“ ”中。 矩阵的同行元素之间用空格或逗号“,”分隔。 矩阵的行与行之间用分号“;”或回车符分隔。 矩阵的尺寸不必预先定义。 矩阵元素可以是数值、变量、表达式或函数。如果矩阵元素是表达式,系统将自动计算出结果。,38,矩阵的创建(续),1、直接输入法在命令窗口按规则输入方式创建矩阵例1.在命令窗口创建简单的数值矩阵。A=1 3 2;3 1 0;2 1 5回车后在命令窗口显示如下结果A =1 3 23 1 02 1 5例2.在命令窗口创建带运算表达式的矩阵,不显示结果。y=sin(pi/3),cos(pi/6);log(20),exp(2);输入

14、“y”回车,在命令窗口显示出来。y显示出的结果为y =0.8660 0.86602.9957 7.3891,39,矩阵的创建(续),指出: 在矩阵较大时,用分行输入的方式(用回车代替分号区分不同行)比较接近于线性代数中的矩阵,更直观一些。 任何矩阵元素内部不能有空格,否则会被认定是两个元素。,40,矩阵的创建(续),2、通过数据文件创建矩阵导入其他程序创建的数据例3.用记事本输入一组数据1 2 3 42 3 4 54 3 4 55 7 6 1保存为fort.txt,用load命令读入,load fort.txt输入fort就可以在命令窗口显示创建的矩阵。 fort显示结果为fort =1 2

15、3 42 3 4 5 4 3 4 55 7 6 1,41,矩阵的创建(续),指出: 通过load命令导入数据是形成矩阵的重要方法,解决了在工作现场没有MATLAB系统和其他数据管理系统的问题,可以只用基本的文字处理工具完成。 MATLAB对文本形式的数据文件的扩展名并不计较,将上述数据文件换名保存为fort.1,仍然可以如上导入、应用。 文件名可以定义为m1.txt或m1.1。 但是,如果将文件命名为1m.txt,则显示出错信息:“Error: Missing operator(算子), comma(逗号), or semicolon(分号).” 如果文件名命名为3.txt、1.txt、3.1

16、等,则显示的是主文件名所用的数字。 数据文件保存为word或wps等的文件格式同样可以引用。,42,矩阵的创建(续),如果数据文件中有字母,则不能引用,显示出错信息,即使该字母在前面的指令中已经赋值也不可。 如果数据文件中有算式,则不能完整显示,算式元素将仅显示第一个运算符(或关系符)前的数字。 导入其他数据,如图像数据、Excel数据时,可以使用数据导入向导Import Wizard。,43,矩阵的创建(续),3、通过m文件创建矩阵将矩阵建立为m文件先将矩阵按创建原则写入一个m文件中,在MATLAB命令窗口或程序中直接运行该m文件(输入该m文件名),即可将矩阵调入工作空间。 4、通过函数创建

17、矩阵,44,特殊矩阵的实现,eye、zeros、 ones、 rand、diag、compan、triu、tril,A=eye(n) A=eye(size(B) A=eye(n,m),A= zeros(n) A= zeros(size(B) A= zeros(n,m),A= ones(n) A= ones(size(B) A= ones(n,m),A= rand(n) A= rand(size(B) A= rand(n,m),A=diag(B),当B为向量时,构成一个以向量元素为对角线的对角矩阵,当B为矩阵时,构成一个以B的主对角线元素为对角线的对角矩阵,A=compan(B),计算矩阵B的伴

18、随矩阵,A=triu(B),计算矩阵B的上三角矩阵 A=triu(B),计算矩阵B的下三角矩阵,45,矩阵的创建(续),指出: 当某一项操作无结果时,MATLAB将返回一个空矩阵,空矩阵的大小为0,但它确实存在于工作空间,可以通过变量名访问。 输入后的矩阵将保存在MATLAB工作空间中,并可以随时被访问调用,如果用户不用“clear”命令清除它,或给它重新赋值,该矩阵将一直保存在工作空间直到MATLAB关闭为止。 如果矩阵函数中只有一个参数,则为方阵。 四种创建矩阵的方法各有优点:直接输入法方便简捷;通过数据文件创建有利于调用其他软件产生的数据;通过m文件创建是用于创建较大尺寸的矩阵并便于修改

19、;通过函数创建可以由MATLAB内部函数创建一些特殊矩阵。,46,矩阵的创建(续),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,47,矩阵的创建(续),指出: 步长可以省略,省略步长,则步长为1。 步长可以为负,此时初值大于终值。 向量的元素比较多而又有增减规律时,这种方法非常便利。 冒号法表示向量时

20、,向量的全体成员是从初值开始,以步长为增量,直到不超过终值的所有元素构成的序列。 冒号法的应用可以避免使用循环,提高程序运行速度。,48,矩阵的创建(续),2冒号法构造矩阵 一般格式为: A(:,j):表示矩阵A的第j列; A(i,:):表示矩阵A的第i行。 例6.建立矩阵。解: A(1,:)=1:5 %设置矩阵的第1行 A =1 2 3 4 5,49,矩阵的创建(续), A(2,:)=6:10 %设置矩阵的第2行 A =1 2 3 4 56 7 8 9 10 A(3,:)=11:15 %设置矩阵的第3行,设置完成 A =1 2 3 4 56 7 8 9 1011 12 13 14 15,50

21、,矩阵的创建(续),指出:在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被称为线性等分函数。,51,矩阵的创建(续),指出:冒号法和应用linspace都可以创建具有递增元素序列的向量,但是,用冒号法创建向量时,向量的元素不一定取到终值,而应用linspace则必然会取到,因为b表示的就是最后一个元素。,52

22、,二、矩阵的运算,MATLAB对于矩阵与矩阵之间的运算的处理方法与线性代数中的相同,53,矩阵的计算(续),说明: 矩阵也可以和一个数之间进行运算。 线性代数没有定义除法运算,MATLAB为了便于计算,定义了矩阵的除法,并有左除和右除之分。矩阵左除使用“”运算符,右除使用“/”运算符。XAB是解方程组A*XB;XB/A则是解方程组X*AB。一般地说,ABB/A。在算法上,ABinv(A)*B,inv是求某一个矩阵的逆矩阵;而B/AB*inv(A)。指出:如果A*B=B*A=I(单位矩阵),称A和B互为逆矩阵。如果矩阵中有复数元素,那么转置后得到它的复数共轭矩阵 。,54,矩阵的运算(续),例7

23、.若创建矩阵 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、A2、CT、A-1、A1B。 指出: A2A2; CTC; A-1=inv(A) ; A1B=AB(或inv(A)*B) 在MATLAB系统中,还有一个数据结构是“数组”。数组在结构上和矩阵是完全一致的,唯一的区别是数组的运算不服从线性代数的规定,而是元素对元素间的运算。数组的加减运算与矩阵加减相同,数组的乘法、左除、右除、幂的运算符号分别是矩阵相应运算符前面加一个小圆点“.”。 矩阵运算的一个重要的应用是解线性方程组。,55,矩阵的运算(续)

24、,例8.求下面方程组的根。解:解线性方程组,可以使用矩阵的左除“”,即XAB。A=2,1,-3;3,-2,2;5,-3,-1;B=5;5;16; %列向量X=ABX =1-3-2,56,矩阵的运算(续),指出: 线性方程组A*XB有两种解法:X=AB或X=inv(A)*B,但一般用第一种解法,在MATLAB中,第二种解法所用时间是第一种解法的50倍。 可以看出,同样解线性方程组,不同的算法的效率是有极大差距的,可见优化和选择算法是非常重要的。求逆运算inv(A)是重要的代数运算。,57,三、矩阵的操作,1、矩阵的大小测度Size函数用来测试矩阵的大小,对于 矩阵A,size(A)返回一个行向量

25、,它包含了矩阵的行数m和列数n。如果专门显示行数和列数,则可以采用如下格式:。 例9.已知矩阵求矩阵的大小。,58,矩阵的操作(续),解: A=1 1 1 1 1;1 2 3 4 5;1 3 6 10 15 设A为已知矩阵 A =1 1 1 1 11 2 3 4 51 3 6 10 15 d=size(A) 测试矩阵A的大小 d =3 5 d1=size(A,1) 测试矩阵的行数 d1 =3 d2=size(A,2) 测试矩阵的列数 d2 =5,59,矩阵的操作(续),2、矩阵的元素操作 例10.已知矩阵,写出矩阵的元素A(2,3),将A(3,5)改为1。 解: A=1 1 1 1 1;1 2

26、 3 4 5;1 3 6 10 15 A =1 1 1 1 11 2 3 4 51 3 6 10 15,60,矩阵的操作(续), A(2,3) ans =3 A(3,5)=-1 A =1 1 1 1 11 2 3 4 51 3 6 10 -1,61,矩阵的操作(续),例11. A=1 3 2;3 1 0;2 1 5 A =1 3 23 1 02 1 5 B=4 3 6;5 1 4;3 4 6 B =4 3 65 1 43 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

27、,2); U U =5 6-2 0,62,矩阵的操作(续),3、矩阵块的操作利用冒号表达式对矩阵进行拆分、提取子矩阵是矩阵操作的重要方面。提取的规则是 A(:,j)表示取矩阵A的第j列的全部元素; A(i,:)表示取矩阵A的第i行的全部元素; A(i,j)表示取矩阵A的第i行第j列交叉位置的元素; A(i:i+m,:)表示取矩阵A的第ii+m行的全部元素; A(:,k:k+n)表示取矩阵A的第kk+n列的全部元素; A(i:i+m,k:k+n)表示取矩阵A的第ii+m行内并在第kk+n列中的全部元素。,63,矩阵的操作(续),例12.拆分矩阵的例子。 A=1 1 1 1 1;1 2 3 4 5

28、;1 3 6 10 15 A =1 1 1 1 11 2 3 4 51 3 6 10 15 A(2,3) ans =3 A(3,5)=-1 A =1 1 1 1 11 2 3 4 51 3 6 10 -1,64,矩阵的操作(续), 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 56 7 8 9 1011 12 13 14 1516 17 18 19 20 A(1,:) ans =1 2 3 4 5,65,矩阵的操作(续), A(:,2:4) ans =2 3 47 8 912 13 1417 18 19 A(2:

29、3,4:5) ans =9 1014 15 A(2:3,1:3:5) ans =6 8 1011 13 15,66,矩阵的操作(续),例13.组合矩阵的例子。 A=1,2;3,4 A =1 23 4 B=2,3;4,5 B =2 34 5 A,B ans =1 2 2 33 4 4 5,67,矩阵的操作(续), A;B ans =1 23 42 34 5 A;6,7 ans =1 23 46 7,68,矩阵的操作(续),冒号表达式是MATLAB中非常重要的、应用非常广泛、也非常灵活的工具。 利用冒号表达式比利用循环语句赋值解决同一问题要快得多,所以实际编程时一般应当尽量采用冒号表达式而不是用循

30、环。,69,矩阵的操作(续),例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 56 7 8 9 1011 12 13 14 1516 17 18 19 20 A(end,:) %取A的最后一行ans =16 17 18 19 20,70,矩阵的操作(续), A(1,4,3:end) 取A的第1,4两行中第3列到最后一列。 ans =3 4 518 19 20 A(1,4,:) 取A的第1,4两行。 ans =1 2 3 4 516 17 18 19 20。 指出: end用来表示矩阵某一维末尾元素。,71

31、,矩阵的操作(续),例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.00002.4000 4.7000 1.0000 1.00000 0 1.0000 00 0 0 1.0000。 指出:实际上,例15是分块输入矩阵的例子,是将矩阵分4块输入的。注意分块的意义。,72,四、数据的输出格式,format命令的格式为: format 格式符 格式符决定数据输出格式,常见格式及其含义有: short:输出小数点后4位,最多不超过7位有效数字。 对于大于1000的实数

32、,用5位有效数字的科学记数形式输出。 long:15位有效数字形式输出。 short e:5位有效数字的科学记数形式输出。 long e:15位有效数字的科学记数形式输出。 rat:近似有理数形式输出。,73,数据输出格式(续),指出: format命令只影响数据的输出格式,而不影响数据的存储和计算。 如果输出的矩阵的每个元素都是整数,则MATLAB就用整数格式显示结果。只要矩阵中有一个元素不是整数,MATLAB就按当前的输出格式显示。 默认的输出格式是short。,74,数据输出格式(续),注意rat格式。如果在进行运算前执行format rat命令,则可以用分数形式显示运算结果,这样便于核

33、对手算的结果的正确性。 例如, 1/3 ans =0.3333 format rat 1/3 ans =1/3 在改变了输出格式后,为了以后还按默认的格式输出,应当再执行format short命令。,75,数据输出格式(续),即使在默认格式下,0也仅仅是输出0。教材中输出0.0000是不正确的。 显示格式是非常重要的,要熟悉几种重要的格式。,76,3 MATLAB的符号运算,数值运算中的变量需要事先赋值,才能出现在表达式中参与运算。但人们经常需要对含有字符的矩阵和函数进行处理和运算,如求函数的微分、积分等等,这就需要进行符号运算。MATLAB的符号运算利用符号数学工具箱进行,符号工具箱的功能

34、主要包括符号表达式的创建、符号矩阵的运算、符号表达式的化简和替换、符号微积分、符号代数方程、符号微分方程、符号函数绘图等等 。,77,一、符号对象的创建,1、字符串变量的创建字符串是一种特殊的符号对象,在数据处理、造表和函数求值中,字符串具有重要的应用。用单引号界定的字符序列称为字符串。 例如 s=hello 回车后,显示 s = hello,78,符号对象的创建(续),指出: 字符串中的字符可以是数字、英文字母、汉字、横线、括号、表达式、方程等。 字符串也称字符串数据或字符变量。 用赋值符号“”把字符串赋给某个标识符,例如s,这个标识符称为字符串变量名,简称字符名。,79,2、符号变量和符号

35、表达式的创建,MATLAB的符号数学工具箱提供了两个基本函数sym和syms,用来创建符号变量、符号表达式和符号矩阵。 用函数sym建立符号变量、符号表达式和符号矩阵。调用格式为:变量sym(表达式)y=sym(2+cos(x)将显示y =2+cos(x)这是一个符号表达式。,80,符号对象的创建(续),用函数syms建立符号变量、符号表达式和符号矩阵。调用格式为:Syms var1 var2 var3 注意空格。syms y u p=exp(-y/u)q=y2+u3+u*y这样就建立了两个符号表达式,分别存放在变量p和q里。指出:由于syms函数书写简洁,意义清楚,符合 MATLAB的习惯特

36、点,一般提倡使用syms创建符号变量、符号表达式和符号矩阵。,81,符号对象的创建(续),注意用单引号创建的字符串变量和用函数sym、syms创建的符号变量性质并不完全一样。在符号工具箱中,有些指令的参数既可以用字符串型数据也可以用符号型数据,但也有一些指令的参数必须用符号型数据。加法、求导等运算对数值形式的字符串和符号变量都按符号变量对待,不加区别,而级数求和命令symsum(s,n,h,k)(s是通项表达式,n为级数的项数,h、k分别是求和的起止项数)中的s必须用符号表达式而不能用字符串。 MATLAB中,在没有规定的情况下,默认最接近x的字母表示自变量。,82,解 (1)创建fj,键入f

37、j=sym(a/sin(x),cos(x);b-x/5,a*sin(x),(2)创建d1,键入d=1/3 5.12,6.45;sin(4) sqrt(3) 9 d2=sym(d),d1=sym(1/3 5.12,6.45;sin(4) sqrt(3) 9),注意:fj=sym(a/sin(x),cos(x);b-x/5,a*sin(x) 与 fj= a/sin(x),cos(x);b-x/5,a*sin(x) 的区别,83,符号矩阵的加、减、乘、除、乘方运算分为矩阵运算与数组运算。,syms a b s1=a/b,sin(a);b3 5,s2=4/b cos(b);a2 8 s1+s2,s1*

38、s2,s1.*s2,1 符号矩阵的四则运算,2 符号矩阵的求逆,inv(s1)或s1(-1) s1/s2或s1*inv(s2),84,二、符号矩阵运算中的几个特有指令的应用,1 因式分解、展开、合并指令,factor(S)对S进行因式分解,其中S是符号矩阵、符号表达式或有理分式。,syms x k=x/(x2-5*x-6),2*x/(x2-2*x+1);(x2+x)/(x2+2*x+1),(x+1)/(x2+x) factor(k),syms x factor(3*x2-10*x+8),1) 因式分解,85,2)代数式展开,expand(S)对S进行代数式展开,其中S是符号矩阵、代数或有理分式

39、。,syms x y A=(x+1)3,sin(x+y);exp(x+y),cos(x-y) expand(A),3)同幂项系数合并,collect(S,v)对符号矩阵S中各元素按v的同幂项系数进行合并的结果,省略v时默认变量为x。,syms x y collect(x2*y+x*y-x2-2*x) collect(-1/4*x*exp(-2*x)+3/16*exp(-2*x),exp(-2*x),86,2 求函数极限和导数指令,1)求函数极限指令,limit(F,x,a,right或left) 输出函数符号表达式F(x)当自变量xa时的极限 省略a时默认a=0 输入参数选right表示xa时

40、的右极限 ;选left表示xa时的左极限 。,syms x a m limit(x(1/m)-a(1/m)/(x-a),x,a),87,2)求导函数指令,diff(S,v,n) 输入参数S为函数、函数向量、函数矩阵的符号表达式或字符表达式; 输入参数v为求导的指定自变量,省略时默认为x,t等约定俗成的自变量; 输入参数n为求导阶数,缺省时默认n=1,即求一阶导数; 输出量为函数S对变量v的n阶导数; 由于求导函数可以指定自变量,因此该指令也可用于求偏导数。,syms x yz=x*y*exp(sin(pi*x*y) diff(z) diff(z,y),syms z A=log(z),sin(z

41、);-cos(z),exp(2*z) diff(A)或diff(A,z) diff(A,z,2)或diff(A,2)或diff(ans),88,R=int(S),求表达式S的不定积分 R=int(S,v),求表达式S对自变量v的不定积分 R=int(S,a,b),求表达式S在区间a,b上的定积分 R=int(S,v,a,b),求表达式S在区间a,b上的定积分,自变量为v,syms x y z f1=2*x/(1+x2)2 F1=int(f1) f2=x/(1+z2) F2=int(f2,z) f3=1/sqrt(2*pi)*exp(-x2/2) F3=int(f3,0,inf) double(

42、F3),89,4 级数求和,symsum(s,n,n0,nk) 输入参数s为级数通项的符号表达式; 输入参数n为通项中被认定的项数变量。当缺省n时,通项表达式s中的项数变量一般默认是x,若变量较多则可用findsym(z)查询哪个量是项数变量; n0,nk为项数的取值范围,n0可取小数,但步长总是1,缺省n0,nk 时,默认n01,nk =n-1; 输出量为通项为s的级数第n0项到第nk 项之和。,syms x n symsum(-1)n*x(n+1)/(n+1),n,0,inf) syms k symsum(x2,x,1,k-1)或symsum(x2,1,k-1),90,5 一元函数的泰勒级

43、数展开,taylor(f,n,v,a) 输入参数f为待展开函数的符号表达式,不可省略; 输入参数n取正整数时,函数f被展开成最高幂次为n-1的幂级数; 输入参数v是被指定的变量名称,缺省时默认变量为x或t,f中只有一个可视为变量的符号量时,可省略指定变量名v; 输入参数a表示函数f在v=a点被展开,即展开成(x-a)的幂级数; 缺省a时默认a=0,函数在v=0点展开,即函数f被展成麦克劳林级数,此时若省略n,默认n=6,函数f被展开成x最高为5次幂的幂级数。,syms x taylor(exp(-x),syms x y taylor(log(x*y),6,y,1),91,limit(f,x,a

44、) 求表达式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的定积分,92,符号微积分(续),例.已知f(x)=ax2 +bx+c,求f(x)的微分和积分。 解:syms a b c xf=sym(a*x2+b*x+c)f =a*x2+b*x+cdiff(f,a)ans =x2int(

45、f)ans =1/3*a*x3+1/2*b*x2+c*xint(f,x,0,2)ans =8/3*a+2*b+2*c,93,4 MATLAB的图形处理,94,MATLAB的图形处理(续), x,y,z=sphere(30); surf(x,y,z),box,95,二维图形的绘制,一、二维图形的绘制 1、数据绘图命令plot plot(y) 当y为向量时,以y的分量为纵坐标,以元素序号为横坐标,用直线依次连接数据点,绘制曲线。若y为实数矩阵,按列绘制每一列所对应的曲线,图中曲线数等于矩阵的列数。 plot(x,y) 若y和x为同维向量,以x为横坐标,以y为纵坐标绘制连线图。若x是向量,y是行数或

46、列数与x的长度相等的矩阵,则绘制多条不同色彩的连线图,x被作为这些曲线的共同坐标。若x和y是同型的矩阵,则以x和y的对应列元素为横纵坐标分别绘制曲线,曲线条数等于矩阵的列数。 plot(x,y1,x,y2,) 以公共的x元素为横坐标,以y1,y2,y3,元素为纵坐标值绘制多条曲线。,96,二维图形的绘制(续),例1以向量y=(1,2,5,4.5,3,6,1)的各个分量为纵坐标,分量序号为横坐标绘制顺序连接线。 解:输入命令 y=1 2 5 4.5 3 6 1; plot(y),97,二维图形的绘制(续),98,二维图形(续),例2.画出一条正弦曲线和一条余弦曲线。x=0:pi/10:2*pi;

47、 %构造向量y1=sin(x); %构造对应的y1坐标y2=cos(x); %构造对应的y2坐标plot(x,y1,x,y2) %画出一个以x为横坐标,y1,y2为纵坐标的图形 指出: 构造向量采用了所谓的冒号法,格式为向量名初值:步长:终值 %步长为1时可以省略。 plot是针对向量或矩阵的列来绘制曲线的,也就是说,使用plot之前必须首先定义好曲线上每一点的x坐标和y坐标。 在上述的格式中,x和y都可以是表达式。 如果自变量的间隔取得比较大,光滑的曲线就会显示出折线的本来面貌。,99,二维图形(续),100,2、函数绘图命令,1解析函数绘图命令fplot 使用格式: fplot(fun,lims,s,tol) 其中, 用单引号界定的输入参数fun,是解析函数字符串表达式、内联函数或m函数文件名。fun可以是一个函数,也可以是元素是函数的向量。 输入参数lims规定了绘图区间,lims=a,b,c,d表示,自变量x和函数y的取值范围分别是xa,b,yc,d。通常c,d被省略。 输入参数s用于修饰曲线,后面介绍。 输入参数tol规定函数取值的相对误差,常省略。默认2e-3。 fun是函数向量时,绘出的几条曲线的取值区间和线型是相同的。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 开发文档

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报