《Matlab语言数值和符号运算-编程-绘图.ppt》由会员分享,可在线阅读,更多相关《Matlab语言数值和符号运算-编程-绘图.ppt(163页珍藏版)》请在三一办公上搜索。
1、控制系统仿真,Chapter 2 Matlab语言数值运算、符号计算、程序设计、绘图西南石油大学电信学院自动化教研室主讲:张悦,2023/7/7,电信学院-自动化教研室-张悦,2,主要内容,4,Matlab语言的数值运算&符号计算,5,Matlab语言基本编程,Matlab绘图,6,2,电信学院-自动化教研室-张悦,2023/7/7,2023/7/7,电信学院-自动化教研室-张悦,3,2023/7/7,电信学院-自动化教研室-张悦,3,4,Matlab语言的数值运算&符号计算,5,Matlab语言基本编程,Matlab绘图,6,2023/7/7,电信学院-自动化教研室-张悦,4,常量(预定义变
2、量)是指在Matlab中已经预先定义其数值的参量。常量分为:实数常量和复数常量Z=a+bi z=r*exp(*i)r-复数的模;-复数幅角的弧度数,4.1 Matlab变量与赋值4.1.1 Matlab常量、预定义变量,2023/7/7,电信学院-自动化教研室-张悦,4,表4-1 Matlab中默认的常量,2023/7/7,电信学院-自动化教研室-张悦,5,4.1.1 Matlab常量、预定义变量,2023/7/7,电信学院-自动化教研室-张悦,5,表4-1 Matlab中默认的常量(续),2023/7/7,电信学院-自动化教研室-张悦,6,变量是数值计算的基本单元。与C语言和其他语言不同的是
3、,Matlab对于变量的使用无需提前定义,一个变量如果其名称在语句命令中第一次被合法使用,则此变量就被定义,同时Matlab会给该变量分配适当的内存。在运算表达式变量中不允许有未定义的变量。Matlab也不需要预先定义变量的类型。如果用户输入的变量已经存在,则Matlab则使用新输入的变量替换原有变量。,4.1.2 变量4.变量的定义,2023/7/7,电信学院-自动化教研室-张悦,6,2023/7/7,电信学院-自动化教研室-张悦,7,变量名由任意字母、数字或下划线组成。变量名必须以英文字母开头。变量名不能包含有空格等标点符号。变量名长度不超过31位,超过部分将被忽略。变量名区分字母的大小写
4、。特殊变量-全局变量:变量前加global,一般用大写字母书写全局变量。,4.1.2 变量2.变量命名规则,2023/7/7,电信学院-自动化教研室-张悦,7,2023/7/7,电信学院-自动化教研室-张悦,8,4.1.2 变量3.变量赋值语句,2023/7/7,电信学院-自动化教研室-张悦,8,变量=表达式,2023/7/7,电信学院-自动化教研室-张悦,9,Matlab预定义变量(如pi,i,j)有特殊的含义,在对变量命名时,应避开使用这些变量名,并避免对这些变量重新赋值。有些预定义变量也可作为变量使用,如i在Matlab中表示虚数单位,但也可以作为变量使用。,4.1.2 变量4.变量命名
5、说明,2023/7/7,电信学院-自动化教研室-张悦,9,2023/7/7,电信学院-自动化教研室-张悦,10,4.1.2 变量5.变量的操作-变量查看,2023/7/7,电信学院-自动化教研室-张悦,10,who和whos命令,Who和whos命令都用来列出matlab工作区中已驻留的变量清单。Whos给出变量的维数和性质。,2023/7/7,电信学院-自动化教研室-张悦,11,4.1.2 变量5.变量的操作-变量删除修改,2023/7/7,电信学院-自动化教研室-张悦,11,方法1:workplace直接删除和修改方法2:Command window指令操作,2023/7/7,电信学院-自
6、动化教研室-张悦,12,4.2 Matlab运算符与函数1.算术运算符,2023/7/7,电信学院-自动化教研室-张悦,12,表4-2 Matlab中常用的算术运算符,2023/7/7,电信学院-自动化教研室-张悦,13,4.2 Matlab运算符与函数2.关系运算符,2023/7/7,电信学院-自动化教研室-张悦,13,表4-3 Matlab中常用的关系运算符,2023/7/7,电信学院-自动化教研室-张悦,14,4.2 Matlab运算符与函数3.逻辑运算符,2023/7/7,电信学院-自动化教研室-张悦,14,表4-4 Matlab中常用的逻辑运算符,2023/7/7,电信学院-自动化教
7、研室-张悦,15,4.2 Matlab运算符与函数4.数学函数,2023/7/7,电信学院-自动化教研室-张悦,15,表4-5 Matlab中常用的数学函数,2023/7/7,电信学院-自动化教研室-张悦,16,4.2 Matlab运算符与函数4.数学函数,2023/7/7,电信学院-自动化教研室-张悦,16,表4-5 Matlab中常用的数学函数(续),2023/7/7,电信学院-自动化教研室-张悦,17,4.2 Matlab运算符与函数5.三角函数,2023/7/7,电信学院-自动化教研室-张悦,17,表4-6 Matlab中常用的三角函数,2023/7/7,电信学院-自动化教研室-张悦,
8、18,4.2 Matlab运算符与函数5.三角函数,2023/7/7,电信学院-自动化教研室-张悦,18,表4-6 Matlab中常用的三角函数(续),2023/7/7,电信学院-自动化教研室-张悦,19,4.2 Matlab运算符与函数6.运算优先级,2023/7/7,电信学院-自动化教研室-张悦,19,表4-7 运算符的优先级次序,2023/7/7,电信学院-自动化教研室-张悦,20,4.3 矩阵4.3.1 矩阵构建-1.直接输入法,2023/7/7,电信学院-自动化教研室-张悦,20,矩阵中的元素需要用()括住;矩阵中每行的元素之间需要用逗号(,)或空格符隔开;矩阵中行与行之间需要分号(
9、;)或回车键隔开,以便区分;矩阵中的元素可以是数值类型或表达式类型。,2023/7/7,电信学院-自动化教研室-张悦,21,4.3.1 矩阵的构建2.通过语句构造生成矩阵1,2023/7/7,电信学院-自动化教研室-张悦,21,first-向量的起始值;step-步长值;last-向量的结束值。,first:step:last语句,当step省略时默认步长值为1。,first:last语句,2023/7/7,电信学院-自动化教研室-张悦,22,矩阵就是由mn个数排列成m行n列的数表,可以是复数。向量是由m个实数组成的有序数组,是一个n1的矩阵(n维列向量),或一个1m的矩阵(m维行向量)。向量
10、组就是有限个相同维数的行向量或列向量组成的一组矩阵。一个向量是一个矩阵,一个向量组是n个矩阵;一个1n或n1矩阵可称为是一个向量,一个mn矩阵不是向量,也不是向量组。,4.3.1 矩阵的构建向量和矩阵完全相同吗 不完全,2023/7/7,电信学院-自动化教研室-张悦,22,2023/7/7,电信学院-自动化教研室-张悦,23,4.3.1 矩阵的构建2.通过语句构造生成矩阵2,2023/7/7,电信学院-自动化教研室-张悦,23,x=linspace(first,last,num),first-行向量的起始值;last-行向量的结束值;num-行向量中所含元素个数。如果num缺省,默认值为100
11、。,x=logspace(a,b,n),线性等分向量,对数等分向量,2023/7/7,电信学院-自动化教研室-张悦,24,4.3.1 矩阵的构建3.通过矩阵生成函数构造特殊矩阵,2023/7/7,电信学院-自动化教研室-张悦,24,表4-8 特殊矩阵函数,2023/7/7,电信学院-自动化教研室-张悦,25,4.3.1 矩阵的构建3.通过矩阵生成函数构造特殊矩阵,2023/7/7,电信学院-自动化教研室-张悦,25,表4-8 特殊矩阵函数(续),2023/7/7,电信学院-自动化教研室-张悦,26,4.3.1 矩阵的构建3.通过矩阵生成函数构造特殊矩阵,2023/7/7,电信学院-自动化教研室
12、-张悦,26,表4-8 特殊矩阵函数(续),2023/7/7,电信学院-自动化教研室-张悦,27,如果矩阵为空矩阵,则可以直接写成A=。空矩阵是Matlab中定义大小为0的变量。当没有其他合适的结果时,在Matlab中的许多函数返回空矩阵。空矩阵作用如下:(1)在没有空矩阵参与运算时,计算结果中的“空”可以合理地解释所得结果的含义;(2)运用空矩阵对其他非空矩阵赋值,可以使矩阵变小,但不能改变被赋值矩阵的维数。,4.3.1 矩阵的构建4.空矩阵,2023/7/7,电信学院-自动化教研室-张悦,27,2023/7/7,电信学院-自动化教研室-张悦,28,4.3.2 矩阵元素操作,2023/7/7
13、,电信学院-自动化教研室-张悦,28,%列矩阵元素数据的获取 B=1;3;5;7;9;B(3)%表示取出列矩阵B的第3个元素ans=5 B(5,1)%表示取出列矩阵B的第5行第1列元素ans=9 B(2:4)%列矩阵第24个元素ans=3 5 7,%行矩阵元素数据获取 A=3 5-2 6 0 9;A(2)%表示取出行矩阵A的第2个元素ans=5 A(1,4)%表示取出行矩阵A的第1行第4列的元素ans=6 A(3:5)%表示取出行矩阵A的第35个元素ans=-2 6 0,2023/7/7,电信学院-自动化教研室-张悦,29,4.3.2 矩阵元素操作,2023/7/7,电信学院-自动化教研室-张
14、悦,29,一般矩阵元素数据的获取,2023/7/7,电信学院-自动化教研室-张悦,30,4.3.3 矩阵和数组基本运算 1.运算指令,2023/7/7,电信学院-自动化教研室-张悦,30,表4-9 矩阵和数组运算指令,2023/7/7,电信学院-自动化教研室-张悦,31,4.3.3 矩阵和数组基本运算 1.运算指令,数组加减(a.b)是对应元素相加减,与矩阵加减等效。数组乘除(a.*b,a./b,a.b)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%数组相乘,对应元素相乘 a*b%矩阵相乘,线性
15、代数 ans=ans=2 8 18 25 37 46 4 15 30 55 85 109 49 72 90 85 133 172,2023/7/7,电信学院-自动化教研室-张悦,32,数组中的元素可以是字符等;矩阵中的元素只能是数;这是两者最直观的区别。运算规则不同:数组是元素对元素的运算,无论什么样的运算对数组中的元素都是平等进行的;而矩阵采用线性代数的运算方式。因为矩阵是数学概念(线性代数里的);数组是计算机上的概念。你见过纯数学里有数组的概念吗?没有。因为计算机上(准确的说是信息科学中)常用到线性代数的知识,就引用了矩阵的概念。,4.3.3 矩阵和数组基本运算数组和矩阵完全相同吗 不完全
16、,2023/7/7,电信学院-自动化教研室-张悦,32,2023/7/7,电信学院-自动化教研室-张悦,33,4.3.3 矩阵和数组基本运算2.矩阵函数指令,2023/7/7,电信学院-自动化教研室-张悦,33,表4-10 Matlab中基本矩阵函数指令,2023/7/7,电信学院-自动化教研室-张悦,34,4.3.3 矩阵和数组基本运算2.矩阵函数指令,2023/7/7,电信学院-自动化教研室-张悦,34,表4-10 Matlab中基本矩阵函数指令(续),2023/7/7,电信学院-自动化教研室-张悦,35,线性方程组的一般矩阵形式可以表示如下:AX=B,其中A为等式左边各方程式的系数项,A
17、=(aij)mn,X为欲求解的未知项,B代表等式右边之已知项,B=(b1,b2,bn)T。线性方程组有解的充分必要条件是:r(A|b)=r(A),且当r(A|b)=n时,有唯一解;当r(A|b)n时,有无穷多解。,4.4 数值运算4.4.1 线性方程组,2023/7/7,电信学院-自动化教研室-张悦,35,2023/7/7,电信学院-自动化教研室-张悦,36,4.4 数值运算,Matlab一种演算纸式的科学工程计算语言。Matlab的两种基本的数值运算是矩阵和多项式。数值计算的交互系统,通过简单的“问答式”操作即可获得可以信赖的计算结果;繁杂的数值计算只要一两个指令即可轻松实现。,4.4.1
18、线性方程组,在Matlab中,如果有线性方程组AX=B,则X=AB,这种利用矩阵相除的方法即为直接解法。假设A为mn矩阵,根据m和n的不同关系,线性方程组的解可以分为3种情况:当m=n时,且A可逆(A存在逆矩阵)时,给出唯一解;当mn时,矩阵给出方程的最小二乘解;当mn时,矩阵给出方程的最小范数解。,2023/7/7,电信学院-自动化教研室-张悦,38,例:求下列线性方程式的根。用实现,即X=AB。用逆矩阵求解:X=A-1B,即X=inv(A)*B,4.4.1 线性方程组,2023/7/7,电信学院-自动化教研室-张悦,38,2023/7/7,电信学院-自动化教研室-张悦,39,4.4.1 线
19、性方程组,方程的个数和未知数的个数不相等时,可采用消去法。将增广矩阵(A B)化为简化阶梯形,若系数矩阵的秩不等于增广矩阵的秩,则方程组无解。若系数矩阵的秩等于增广矩阵的秩,则方程组有解。方程组的解就是简化阶梯形所对应的方程组的解。例:解线性方程组。A=1-2 3 2 2;4 2 1 3 4;2 3 1 1 1;rref(A)ans=1.0000 0 0 0.8519 1.2593 0 1.0000 0-0.2963-0.4815 0 0 1.0000 0.1852-0.0741,2023/7/7,电信学院-自动化教研室-张悦,40,多项式:用行向量:P=a0,a1,an-1,an表示。用命令
20、poly(A)如果A是形如:a0,a1,an-1,an的向量,则命令poly(A)生成(x-a0)(x-a1)(x-an-1)(x-an)多对应的多项式的系数向量;如果A是方阵,则命令poly(A)生成的式子是矩阵A的特征多项式。,4.4.2 多项式,2023/7/7,电信学院-自动化教研室-张悦,40,2023/7/7,电信学院-自动化教研室-张悦,41,例:已知向量A=1,-34,-80,0,0,用此向量构造一多项式,并显示结果。,4.4.2 多项式,2023/7/7,电信学院-自动化教研室-张悦,41,(x-1)(x+34)(x+80)x2=x5+113x4+2606x3-2720 x2
21、,2023/7/7,电信学院-自动化教研室-张悦,42,例:求三阶方阵A的特征多项式。,4.4.2 多项式,2023/7/7,电信学院-自动化教研室-张悦,42,2023/7/7,电信学院-自动化教研室-张悦,43,4.4.2 多项式常用的多项式函数,2023/7/7,电信学院-自动化教研室-张悦,43,表4-11 常用的多项式函数,2023/7/7,电信学院-自动化教研室-张悦,44,4.4.2 多项式,例:求两个多项式的和、积、商。a=5,4,3,2,1;b=3,0,1;c=a+0,0,b%求和 d=conv(a,b)%求积%求商,结果包含商多项式%和余数多项式两部分 div,rest=d
22、econv(d,a),2023/7/7,电信学院-自动化教研室-张悦,44,c=5 4 6 2 2d=15 12 14 10 6 2 1div=3 0 1rest=0 0 0 0 0 0 0,2023/7/7,电信学院-自动化教研室-张悦,45,4.4.2 多项式,例:求多项式p(x)的微分、根和x=1时的值。p=2-6 3 0 7;%求微分 q=polyder(p)%求根 x=roots(p)%求值 polyval(p,1),q=8-18 6 0 x=1.9322+0.4714i 1.9322-0.4714i-0.4322+0.8355i-0.4322-0.8355ians=6,2023/7
23、/7,电信学院-自动化教研室-张悦,45,课堂作业,4-1 设矩阵A和B满足关系式:AB=A+2B,已知:A=4,2,3;1,1,0;-1,2,3;求矩阵B。4-2 求线性方程组的解。4-3 将表达式(x-4)(x+5)(x2-6x+9)展开为多项式形式,并求其对应的一元n次方程的根。4-4 已知一元四次方程对应的4个根为:-5,4,3,3,求这个方程对应的表达式原型。,2023/7/7,电信学院-自动化教研室-张悦,47,4.5 符号运算,前边所做的运算都是针对数值进行的,数值运算具有简单方便、面向实用等优点,广泛应用工程实践及科学研究等各个方面,但同时它也有一些缺点,如无法得到无误差的最终
24、解,不适用于非数值运算的场合等。引入符号运算就能解决这方面的问题,就像平时进行数学公式推导一样,符号运算允许在运算对象和运算过程中出现非数值的符号变量,这为用户进行数据分析提供了有力工具。Matlab符号运算是在符号数学工具箱(Symbolic Math Toolbox)支持下完成的。,2023/7/7,电信学院-自动化教研室-张悦,47,2023/7/7,电信学院-自动化教研室-张悦,48,4.5.1 符号变量和符号表达式,%使用sym函数创建符号变量和表达式x=sym(x)f1=sym(a*x2+b*x+c)%syms可定义多个符号syms a b c x k t yf2=a*(2*x-t
25、)3+b*sin(4*y)%用findsym来确定符号表达式中的符号findsym(f2),x=x f1=a*x2+b*x+c f2=a*(2*x-t)3+b*sin(4*y)ans=a,b,t,x,y,注意:在上面的符号表达式中,系统会自动将x作为自变量来处理,而将a,b,c等作为常量参数。也就是说若符号表达式中含有多于一个符号变量时,如果没有事先指定哪一个作为自变量,Matlab将会按数学常规自行决定。,2023/7/7,电信学院-自动化教研室-张悦,48,2023/7/7,电信学院-自动化教研室-张悦,49,4.5.1 符号变量和符号表达式,f1=sym(a*x2+b*x+c);df=d
26、iff(f1)df=2*a*x+b决定原则:自变量为除了i和j之外并且在字母位置上最接近x的小写字母;如果式子中不包含字母(i和j除外),则x会被视为默认自变量。,2023/7/7,电信学院-自动化教研室-张悦,49,2023/7/7,电信学院-自动化教研室-张悦,50,4.5.2 极限,2023/7/7,电信学院-自动化教研室-张悦,50,2023/7/7,电信学院-自动化教研室-张悦,51,4.5.2 极限limit,limit(1/x,x,0)ans=NaNlimit(1/x,x,0,left)ans=-inf limit(1/x,x,0,right)ans=inf,2023/7/7,电
27、信学院-自动化教研室-张悦,51,如果自变量不是x,则需采用显式说明。例如采用极限的方法求函数的导数。求函数cos(x)的导数,有:syms t xlimit(cos(x+t)-cos(x)/t,t,0)ans=-sin(x),2023/7/7,电信学院-自动化教研室-张悦,52,4.5.3 微分diff,求微分的函数是diff,相关的函数语法有下列4个:diff(f)-求f对默认独立变量的一次微分值;diff(f,t)-求f对独立变量t的一次微分值;diff(f,n)-求f对独立变量的n次微分值;diff(f,t,n)-求f对独立变量t的n次微分值。,2023/7/7,电信学院-自动化教研室
28、-张悦,52,2023/7/7,电信学院-自动化教研室-张悦,53,2023/7/7,电信学院-自动化教研室-张悦,53,4.5.3 微分diff,例:已知,求f(x)的微分。syms a b c x f=sym(a*x2+b*x+c);diff(f)%对默认自变量x求微分ans=2*a*x+bdiff(f,2)%对x求二次微分ans=2*a,diff(f,a,2)%对a求二次积分ans=0 diff(diff(f),a)%对x和a求偏导ans=2*x,2023/7/7,电信学院-自动化教研室-张悦,54,4.5.4 积分int,int用以演算某一函数的积分项,这个函数要找出一个符号式F,使得
29、diff(F)=f。语法如下:int(f)-返回f对默认独立变量的积分值;int(f,t)-返回f对独立变量t的积分值;int(f,a,b)-返回f对默认独立变量的积分值,积分区间为a,b,a和b为数值式;int(f,t,a,b)-返回f对独立变量t的积分值,积分区间为a,b,a和b为数值式;int(f,m,n)-返回f对默认独立变量的积分值,积分区间为m,n,m和n为符号式。,2023/7/7,电信学院-自动化教研室-张悦,54,2023/7/7,电信学院-自动化教研室-张悦,55,4.5.4 积分int,例:已知,求f(x)的积分。syms a b c x f=sym(a*x2+b*x+c
30、);int(f)%表达式f的不定积分,自变量是xans=1/3*a*x3+1/2*b*x2+c*x int(f,x,0,2)%表达式f在0,2的定积分,自变量是xans=8/3*a+2*b+2*c int(f,a)%表达式f的不定积分,自变量是aans=1/2*a2*x2+b*x*a+c*a,2023/7/7,电信学院-自动化教研室-张悦,55,2023/7/7,电信学院-自动化教研室-张悦,56,4.5.4 积分int,int(int(f,a),x)ans=1/6*a2*x3+1/2*b*x2*a+c*a*x与微分相比,积分复杂得多。因为函数的积分可能不存在,有时即使存在,也可能限于某些条件
31、,使得Matlab系统无法顺利得出答案。当Matlab不能找到积分时,它将返回该函数表达式。int(x*sin(a*x4)*exp(x2/2)Warning:Explicit integral could not be found.In sym.int at 58 In char.int at 9 ans=int(x*sin(a*x4)*exp(1/2*x2),x),2023/7/7,电信学院-自动化教研室-张悦,57,微分&积分函数作用于符号矩阵,结果是对矩阵的每一个元素进行微分&积分运算。,syms a b x D=a*x,cos(x);b*a,sin(b*x)D=a*x,cos(x)b*
32、a,sin(b*x)diff(D)int(D),2023/7/7,电信学院-自动化教研室-张悦,58,4.5.5 级数,可用于级数的函数:symsum(s,v,a,b)-自变量v在a,b之间取值时,对通项s求和;toylor(F,v,n)-求F对自变量v的泰勒级数展开,至n阶小。例 syms k symsum(1/k,k,1,inf)ans=Infans=1,2023/7/7,电信学院-自动化教研室-张悦,58,2023/7/7,电信学院-自动化教研室-张悦,59,4.5.5 级数,例:求sin(x)的前十项展开式。syms x taylor(sin(x),10)ans=x-1/6*x3+1/
33、120*x5-1/5040*x7+1/362880*x9,2023/7/7,电信学院-自动化教研室-张悦,60,4.5.6 方程求解solve,利用符号表达式解代数方程所需要的函数为:solve(f)例:求一元二次方程的根。f=sym(a*x*x+b*x+c=0)f=a*x*x+b*x+c=0 solve(f)ans=1/2/a*(-b+(b2-4*a*c)(1/2)1/2/a*(-b-(b2-4*a*c)(1/2),2023/7/7,电信学院-自动化教研室-张悦,60,指定要求解的变量是a:solve(f,a)syms a b c solve(f,a)ans=-(b*x+c)/x2,%对有等
34、号的符号方程求解 solve(1+x=sin(x)ans=,2023/7/7,电信学院-自动化教研室-张悦,61,4.5.6 方程求解solve,对于含有周期函数方程求解时,虽然它本身可能有无穷多个解。但Matlab只能求出零附近的有限几个解。例:solve(sin(x)=1/2)ans=1/6*pi解由f1,f2,fn组成的代数方程组的命令:solve(f1,f2,fn)例:求方程的解。eq1=sym(x+y+z=10);eq2=sym(x-y+z=0);eq3=sym(2*x-y-z=-4);x,y,z=solve(eq1,eq2,eq3),2023/7/7,电信学院-自动化教研室-张悦,
35、62,4.5.7 常微分方程dsolve,Matlab解常微分方程的函数为:dsolve(equation,condition)其中equation代表常微分方程式,condition为初始条件;如果用户没有给出初始条件,则会求解出通解形式。在函数dsolve所包含的equation中,用字母D来表示求微分,其后的数字表示几重微分,后面的变量为因变量。如Dy代表一阶微分项y,D2y代表二阶微分项y等,并默认所有这些变量都是对自变量t求导。,2023/7/7,电信学院-自动化教研室-张悦,62,2023/7/7,电信学院-自动化教研室-张悦,63,4.5.7 常微分方程dsolve,dsolve
36、(Dy=5)%求微分方程y=5的通解。ans=5*t+C1 dsolve(Dy=x,x)%求微分方程y=x的通解,指定x为自变量ans=1/2*x2+C1 dsolve(D2y=1+Dy)%求微分方程y=1+y的通解ans=exp(t)*C1-t+C2 dsolve(D2y=1+Dy,y(0)=1,Dy(0)=0)%求微分方程的解,加初始条件ans=exp(t)-t,2023/7/7,电信学院-自动化教研室-张悦,64,4.5.7 常微分方程dsolve,dsolve函数还可以用于微分方程组的求解。%不加初始条件,求通解 x,y=dsolve(Dx=y+x,Dy=2*x)x=-1/2*C1*e
37、xp(-t)+C2*exp(2*t)y=C1*exp(-t)+C2*exp(2*t)%加初始条件,求特解 x,y=dsolve(Dx=y+x,Dy=2*x,x(0)=0,y(0)=1)x=-1/3*exp(-t)+1/3*exp(2*t)y=2/3*exp(-t)+1/3*exp(2*t),2023/7/7,电信学院-自动化教研室-张悦,65,4.5.8 反函数finverse,对于函数f(x),存在另一个函数g(.),使得g(f(x)=x成立,则称函数g(.)是函数f(x)的反函数。求符号函数的反函数语法为:finverse(f)-是对默认自变量的函数求反函数;finverse(f,v)-表
38、示对指定自变量为v的函数f(v)求反函数。syms x y finverse(1/tan(x)ans=atan(1/x)f=x2+y;finverse(f,y)ans=-x2+y finverse(f)Warning:finverse(x2+y)is not unique.ans=-(-y+x)(1/2),2023/7/7,电信学院-自动化教研室-张悦,65,2023/7/7,电信学院-自动化教研室-张悦,66,4.5.9 复合函数compose,求符号函数的符合函数语法为:compose(f,g)-求f=f(x)和g=g(y)的复合函数f(g(y);compose(f,g,z)-求f=f(x
39、)和g=g(y)的复合函数f(g(z);compose(f,g,x,z)-求f=f(x)和g=g(y)的复合函数f(g(z),其中x是f的自变量;compose(f,g,x,y,z)-求f=f(x)和g=g(y)的复合函数f(g(z),其中x是f的自变量,y是g的自变量。,2023/7/7,电信学院-自动化教研室-张悦,66,2023/7/7,电信学院-自动化教研室-张悦,67,4.5.9 复合函数compose,syms x y z t uf=1/(1+x2);g=sin(y);h=xt;p=exp(-y/u);组 compose(f,g)%求f(x)和g(y)的复合函数f(g(y)ans=
40、1/(1+sin(y)2)compose(f,g,t)%求f(x)和g(y)的复合函数f(g(t)ans=1/(1+sin(t)2)组 compose(h,g,x,z)%求h=h(x)和g=g(y)的复合函数h(g(z),x是h的自变量ans=sin(z)t,2023/7/7,电信学院-自动化教研室-张悦,68,4.5.9 复合函数compose,compose(h,g,t,z)%求h=h(x)和g=g(y)的复合函数h(g(z),t是h的自变量ans=xsin(z)组 compose(h,p,x,y,z)ans=exp(-z/u)t%求h=h(x)和p=p(y)的复合函数h(p(z);x是h
41、的自变量,y是p的自变量 compose(h,p,t,u,z)ans=xexp(-y/z)%求h=h(t)和p=p(u)的复合函数h(p(z);t是h的自变量,u是p的自变量,2023/7/7,电信学院-自动化教研室-张悦,69,4.5.10A 傅立叶(Fourier)变换,傅立叶变换函数fourier的调用格式有以下几种:通过F=fourier(f)求时域函数f的fourier变换,默认自变量为x。返回结果默认为w的函数。如采用f=f(w)格式,fourier函数返回t的函数F(t)。采用F=fourier(f,v)格式,系统会认为F是符号变量v的函数,而不是默认值w的函数。fourier(
42、f,v)F(v)=int(f(x)*exp(-i*v*x),x,-inf,inf)采用fourier(f,u,v)格式,系统会将f看做是u而不是默认值x的函数,因此积分是对u做积分。fourier(f,u,v)F(v)=int(f(u)*exp(-i*v*u),u,-inf,inf)函数ifourier是用来求傅立叶变换的反变换的,其调用格式类似于fourier。,2023/7/7,电信学院-自动化教研室-张悦,69,2023/7/7,电信学院-自动化教研室-张悦,70,4.5.10A 傅立叶(Fourier)变换,例:计算f(t)=1/t的傅立叶变换。syms t w F=fourier(1
43、/t,t,w)or F=fourier(1/t)F=i*pi*(1-2*heaviside(w)例:求e-x2的傅立叶变换。syms x t fourier(exp(-x2),x,t)ans=pi(1/2)*exp(-1/4*t2),2023/7/7,电信学院-自动化教研室-张悦,71,4.5.10B 傅立叶(ifourier)反变换,傅立叶反变换函数ifourier的调用格式有以下几种:通过f=ifourier(F)实现函数F的fourier反变换。如果F的默认自变量为w,返回结果f的默认自变量为x。如果F的自变量为x,返回结果f的自变量为t。采用f=ifourier(F,u)格式,返回结果
44、f是符号变量u的函数。采用f=ifourier(F,v,u)格式,F的自变量为v,返回结果f是符号变量u的函数。例:求上例F的傅立叶反变换。syms w t F=i*pi*(1-2*heaviside(w)f=ifourier(F,t),2023/7/7,电信学院-自动化教研室-张悦,72,4.5.11A 拉氏(Laplace)变换,Laplace函数的调用格式如下:通过L=laplace(F)求时域函数F的LaplaceI变换,默认自变量为t。返回结果默认为s的函数。如采用F(s)格式,Laplace函数返回t的函数L(t)。采用L=laplace(F,t)格式,认为L是符号变量t而不是默认
45、值s的函数。laplace(F,t)L(t)=int(F(x)*exp(-t*x),0,inf)采用L=laplace(F,w,z)格式,认为L是z而不是默认值s的函数,因此,积分是对w作积分。laplace(F,w,t)L(t)=int(F(w)*exp(-z*w),0,inf),2023/7/7,电信学院-自动化教研室-张悦,72,2023/7/7,电信学院-自动化教研室-张悦,73,4.5.11A 拉氏(Laplace)变换,例:求x5的拉氏变换。x=sym(x)laplace(x5)ans=120/s6,例:求取sin(at)的拉氏变换。syms a t s F=laplace(sin
46、(a*t),t,s)F=a/(s2+a2),2023/7/7,电信学院-自动化教研室-张悦,74,4.5.11B 拉氏(ilaplace)反变换,通过ilaplace函数实现拉普拉斯反变换,该函数的调用格式有以下3种:F=ilaplace(L),实现函数L的拉普拉斯反变换。如果L的自变量为s,则返回结果为t的函数;如果L的自变量为t,则返回结果为x的函数;F=ilaplace(L,y),返回结果为y的函数。F=ilaplace(L,y,x),指定L的自变量为y,返回结果为x的函数。例:求1/(s+a)的拉氏逆变换。例:求1的拉氏逆变换。syms a t s syms t s f1=ilapla
47、ce(1/(s+a),s,t)f2=ilaplace(1,s,t)f1=exp(-a*t)f2=dirac(t),2023/7/7,电信学院-自动化教研室-张悦,75,4.5.12A Z变换(ztrans),Z变换ztrans函数的调用格式如下:可以通过F=ztrans(f)求时域函数f的Z变换,默认自变量为n。返回结果默认为z的函数。采用F=ztrans(f,w)格式,认为F是符号变量w,而不是默认值z的函数。ztrans(f,w)F(w)=symsum(f(n)/wn,n,0,inf)采用F=ztrans(f,k,w)格式,认为f是k函数。ztrans(f,k,w)F(w)=symsum(
48、f(k)/wk,k,0,inf),2023/7/7,电信学院-自动化教研室-张悦,75,2023/7/7,电信学院-自动化教研室-张悦,76,4.5.12A Z变换(ztrans),例:求函数(k-a)3(n-b)3的z变换。syms k n x w u a b f=(k-a)3*(n-b)3;ztrans(f)%系统默认情况下求取函数f的z变换ans=(k-a)3*(z*(z2+1+4*z)/(z-1)4-3*b*z*(z+1)/(z-1)3+3*b2*z/(z-1)2-b3*z/(z-1)ztrans(f,u)%指定变量情况下求取函数f的z变换ans=(k-a)3*(u*(u2+1+4*u
49、)/(u-1)4-3*b*u*(u+1)/(u-1)3+3*b2*u/(u-1)2-b3*u/(u-1),2023/7/7,电信学院-自动化教研室-张悦,77,4.5.12B Z反变换(iztrans),通过iztrans函数完成z反变换,其调用格式如下:f=iztrans(F)-若F的默认自变量为z,则返回结果为n的函数;如果F是n的函数,则返回结果为z的函数。f=iztrans(F,k)-指定返回结果为k的函数。f=iztrans(F,w,k)-指定F的自变量为w,返回结果为k的函数。例:求取函数2z/(z-2)2的逆z变换。syms z n a k f=2*z/(z-2)2;iztran
50、s(f)ans=2n*n,课堂作业,4-5 求极限。4-6 求f(t)。4-7 求积分。4-8 求一阶微分方程的通解。4-9 求微分方程组通解。,2023/7/7,电信学院-自动化教研室-张悦,79,2023/7/7,电信学院-自动化教研室-张悦,79,4,Matlab语言的数值运算,5,Matlab语言基本编程,Matlab绘图,6,2023/7/7,电信学院-自动化教研室-张悦,80,5 Matlab语言基本编程,2023/7/7,电信学院-自动化教研室-张悦,80,Matlab语言称为第四代编程语言,程序简洁、可读性很强而且调试十分容易,是Matlab的重要组成部分。,2023/7/7,