《Matlab仿真软件(改).ppt》由会员分享,可在线阅读,更多相关《Matlab仿真软件(改).ppt(153页珍藏版)》请在三一办公上搜索。
1、1,第一章 仿真软件Matlab,1.1 仿真技术简介,1.5 Matlab的符号运算,1.7 Matlab的绘图功能,1.2 Matlab概述,1.6 Matlab编程基础,1.3 Matlab界面与基本操作,1.4 Matlab的数值运算,2,物理仿真:研制某种实体模型,使之能够重现原系统的各种状态。(直观性强,形象化;所需费用高,周期长,技术复杂。)数学仿真:用数学模型去描述一个系统,并编制程序在计算机上对实际系统进行研究。(速度快,较灵活,精确度高,重复性好;复杂系统可能很难用数学模型表达。)混合仿真:将数学模型、物理模型和实体结合起来组成复杂的仿真系统。,1.1 仿真技术简介,仿真(
2、Simulation)利用模型来分析与研究实际系统(相似性原理)。,3,1)建立系统的数学模型。2)建立仿真模型。3)编写仿真程序。4)进行仿真实验 设定合理的实验条件、参数,进行实验,并记录仿真结果。5)仿真结果分析。,计算机仿真的基本步骤:,4,MatrixLaboratory(矩阵实验室);由美国Math Works公司于20世纪80年代推出的高性能数值计算软件;Matlab已经发展成为适合多学科(线性代数、控制理论、数理统计、数字信号处理、动态系统仿真)、功能强大的优秀系统软件;Matlab已经成为工程技术人员必需掌握的基础知识与基本技能。,1.2 Matlab概述,5,自动控制原理M
3、atlab实现的优势:,1)运算功能强大;,5)库函数丰富,函数命令简单高效;,6)界面友好,使用方便。,4)语法限制不严格,程序设计自由度大;,3)专业的控制系统工具箱(Control Systems Toolbox);,2)强大方便的绘图功能;,6,Matlab的主要功能:,数值计算(Numeric Function)符号计算(Symbolic Function)工程与科学绘图(Graphic Function)控制系统工具箱 时域分析、根轨迹分析、频域分析、系统设计仿真工具SIMULINK(Simulate、link),7,Matlab是一种函数型语言,了解函数的功能,熟练掌握其使用方法
4、,是使用Matlab进行程序设计的前提;Matlab牵扯面极广,几乎涉及现代科学的所有领域,因此,学习Matlab必须与个人所从事的学科相结合;结合课堂理论学习内容,多进行上机操作。,Matlab课程学习方法:,8,1.3 Matlab界面与基本操作,9,1、Command Window(命令窗口)输入各种Matlab指令、函数、表达式、变量等,并显示除图形外的所有运算结果,一、四个窗口,2、Command History(历史命令窗口)记录命令窗口中已经运行过的指令、函数,3、Workspace(工作空间窗口)显示变量名字(Name)、维数(Size)、字节数(Bytes)和类型(Class
5、),4、Current Directory当前目录窗口,二、Start按钮,可以运行所有MATLAB软件的工具以及访问相关文档。,10,MATLAB命令窗口的按键及其作用,11,三、功能菜单,File文件操作菜单,New 新建M文件、图形、模型和图形用户界面Open 打开.m,.fig,.mat,.mdl等文件Close Commend Window 关闭命令窗口Import Data 从其他文件导入数据Save WorkSpace As 保存工作空间数据到相应的路径文件中Set Path 设置工作路径Preferences 设置命令窗口的属性Page Setup 页面设置Print 设置打印
6、机属性Print Selection 选择打印Exit MATLAB 退出MATLAB操作界面,12,Edit编辑菜单,Undo、Redo 撤销、重复执行上一步操作Cut、Copy、Paste 剪切、复制、粘贴Paste to WorkSpace As 粘贴变量到工作空间Select All 全部选定Delect 删除所选对象Find 查找所需对象Find Files 查找所需文件Clear Commend Window 清除命令窗口的内容Clear Commend History 清除历史命令窗口的内容Clear Workspace 清除工作区的内容,13,Debug调试菜单,Open M-
7、Files when Debugging 调试时打开M文件Step 单步调试Step In 单步调试进入子函数Step Out 单步调试跳出子函数Continue 连续执行到下一断点Clear Breakpoints in All Files 清除所有文件中的断点Stop if Errors/Warnings 出错或报警时停止运行Exit Debug Mode 退出调试模式,14,Desktop桌面菜单,Unlock Commend Window 命令窗口设为当前全屏活动窗口Desktop Layout 桌面设计Save Layout 保存桌面设计Organize Layout 组织桌面设计C
8、ommend Window 显示/隐藏命令窗口Commend History 显示/隐藏历史命令窗口Current Directory 显示/隐藏当前工作目录Workspace 显示/隐藏工作空间窗口Help 打开帮助窗口,15,Profiler 打开轮廓图窗口Editor 打开编辑器Figures 打开图形编辑器Web Brower 打开Web浏览器Array Editor 打开矩阵编辑器File Comparisons 文件比较Toolbar 显示/隐藏工具栏Shortcuts Toolbar 显示/隐藏快捷工具栏Titles 显示/隐藏标题,Desktop桌面菜单,16,Window窗口
9、菜单,Close All Documents 关闭所有文档Commend Window 选定命令窗口为当前活动窗口Commend History 选定历史命令窗口为当前活动窗口Current Directory 选定当前工作目录为当前活动窗口Workspace 选定工作空间窗口为当前活动窗口,17,Full Product Family Help 显示全部系列产品帮助MATLAB Help 显示MATLAB系统帮助Using the Desktop 显示桌面命令使用帮助Using the Command Window 显示命令窗口使用帮助Demos 显示MATLAB系统的演示帮助窗口About
10、 MATLAB 显示MATLAB系统的标识界面,Help帮助菜单,18,四、工具栏,19,1.4 Matlab的数值运算,1.4.1 数值运算基础,Matlab中变量使用之前,不需要指定变量的数据类型,也不必事先声明变量。一个程序中的变量,以其名称在语句命令中的第一次合法出现而定义;当用户在Matlab工作空间中输入一个新的变量时,Matlab会自动给该变量分配适当的内存,若用户输入的变量已经存在,则Matlab使用新输入的变量替换原有的变量。,一、变量的赋值和命名,20,变量名=表达式,返回变量名列表=函数名(输入变量列表),注意:无需事先定义,Matlab系列定义的数值元素就是复数,这是M
11、atlab语言区别于其它高级语言的最大特点之一;无论给Matlab中的变量赋什么值,在内存中均以矩阵的形式表示。Matlab数值运算的表达式中不允许有未定义的自由变量。,21,1)变量名必须是不包含有空格的单个词;2)变量名必须以字母开头,之后可接任意字母、数字或下划线;3)组成变量名的字符长度不大于31个;4)变量名区分大小写字母。,变量命名规则:,22,注意:MATLAB提供的标准函数和命令名必须用小写字母。,表1-1 Matlab的特殊变量和常量,23,二、Matlab运算符,1、算术运算符,24,2、关系运算符,25,3、逻辑运算符,26,4、特殊运算符,27,方括号()的使用,方括号
12、可以输入矩阵;方括号 也可以代表空矩阵,用来删除矩阵的行和列。,28,冒号(:)的使用,A.使用冒号可以输入行向量,其格式为:x=a:inc:b;其中,a是向量的第一个元素,inc是步长(即两个元素的间隔),步长可正可负;若(b-a)为inc的整数倍时,向量的最后一个元素等于b,否则小于b;当inc=1时步长可以省略。,B.使用冒号能够从向量和矩阵中选出指定的行和列元素。,C.使用冒号能够从一个大矩阵中选取小矩阵。,29,注:单独一个冒号可以代表所有行或所有列的元素。方括号 也可以代表空矩阵,用来删除矩阵的行和列。,30,分号(;)的使用,A.分号在矩阵中用来分隔行;B.分号在命令窗口内用来输
13、入多行语句 在Matlab命令窗口内输入命令,若不加分号,则每一条命令都将输出相应的结果;若加上分号,Matlab将不输出相应的结果,等待用户输入下一条命令,直到碰到一条不带分号的命令时,Matlab输出最后一条命令的结果。,31,Matlab的数值运算主要是指矩阵和向量运算;矩阵和向量都指含有M行与N列数字的矩形结构,但两者在Matlab中的运算性质不同;一行多列的矩阵是行向量,一列多行的矩阵是列向量;只有一个元素的矩阵就是标量。,1.4.2 矩阵运算,32,方法:1)直接输入法;2)利用函数建立矩阵;3)利用M文件建立矩阵。,直接输入法:将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素
14、,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔(也可以用回车键代替分号)。,一、创建矩阵,33,a=1 2 3;4,5,6x=2 pi/2;sqrt(3)3+5i,注意:1)不必声明矩阵的维数和类型,Matlab会根据用户所输入的内容自动进行配置;2)矩阵元素可以是Matlab表达式,可以是实数,也可以是复数。,例:,34,2.利用函数建立矩阵,zeros(size(A)用来输出一个与矩阵A行、列数相同的全0矩阵。,1)zeros函数创建元素全为0的矩阵。,2)ones函数创建元素全为1的矩阵。3)eye函数创建单位矩阵。4)magic函数创建一种特殊的N阶方阵,其每行、每列
15、和对角线上的元素之和都相等,为(1+n2)/n。,35,5)diag函数从矩阵中提取某对角线构成一个向量;利用一个向量构成对角阵。,6)triu函数获取某一矩阵的上三角矩阵。,tril函数获取某一矩阵的下三角矩阵。,在Matlab中,还可以把小矩阵连接起来生成较大的矩阵。,36,3.利用M文件建立矩阵:对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。(M文件实际上是一种包含Matlab命令代码的文本文件)。,其步骤为:1)使用编辑程序输入文件内容;2)把输入的内容以纯文本方式存盘(设文件名为my matrix.m);3)在Matlab命令窗口中输入my matrix,就会自动建立一个矩
16、阵,可供以后显示和调用。,37,二、矩阵元素的标识、访问、赋值,1.一维矩阵,用矩阵名后圆括号内的元素在矩阵中位置的顺序号来标识。,X=1*pi 2*pi 3*pi 4*pi 5*pi X=3.1416 6.2832 9.4248 12.5664 15.7080%要查询X矩阵的第3个元素,输入指令:X(3)%指令回车后,得到结果为:ans=9.4248,例:,38,2.二维矩阵,采用用双下标格式:A(m,n),其中m为行号,n为列号。,39,1.加减运算(+,-),矩阵加减运算的条件是两矩阵必须有相同的行数和列数,其运算规则为两矩阵对应元素相加减。,三、矩阵运算,2.乘法运算(*),两矩阵相乘
17、必须服从数学中矩阵叉乘的条件与规则,A矩阵的列数必须等于B矩阵的行数,矩阵乘法不满足交换律。,40,3.除法运算(/,),矩阵右除A/B表示的是方程X*B=A的解:A/B=A*B-1;矩阵左除 AB表示的是方程A*X=B的解:AB=A-1*B;矩阵与标量间只能进行矩阵右除标量(即矩阵/标量)的运算。,41,若a为矩阵,b为标量,矩阵的乘方a b是矩阵a的b次方。,4.乘方运算(),5.转置运算(),把矩阵A的行换成同序数的列而生成的矩阵,称为A的转置矩阵;当矩阵是一个复数矩阵时,A表示它的共轭转置矩阵。,42,1.4.3 向量运算,1.加减运算(+,-),在Matlab中,标量与向量间可进行加
18、减运算,其规则是标量与向量的每个元素进行加减操作。,向量加减运算的条件与规则和矩阵加减运算相同。,2.乘法运算(.*),向量的乘法运算必须在具有相同维数的向量间进行,其结果是向量的对应元素间相乘的结果组成的新向量。,43,3.除法运算(./,.),标量与数组间可以进行除法运算,其规则是标量与数组的每一个元素进行除法操作;数组右除A./B是将A的每一元素除以B的每一个对应元素;数组左除A.B是将B的每一元素除以A的每一个对应元素。,44,4.乘方运算(.),向量与标量的乘方运算以向量为底而以标量为指数:以向量中的每个元素为底,分别与作为指数的标量进行乘方运算得到一个新的向量。,以标量为底而以向量
19、为指数:以该标量为底,用向量中的每个元素分别作为指数与该标量进行乘方运算后得到一个新的向量。,45,向量与向量的乘方运算:以前一个向量为底,后一个向量为指数,其对应元素分别进行乘方运算得到的结果。,5.转置运算(.),向量转置(A.)与实数矩阵转置相同。,46,在Matlab中,关系运算与逻辑运算只适用于向量,不适用于矩阵。其运算规则为:关系运算的优先级高于算术运算,低于逻辑运算。,a=1+2i;b=1+4i;a=b%运算结果为:ans=0 ab%运算结果为:ans=0,例:,1.4.4 关系与逻辑运算,运算符、=只比较二量的实部,而运算符=与=则同时比较实部与虚部。若两标量比较,其关系成立者
20、,运算结果为逻辑真(1),否则为逻辑假(0)。,一、向量的关系运算,47,若一标量与一向量比较,则将标量与向量的每一个元素逐个比较,其运算结果为一个与向量同维的新向量,其元素由1与0组成,即关系成立者,运算结果为逻辑真(1),否则为逻辑假(0)。,若两向量比较,向量的维数需相同,将两向量对应 的每一个元素逐个比较,其运算结果为一个与比较向量同维的新向量,其元素由1与0组成,即关系成立者,运算结果为逻辑真(1),否则为逻辑假(0)。,48,若两向量做逻辑运算,向量维数需相同,将两向量对应的每一个元素逐个运算,其运算结果为一个与原向量同维的新向量,其元素由1与0组成。,Matlab除了上述的各类运
21、算外,还提供了许多运算函数。,二、向量的逻辑运算,非0元素代表逻辑真“1”,0元素代表逻辑假“0”;,逻辑运算中,not的运算优先级最高,and和or有相同的优先级(xor只有函数形式);还可用括号改变运算优先权。,若一标量与一向量比较,则将标量与向量的每一个元素逐个比较,其运算结果为一个与向量同维的新向量,其元素由1与0组成。,49,表1-2 MATLAB常用运算函数,50,在Matlab中,采用行向量表示多项式,该向量中的元素是按降幂排列的多项式系数。多项式 P(x)=a0 x n+a1 x n-1+an-1 x+an的系数行向量为:P=a0 a1 an-1 an,1.4.5 多项式运算,
22、51,多项式求根,求解该多项式等于0时对应方程的根。,由根求多项式,由该多项式等于0时对应方程的根求其多项式的系数。,多项式乘法/除法,p=conv(p1,p2)p,r=deconv(p1,p2),例:求多项式 p(x)=(x2+2x+3)(4x2+5x+6)的系数。,r=1 2 3;g=4 5 6;p=conv(r,g)%运算结果为:p=4 13 28 27 18,即p(x)=4x4+13x3+28x2+27x+18,s,q=deconv(p,g),52,4.分式多项式的部分分式展开,将y(x)进行部分分式分解,即求留数计算,可以得到:,b为分子系数向量,a为分母系数向量;r为部分分式中留数
23、向量,p为部分分式中极点向量,k为直接相除项行向量。,r,p,k=residue(b,a),53,例:已知一传递函数,将其分解为部分分式。,a=1 2;b=1 4 3;z,p,k=residue(a,b)%运算结果为:z=0.5000 0.5000p=-3-1k=,即得传递函数分解的部分分式为:,54,反之,用residue函数也可将部分分式展开式返回到传递函数多项式之比的形式。,a,b=residue(z,p,k)%运算结果为:a=1 2b=1 4 3,即返回原传递函数,例:,55,5.多项式求导数(微分)polyder(p):求p的微分;polyder(a,b):求多项式a,b乘积的微分;
24、p,q=polyder(a,b):求多项式a,b商的微分,p为导函数的分子系数向量,q这导函数的分母系数向量。,p=1 2 3 4 5;b=polyder(p)%运算结果为:b=4 6 6 4,例:求多项式 p(x)=x4+2x3+3x2+4x+5的导数。,即b(x)=d p(x)/dx=4x3+6x2+6x+4,56,6.多项式求值polyval(p,x):p为多项式系数向量,x为输入。,p=1 2 3 4;x=2;y=polyval(p,x)%运算结果为:y=26,例:求多项式 y=x3+2x2+3x+4在x=2处的值。,57,1.4.6 数值分析,58,一、查找最大值,1.求矩阵/向量的
25、最大元素max(A),返回一个行向量,向量的第i个元素是矩阵第i列上的最大元素;y,u=max(A),返回两个行向量,y向量记录A的每列的最大元素,u向量记录每列最大元素的行号。max(A,dim),dim取1或2。dim取1时,该函数和max(A)完全相同。dim取2时,该函数返回一个列向量,其第i个元素是A矩阵的第i行上的最大元素。,59,u=max(A,B),A、B是两个同型的向量或矩阵。结果u是与A、B同型的向量或矩阵,并且u的每个元素等于A、B对应元素的最大者;u=max(A,n),n是一个标量。结果u是与A同型的向量或矩阵,u的每个元素等于A中对应元素和n相比的较大者。,2.两个向
26、量或矩阵元素的比较,60,min函数用来查找最小值,其用法与命令格式与max完全相同。,A=1 9;8 2;B=3 4;6 5;n=5C=max(A,B)C=3 9 8 5D=max(A,n)D=5 9 8 5,例:,61,二、求和与求积,sum(A),返回一个行向量,其第 i个元素是矩阵 A 的第 i列的元素和。sum(A,dim),当 dim 为 1 时,该函数等同于 sum(A),当 dim 为 2 时,返回一个列向量,其第 I个元素是矩阵 A 的第 i行的各元素和。,prod函数用来求积,其用法与命令格式与sum完全相同。,62,A=1 9;8 2B=sum(A)B=9 11C=sum
27、(A,1)%求每列的和D=9 11D=sum(A,2)%求每行的和D=10 10,例:,63,三、求平均值和中值,中值是指在数据序列中其值的大小恰好在中间。例如,数据序列5,3,8,-6,12的中值为5。如果为偶数个元素时,则中值等于中间的两项之平均值。例如,数据序列5,3,8,-6,12,4中,处于中间的数为4和5,故其中值为此两数的平均值4.5。,median函数用来求中值,其用法与命令格式与mean完全相同。,mean(A),返回一个行向量,其第 i个元素是矩阵 A 的第 i列的算术平均值。mean(A,dim),当 dim 为 1 时,该函数等同于 mean(A),当 dim 为 2
28、时,返回一个列向量,其第 i个元素是矩阵 A 的第 i行的算术平均值。,64,一、MATLAB的数学表达式,MATLAB的表达式有两类:数字表达式由数值量、数值变量、数值函数或数值矩阵用运算符连接而成的数学关系式。它主要用来进行数值计算。符号表达式由符号常量、符号变量、符号函数用运算符连接而成的符号对象,主要用来进行符号运算。,1.4.7 MATLAB的数学表达式及其书写,65,数值与变量或变量与变量相乘不能连写,必须用乘号将两变量加以连接;一般数学表达式中可以使用大括号、中括号与小括号,而Matlab表达式只能用小括号;象水平除号线、乘方运算、开根号等纯数学写法在Matlab里不允许也是不能
29、实现的;三角函数与双曲函数及其反函数、对数函数的自变量必须用小括号加以限定;,二、MATLAB数学表达式书写,66,分式的书写,注意分子分母最好都分别用小括号加以限定。特别是分母,当省略小括号的限定时,很容易出错;某量k的平方根表示:sqrt(k)与k(1/2)等效;求幂运算的指数两侧最好用小括号加以限定,否则指数为分式时极易出错;自然常数e的指数运算的书写形式为exp(),对数运算的书写形式为log();自然常数的书写形式为“pi”;虚数单位的书写形式为“i”或“j”;无穷大的书写形式为“inf”或“INF”。,67,例:将以下数学表达式书写成MATLAB表达式。,解:根据Matlab书写规
30、则,以上式子的Matlab表达式为:,(1)y=4*sin(2*x)*exp(-3)+8*cos(2*x)*exp(-3)(2)f=exp(5*t)*2*sqrt(t/pi)(3)5/(3*log(7-x)+9)(4)F=z/(z-exp(T*log(8),68,符号运算的操作对象是非数值的符号对象。与数值运算的区别:数值运算中必须先对变量赋值,然后才能参与运算。符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达。,1.5 Matlab符号运算,符号运算是Matlab的重要组成部分。应用符号计算功能,可以直接对抽象的符号对象进行微积分或代数计算,并获得问题的解析结果。,69,符号运算
31、基础,一、符号变量、符号常量的建立,(1)a=sym(x),x为创建的符号变量,a为输出的变量名。(2)syms arg1 arg2 argN,在一个语句中同时定义多个符号变量。,符号变量和数值变量是不同的。数值变量参与运算前必须先进行赋值,变量的运算实际上是该变量所对应的值进行运算,其运算结果是一个和变量类型对应的值。符号变量运算前不需要赋值,其结果是一个由参与运算的变量名组成的表达式。,70,(3)应用sym()函数还可以定义符号常量。符号常量进行计算得到的是精确的数学表达式;而数值计算得到的是一个近似值。,a=sym(8);b=8;%定义1个符号常量和1个数值常量sqrt(a);%求符号
32、常量a的平方根ans=2*2(1/2)sqrt(b);%求数值常量b的平方根ans=2.8284,例:,71,符号表达式由符号常量、符号变量、符号函数、算术运算符等组成。创建符号表达式/方程的方法有两种:一种是直接用sym函数创建,二是用已经定义的符号变量创建符号表达式。,二、符号表达式/方程和符号矩阵的建立,f=sym(a*x2+b*x+c)f=a*x2+b*x+csyms x a b cf=a*x2+b*x+cf=a*x2+b*x+c,例:,符号表达式一定要用(双单引号)括起来Matlab才能识别。,72,创建符号矩阵的方法也有两种:一种是直接用sym函数创建,命令格式:A=sym();二
33、是用已经定义的符号变量创建。,A=sym(a,2*b;3*a,0)A=a,2*b 3*a,0syms a bA=a 2*b;3*a 0A=a,2*b 3*a,0,例:,用双单引号也可建立符号变量、符号常量和符号表达式。,73,1.5.2 符号对象的基本运算,运算符“+”、“-”、“*”、“”、“/”与“”用于符号对象的加、减、乘、左除、右除与求幂运算。运算符“.*”、“.”、“./”、“.”分别用来实现符号数组的乘、左除、右除与求幂运算。,一、算术运算,运算符“=”和“=”分别对运算符两端的对象进行“相等”与“不等”的比较。当结果为真,语句执行后返回“1”。否则返回“0”。,二、关系运算,74
34、,subs(S,old,new),将符号表达式S中的old替换为new。old为符号表达式中的符号变量,而new可以是符号变量、符号常量等。,三、基本运算函数,1.符号替换,75,syms a b c d k n x y w t;f=a*x n+b*y+k;f1=subs(f,a b k,sin(t)log(w)c*exp(-d*t)f2=subs(f,n k,5 pi)f3=subs(f,k,1:4)%程序运行结果为:f1=sin(t)*xn+log(w)*y+c*exp(-d*t)f2=a*x5+b*y+pi f3=a*xn+b*y+1,a*xn+b*y+2,a*xn+b*y+3,a*xn
35、+b*y+4,76,syms a b c;f=a2*(b+c)+b2*(c+a)+c2*(a+b)+2*a*b*c;factor(f)%程序运行结果为:ans=(b+c)*(c+a)*(a+b),2.符号表达式因式分解factor(),例:已知,试对其进行因式分解。,77,3.符号表达式展开函数expand(),syms x y;f=(2*x+3*y)*(x+1);expand(f)%程序运行结果为:ans=2*x2+2*x+3*x*y+3*y,expand()常用于多项式表达式、三角函数、指数函数和对数函数的展开。,例:已知,试对其进行展开。,78,collect(f,v),是将符号表达式f
36、中变量v的同幂项系数合并。,syms a b x y;f=x2*y+x*y-a*x2-b*x;collect(f,x)%对f按x进行合并同类项%程序运行结果为:ans=(y-a)*x2+(y-b)*x,4.符号表达式合并同类项,例:已知,试对其同类项进行合并。,79,simplify(S),应用代数恒等式对S进行化简。simple(S),调用Matlab的其他函数对表达式进行化简。,syms x c alph beta;e1=sin(x)2+cos(x)2;e10=simplify(e1)e2=exp(c*log(alph+beta);e20=simple(e2)%程序运行结果为:e10=1
37、e20=(alph+beta)c,5.符号表达式化简,例:试对 和,进行化简。,80,1.5.3 微积分运算,一、求极限limit(),(1)limit(f,x,a),求当变量x趋近于常数a时,函数f(x)的极限值。(2)limit(f,x,a,right),求符号函数f的右极限值。right表示变量x从右边趋近于a。(3)limit(f,x,a,left),求符号函数f的左极限值。left表示变量x从左边趋近于a。,81,二、微分diff(),diff(f,v),v为自变量,对表达式f求一阶导数或偏导数。diff(f,v,n),求表达式f的高阶导数或偏导数,v为自变量,n为导数或者偏导数的阶
38、数。,82,Df2=diff(x5*exp(x),2)%程序运行结果为:Df2=20*x3*exp(x)+10*x4*exp(x)+x5*exp(x),例:已知,求。,83,三、积分int(),int(f,v),求符号函数f的不定积分,v为变量。int(f,v,a,b),求符号函数f的定积分,v为变量。a、b分别表示定积分的下限和上限。,R=int(x+1)*(x-2)/x,x)%程序运行结果为:R=1/2*x2-x-2*log(x),例:求不定积分。,例:求定积分。,R=int(x/sqrt(1+x),x,0,3)%程序运行结果为:R=8/3,84,在Matlab中,多次使用int()时,计
39、算的就是重积分。,syms x y;int(int(x2/y2,y,1/x,x),x,1,2)%程序运行结果为:ans=9/4,例:求二重积分,其中D是由直线x=2,y=x以及双曲线xy=1围成的区域。,85,1.5.4 符号方程求解,一、符号代数方程求解,在Matlab中,利用solve函数进行对方程组求解。其调用格式有以下几种:,86,solve(eq):计算单一方程,eq为输入的方程。solve(eq,var):计算单一方程,eq为输入的方程,var用来指明待求变量。solve(eq1,eq2,eqn):计算方程组,eq1,eqn为输入的方程组。变量为默认变量。solve(eq1,eq2
40、,eqn,var1,varn):计算方程组,eq1,eqn为输入的方程组;var1,varn用来指明每个方程待求的变量。,87,syms x a;f=3*x2-3*a2=0;x=solve(f,x)%程序运行结果为:x=-a a,例:求方程 的解。,88,x,y=solve(3*x+y=a,x-y=a,x,y)%程序运行结果为:x=1/2*a y=-1/2*a,例:求方程组 的解。,89,二、微分方程求解,dsolve(eq1,eq2,cond1,cond2,v1,v2,.),求解常微分方程组eq1,eq2,在初始条件cond1,cond2,下的特解。参数v描述方程中的自变量,默认变量为t。若
41、没有给出初值条件cond,则求方程的通解。当y为因变量时,Dny表示y的n阶导函数。比如,初始条件,写成:,写成:,90,syms x yeq=Dy=(x2+y2)/(2*x2);y=dsolve(eq,x)%程序运行结果为:y=x*(-2+log(x)+C1)/(log(x)+C1),例:求微分方程 的通解。,91,一、拉普拉斯变换与反变换,在Matlab软件中,利用laplace函数和ilaplace函数求拉普拉斯变换与反变换。其调用格式为:,F=laplace(f,t,s)F=ilaplace(F,s,t),1.5.5 重要的积分变换,其中,f表示时域函数f(t),t表示时间变量;F表示
42、频域函数F(s),s表示频域变量。,92,例:,syms k t s;f=k*t;F=laplace(f,t,s)%程序运行结果为:F=k/s2f=ilaplace(F)%程序运行结果为:f=k*t,93,二、Z变换与反变换,在Matlab软件中,利用ztrans函数和iztrans函数求Z变换与反变换。其调用格式为:,F=ztrans(f,n,z)f=iztrans(F,z,n),其中,f表示时域函数f(t)或时域序列f(n),n表示时间序列;F表示Z域函数F(z),z表示Z域变量。,94,例:,syms k t s;f=k*t;F=ztrans(f,t,z)%程序运行结果为:F=k*z/(
43、z-1)2f=iztrans(F)%程序运行结果为:f=k*n,95,1.6 MATLAB程序设计,MATLAB的工作模式,指令驱动模式:在命令窗口下输入指令,MATLAB立即处理这些指令,并显示结果。M文件模式:将由MATLAB指令和函数构成的程序存储成以.m为扩展名的文件(M文件),然后再执行该程序文件。,96,脚本文件是由实现某项功能的一系列语句命令与函数组合成的M文件,也称为命令文件。脚本文件没有输入参数,也没有输出参数。执行脚本文件时,文件中的指令或者命令按照出现在脚本文件中的顺序依次执行。,一、脚本文件,脚本文件主要由注释行和代码行组成。注释行需要使用%定义符;代码行则是一些简单的
44、MATLAB指令或命令,命令可以完成相应的计算处理数据、绘制图形结果的操作,也可以在脚本文件中调用其他的函数完成复杂的数学运算。,97,二、函数文件,特定规则:函数m文件首行必须以关键字function开头,如果返回变量只有一个,方括号可以省略。如果函数有多个输入或返回变量,则多个变量之间用英文状态下的逗号加以分隔。函数名的命名规则与变量的命名规则相同。m文件的文件名最好是.m。,function 返回变量=函数名(输入变量)%注释说明语句段 程序语句段 end,98,例:编写函数文件求 的值。,%分式多项式的求值函数function y=pval(x)y=(2*x2+3*x-5)/(x2+x
45、-7)end,99,脚本文件中的所有变量都是全局变量,而函数文件中的变量却是局部变量,只在函数运行期间有效,函数返回后,局部变量会自动在工作空间中消除掉。,函数调用的一般格式为:输出变量=函数名(输入变量),100,M-file编辑/调试器,三、M文件的创建与编辑,编辑/调试器通常用颜色来区分程序内容的类别:黑色程序主体部分;绿色注释部分;紫色属性值设定或标识部分;蓝色控制流程,比如for,ifthen等语句。,101,四、Matlab程序设计基本规则,%说明 clear 定义变量 逐行执行命令 程序控制语句,102,五、流程控制语句,matlab语言的程序结构与其它高级语言一样,分为顺序,循
46、环和选择三大基本结构。顺序结构 按照从上至下的顺序依次执行程序的各条语句。循环结构 就是在程序中某一条语句或多条语句重复多次的运行。选择结构 依照不同的判断条件进行判断,然后根据判断的结果选择某一种方法来解决某一个问题。,103,1、循环语句,MATLAB中有两种循环语句:forend 语句和whileend语句。,forend:用于循环次数已经确定的情况,其调用格式为:,for 循环变量=表达式1:表达式2:表达式3 循环体语句end,其中,表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。步长为1时,表达式2可以省略。对于正的步长,当变量大于表达式3时结束循环
47、,对于负的步长,当变量小于表达式3时结束循环。,104,例:编写函数文件求x的阶乘。,%计算x的阶乘的函数function p=jcheng(x)p=1;for i=1:x p=p*i;endend,105,whileend:用于循环次数不确定的情况,其调用格式为:,while 条件表达式 循环体语句end,其中,条件表达式一般是由逻辑运算、关系运算及一般运算组成的,以判断循环的进行和停止;只要表达式的值非0,继续循环;直到表达式值为0,循环停止。,106,sum=0;i=1;while i=100 sum=sum+i;i=i+1;endsum,例:用while循环求1100间整数的和。,10
48、7,2、条件语句,单分支if语句:,if 条件 语句组end,双分支if语句:,if 条件 语句组1else 语句组2end,当条件成立时,执行语句组1,否则执行语句组2,语句组1或语句组2执行后,再执行end后面的语句。,108,x=input(x=);if x=10 y=cos(x+1)+sqrt(x2+1);else y=x*sqrt(x+sqrt(x);enddisp(y);,x=input(string):以字符串“string”为信息给用户提示,并将用户键入的内容赋值给x。disp():命令窗口输出,109,多分支if语句:,if 条件1 语句组1elseif 条件2 语句组2el
49、seif 条件n 语句组nelse 语句组n+1end,110,x=input(x=);if x=2 y=x+(x-2);elseif x=0 y=x-(x-2);else y=-x-(x-2);enddisp(y);,例:计算函数 的值。,111,switch 开关表达式case 表达式1 语句组1case 表达式2 语句组2otherwise 语句组nend,当开关表达式的值等于case语句后表达式的值时,程序转移到该语句去执行,执行完后直接跳出开关体,执行end后的语句。程序的执行结果与各个case的语句次序无关。当case后所有表达式都不等于开关表达式时,程序将执行otherwise后
50、的语句组。,3、开关语句,112,例:根据变量 num 的值来决定显示的内容。,num=input(请输入一个数);switch num case-1 disp(I am a teacher.);case 0 disp(I am a student.);case 1 disp(You are a teacher.);otherwise disp(You are a student.);end,113,4、流程控制指令,break:用来终止当前循环。可以中断for语句,也可以中断while语句。循环体内设置的条件必须在break指令之前。对于嵌套的循环结构,break指令只能退出包含它的最内层循