《(精品)第九章matlab符号计算.ppt》由会员分享,可在线阅读,更多相关《(精品)第九章matlab符号计算.ppt(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第九章第九章 MATLAB符号计算符号计算 4/6/20231n n 符号对象符号对象n n 符号微积分符号微积分n n 级数级数n n符号方程求解符号方程求解4/6/202329.1 符号对象符号对象9.1.1 建立符号对象建立符号对象 1.1.建立符号变量和符号常量建立符号变量和符号常量建立符号变量和符号常量建立符号变量和符号常量 MATLABMATLAB提供了两个建立符号对象的函数:提供了两个建立符号对象的函数:提供了两个建立符号对象的函数:提供了两个建立符号对象的函数:symsym和和和和symssyms,两个函数的用法不同。,两个函数的用法不同。,两个函数的用法不同。,两个函数的用法
2、不同。(1)sym(1)sym函数函数函数函数 symsym函数用来建立单个符号量,一般调用格式为:函数用来建立单个符号量,一般调用格式为:函数用来建立单个符号量,一般调用格式为:函数用来建立单个符号量,一般调用格式为:符号量名符号量名符号量名符号量名=sym(=sym(符号字符串符号字符串符号字符串符号字符串)该函数可以建立一个符号量,符号字符串可以是该函数可以建立一个符号量,符号字符串可以是该函数可以建立一个符号量,符号字符串可以是该函数可以建立一个符号量,符号字符串可以是常量、变量、函数或表达式。常量、变量、函数或表达式。常量、变量、函数或表达式。常量、变量、函数或表达式。应用应用应用应
3、用symsym函数还可以定义符号常量,使用符号常函数还可以定义符号常量,使用符号常函数还可以定义符号常量,使用符号常函数还可以定义符号常量,使用符号常量进行代数运算时和数值常量进行的运算不同。量进行代数运算时和数值常量进行的运算不同。量进行代数运算时和数值常量进行的运算不同。量进行代数运算时和数值常量进行的运算不同。4/6/20233(2)syms函数函数 函数函数sym一次只能定义一个符号变量,使用一次只能定义一个符号变量,使用不方便。不方便。MATLAB提供了另一个函数提供了另一个函数syms,一次可以定义多个符号变量。一次可以定义多个符号变量。syms函数的一般函数的一般调用格式为:调用
4、格式为:syms 符号变量名符号变量名1 符号变量名符号变量名2 符号变符号变量名量名n 用这种格式定义符号变量时不要在变量名用这种格式定义符号变量时不要在变量名上加字符串分界符上加字符串分界符(),变量间用空格而不要变量间用空格而不要用逗号分隔。用逗号分隔。4/6/202342.建立符号表达式建立符号表达式 含有符号对象的表达式称为符号表达式。含有符号对象的表达式称为符号表达式。建立符号表达式有以下建立符号表达式有以下3种方法:种方法:(1)利用单引号来生成符号表达式。利用单引号来生成符号表达式。(2)用用sym函数建立符号表达式。函数建立符号表达式。(3)使用已经定义的符号变量组成符号表达
5、使用已经定义的符号变量组成符号表达式。式。4/6/202359.1.2 符号表达式运算符号表达式运算 1.符号表达式的四则运算符号表达式的四则运算 符号表达式的加、减、乘、除运算可分别符号表达式的加、减、乘、除运算可分别由函数由函数symadd、symsub、symmul和和symdiv来实现,幂运算可以由来实现,幂运算可以由sympow来实现。来实现。2.符号表达式的提取分子和分母运算符号表达式的提取分子和分母运算 如果符号表达式是一个有理分式或可以如果符号表达式是一个有理分式或可以展开为有理分式,可利用展开为有理分式,可利用numden函数来提取函数来提取符号表达式中的分子或分母。其一般调
6、用格符号表达式中的分子或分母。其一般调用格式为:式为:n,d=numden(s)该函数提取符号表达式该函数提取符号表达式s的分子和分母,的分子和分母,分别将它们存放在分别将它们存放在n与与d中。中。4/6/202363.符号表达式的因式分解与展开符号表达式的因式分解与展开(ex9_2.m)MATLAB提供了符号表达式的因式分解与提供了符号表达式的因式分解与展开的函数,函数的调用格式为:展开的函数,函数的调用格式为:factor(s):对符号表达式:对符号表达式s分解因式。分解因式。expand(s):对符号表达式:对符号表达式s进行展开。进行展开。collect(s):对符号表达式:对符号表达
7、式s合并同类项。合并同类项。collect(s,v):对符号表达式:对符号表达式s按变量按变量v合并同合并同类项。类项。4/6/202374.符号表达式的化简符号表达式的化简 MATLAB提供的对符号表达式化简的函数提供的对符号表达式化简的函数有:有:simplify(s):应用函数规则对应用函数规则对s进行化简。进行化简。r,how=simple(S):通过对表达式尝试多种通过对表达式尝试多种不同的算法进行化简,以寻求符号表达式不同的算法进行化简,以寻求符号表达式S的的最简形式最简形式;r为返回的简化形式,为返回的简化形式,how 为化简过为化简过程中使用的主要方法,程中使用的主要方法,si
8、mple 函数综合使用了函数综合使用了下列化简方法:下列化简方法:simplify函数对表达式进行化简;函数对表达式进行化简;simple(s):调用:调用MATLAB的其他函数对表达式进行综的其他函数对表达式进行综合化简,并显示化简过程。合化简,并显示化简过程。4/6/20238radsimp函数对含根式的表达式进行化简函数对含根式的表达式进行化简;combine 函函数数将将表表达达式式中中以以求求和和、乘乘积积、幂幂运算等形式出现的项进行合并;运算等形式出现的项进行合并;collect 合并同类项;合并同类项;factor 函数实现因式分解函数实现因式分解;convert 函数完成表达式
9、形式的转换函数完成表达式形式的转换.4/6/202395.符号表达式与数值表达式之间的转换符号表达式与数值表达式之间的转换 利用函数利用函数sym可以将数值表达式变换成它的可以将数值表达式变换成它的符号表达式。符号表达式。函数函数numeric或或eval可以将符号表达式变换可以将符号表达式变换成数值表达式。成数值表达式。4/6/202310MATLAB中的符号可以表示符号变量和符号中的符号可以表示符号变量和符号常量。常量。findsym可以帮助用户查找一个符号表可以帮助用户查找一个符号表达式中的的符号变量。该函数的调用格式为:达式中的的符号变量。该函数的调用格式为:findsym(s,n)函
10、数返回符号表达式函数返回符号表达式s中的中的n个符号变量,若个符号变量,若没有指定没有指定n,则返回,则返回s中的全部符号变量。中的全部符号变量。9.1.3 符号表达式中变量的确定符号表达式中变量的确定(ex9_3.m)4/6/202311在在MATLAB中,以最接近中,以最接近x的顺序排列默认的顺序排列默认自变量的顺序,由于自变量的顺序,由于i和和j通常表示虚数单位,通常表示虚数单位,在符号运算中不能作为自变量。在符号运算中不能作为自变量。4/6/2023129.1.4 符号表达式的替换符号表达式的替换(ex9_4.m)MATLABMATLAB的的符符号号数数学学工工具具箱箱提提供供了了两两
11、个个符符号号表表达达式式的的替替换换函函数数subexprsubexpr和和subs,subs,可可以以通通过过符符号号替替换换使使表表达达式式的的输输出出形形式式简简化化,以以得到一个简单的表达式得到一个简单的表达式。4/6/202313 将将表表达达式式中中重重复复出出现现的的字字符符串串用用变变量量代代替替的函数为的函数为subexprsubexpr,其调用格式为:其调用格式为:Y,SIGMA=Y,SIGMA=subexpr(S,SIGMAsubexpr(S,SIGMA)此此函函数数用用变变量量SIGMASIGMA(字字符符或或字字符符串串)的的值值代代替替符符号号表表达达式式S S中中
12、重重复复出出现现的的字字符符串串,Y Y返返回回替替换换后后的结果。的结果。4/6/202314 函数函数subssubs是用指定符号替换符号表达式中是用指定符号替换符号表达式中的某一特定符号,调用格式为:的某一特定符号,调用格式为:R=R=subs(S,old,newsubs(S,old,new),它可用新的符号变它可用新的符号变量量newnew替换原来符号表达式替换原来符号表达式S S中的中的old.old.当当newnew为数值形式时,显示的结果虽然是数值,为数值形式时,显示的结果虽然是数值,但它事实上是符号变量。但它事实上是符号变量。4/6/2023159.1.4 符号矩阵符号矩阵(e
13、x9_5.m)符号矩阵也是一种符号表达式,所以前面介绍的符符号矩阵也是一种符号表达式,所以前面介绍的符符号矩阵也是一种符号表达式,所以前面介绍的符符号矩阵也是一种符号表达式,所以前面介绍的符号表达式运算都可以在矩阵意义下进行。但应注意这号表达式运算都可以在矩阵意义下进行。但应注意这号表达式运算都可以在矩阵意义下进行。但应注意这号表达式运算都可以在矩阵意义下进行。但应注意这些函数作用于符号矩阵时,是分别作用于矩阵的每一些函数作用于符号矩阵时,是分别作用于矩阵的每一些函数作用于符号矩阵时,是分别作用于矩阵的每一些函数作用于符号矩阵时,是分别作用于矩阵的每一个元素。个元素。个元素。个元素。由于符号矩
14、阵是一个矩阵,所以符号矩阵还能进行由于符号矩阵是一个矩阵,所以符号矩阵还能进行由于符号矩阵是一个矩阵,所以符号矩阵还能进行由于符号矩阵是一个矩阵,所以符号矩阵还能进行有关矩阵的运算。有关矩阵的运算。有关矩阵的运算。有关矩阵的运算。MATLABMATLAB还有一些专用于符号矩还有一些专用于符号矩还有一些专用于符号矩还有一些专用于符号矩阵的函数,这些函数作用于单个的数据无意义。例如阵的函数,这些函数作用于单个的数据无意义。例如阵的函数,这些函数作用于单个的数据无意义。例如阵的函数,这些函数作用于单个的数据无意义。例如transpose(stranspose(s):返回:返回:返回:返回s s矩阵的
15、转置矩阵。矩阵的转置矩阵。矩阵的转置矩阵。矩阵的转置矩阵。determ(sdeterm(s):返回:返回:返回:返回s s矩阵的行列式值。矩阵的行列式值。矩阵的行列式值。矩阵的行列式值。其实,曾介绍过的许多应用于数值矩阵的函数,如其实,曾介绍过的许多应用于数值矩阵的函数,如其实,曾介绍过的许多应用于数值矩阵的函数,如其实,曾介绍过的许多应用于数值矩阵的函数,如diagdiag、triutriu、triltril、invinv、detdet、rankrank、eigeig等,也可直接等,也可直接等,也可直接等,也可直接应用于符号矩阵应用于符号矩阵应用于符号矩阵应用于符号矩阵。4/6/202316
16、9.2 符号微积分符号微积分9.2.1 符号极限符号极限 limit函数的调用格式为:函数的调用格式为:(1)limit(f,x,a):求符号函数:求符号函数f(x)的极限值。的极限值。即计算当变量即计算当变量x趋近于常数趋近于常数a时,时,f(x)函数的极函数的极限值。限值。(2)limit(f,a):求符号函数:求符号函数f(x)的极限值。由的极限值。由于没有指定符号函数于没有指定符号函数f(x)的自变量,则使用该的自变量,则使用该格式时,符号函数格式时,符号函数f(x)的变量为函数的变量为函数findsym(f)确定的默认自变量,即变量确定的默认自变量,即变量x趋近于趋近于a。4/6/2
17、02317(3)limit(f):求符号函数:求符号函数f(x)的极限值。符的极限值。符号函数号函数f(x)的变量为函数的变量为函数findsym(f)确定的默确定的默认变量;没有指定变量的目标值时,系统默认变量;没有指定变量的目标值时,系统默认变量趋近于认变量趋近于0,即,即a=0的情况。的情况。(4)limit(f,x,a,right):求符号函数:求符号函数f的极限的极限值。值。right表示变量表示变量x从右边趋近于从右边趋近于a。(5)limit(f,x,a,left):求符号函数:求符号函数f的极限值。的极限值。left表示变量表示变量x从左边趋近于从左边趋近于a。例例9-1 求下
18、列极限。求下列极限。4/6/2023189.2.2 符号导数符号导数 diff函数用于对符号表达式求导数。该函数函数用于对符号表达式求导数。该函数的一般调用格式为:的一般调用格式为:diff(s):没有指定变量和导数阶数,则系统:没有指定变量和导数阶数,则系统按按findsym函数指示的默认变量对符号表达式函数指示的默认变量对符号表达式s求一阶导数。求一阶导数。diff(s,v):以:以v为自变量,对符号表达式为自变量,对符号表达式s求求一阶导数。一阶导数。4/6/202319diff(s,n):按:按findsym函数指示的默认变量对函数指示的默认变量对符号表达式符号表达式s求求n阶导数,阶
19、导数,n为正整数。为正整数。diff(s,v,n):以:以v为自变量,对符号表达式为自变量,对符号表达式s求求n阶导数。阶导数。例例9-2 求求a t3;tcos(x)lnx对对x的一阶导数、对的一阶导数、对t二二 阶导数、二阶混合导数阶导数、二阶混合导数4/6/2023209.2.3 符号积分符号积分 符号积分由函数符号积分由函数int来实现。该函数的一般来实现。该函数的一般调用格式为:调用格式为:int(s):没有指定积分变量和积分阶数时,:没有指定积分变量和积分阶数时,系统按系统按findsym函数指示的默认变量对被积函函数指示的默认变量对被积函数或符号表达式数或符号表达式s求不定积分。
20、求不定积分。int(s,v):以:以v为自变量,对被积函数或符号为自变量,对被积函数或符号表达式表达式s求不定积分。求不定积分。4/6/202321int(s,v,a,b):求定积分运算。:求定积分运算。a,b分别表示定积分别表示定积分的下限和上限。该函数求被积函数在区间分的下限和上限。该函数求被积函数在区间a,b上的定积分。上的定积分。a和和b可以是两个具体的数,可以是两个具体的数,也可以是一个符号表达式,还可以是无穷也可以是一个符号表达式,还可以是无穷(inf)。当函数。当函数f关于变量关于变量x在闭区间在闭区间a,b上可上可积时,函数返回一个定积分结果。当积时,函数返回一个定积分结果。当
21、a,b中有中有一个是一个是inf时,函数返回一个广义积分。当时,函数返回一个广义积分。当a,b中有一个符号表达式时,函数返回一个符号函中有一个符号表达式时,函数返回一个符号函数。数。例例9-3 求积分求积分4/6/2023229.2.4 积分变换积分变换 常见的积分变换有傅立叶变换、拉普拉斯变常见的积分变换有傅立叶变换、拉普拉斯变换和换和Z变换。变换。1.傅立叶傅立叶(Fourier)变换变换在在MATLAB中,进行傅立叶变换的函数是:中,进行傅立叶变换的函数是:fourier(f,x,t):求函数:求函数f(x)的傅立叶像函数的傅立叶像函数F(t)。ifourier(F,t,x):求傅立叶像
22、函数:求傅立叶像函数F(t)的原函数的原函数f(x)。例例9-4 求函数的傅立叶变换及其逆变换。求函数的傅立叶变换及其逆变换。4/6/2023232.拉普拉斯拉普拉斯(Laplace)变换变换 在在MATLAB中,进行拉普拉斯变换的函数是中,进行拉普拉斯变换的函数是:laplace(fx,x,t):求函数求函数f(x)的拉普拉斯像函数的拉普拉斯像函数F(t)。ilaplace(Fw,t,x):求拉普拉斯像函数求拉普拉斯像函数F(t)的原函的原函数数f(x)。例例9-5 计算计算y=x3的拉普拉斯变换及其逆变换。的拉普拉斯变换及其逆变换。4/6/2023243.Z变换变换 当函数当函数f(x)呈
23、现为一个离散的数列呈现为一个离散的数列f(n)时,对时,对数列数列f(n)进行进行z变换的变换的MATLAB函数是:函数是:ztrans(fn,n,z):求:求fn的的Z变换像函数变换像函数F(z)。iztrans(Fz,z,n):求:求Fz的的z变换原函数变换原函数f(n)。例例9-6 求数列求数列 fn=e-2n的的Z变换及其逆变换。变换及其逆变换。4/6/2023259.3 级数级数9.3.1 级数符号求和级数符号求和 求无穷级数的和需要符号表达式求和函数求无穷级数的和需要符号表达式求和函数symsum,其调用格式为:,其调用格式为:symsum(s,v,n,m)其中其中s表示一个级数的
24、通项,是一个符号表表示一个级数的通项,是一个符号表达式。达式。v是求和变量,是求和变量,v省略时使用系统的默省略时使用系统的默认变量。认变量。n和和m是求和的开始项和末项。是求和的开始项和末项。例例9-7 求求4/6/2023269.3.2 函数的泰勒级数函数的泰勒级数 MATLAB提供了提供了taylor函数将函数展开为幂函数将函数展开为幂级数,其调用格式为:级数,其调用格式为:taylor(f):计算符号表达式计算符号表达式f f在默认自变量等于在默认自变量等于0 0处的处的5 5阶阶Taylor级数展开式。级数展开式。taylor(f,n,v):计算符号表达式计算符号表达式f f在自变量
25、在自变量v=0v=0处处的的n-1n-1阶阶Taylor级数展开式。级数展开式。taylor(f,n,v,a):计算符号表达式计算符号表达式f f在自变量在自变量v=av=a处处的的n-1n-1阶阶Taylor级数展开式级数展开式例例9-8 求函数的泰勒级数展开式。求函数的泰勒级数展开式。4/6/2023279.4 符号方程求解符号方程求解9.4.1 符号代数方程求解符号代数方程求解 在在MATLAB中,求解用符号表达式表示的代中,求解用符号表达式表示的代数方程可由函数数方程可由函数solve实现,其调用格式为:实现,其调用格式为:solve(s):求解符号表达式:求解符号表达式s的代数方程,
26、求解的代数方程,求解变量为默认变量。变量为默认变量。solve(s,v):求解符号表达式:求解符号表达式s的代数方程,求的代数方程,求解变量为解变量为v。solve(s1,s2,sn,v1,v2,vn):求解符号表达:求解符号表达式式s1,s2,sn组成的代数方程组,求解变量分别组成的代数方程组,求解变量分别v1,v2,vn。例例9-9 解下列方程。解下列方程。4/6/2023289.4.2 符号常微分方程求解符号常微分方程求解 在在在在MATLABMATLAB中,用大写字母中,用大写字母中,用大写字母中,用大写字母DD表示导数。例如,表示导数。例如,表示导数。例如,表示导数。例如,DyDy表
27、示表示表示表示y y,D2yD2y表示表示表示表示yy,Dy(0)=5Dy(0)=5表示表示表示表示y(0)=5y(0)=5。D3y+D2y+Dy-x+5=0D3y+D2y+Dy-x+5=0表示微分方程表示微分方程表示微分方程表示微分方程y+y+y-x+5=0y+y+y-x+5=0。符号常微分方程求解可以通过函数符号常微分方程求解可以通过函数符号常微分方程求解可以通过函数符号常微分方程求解可以通过函数dsolvedsolve来实现,其来实现,其来实现,其来实现,其调用格式为:调用格式为:调用格式为:调用格式为:dsolve(e,c,vdsolve(e,c,v)该函数求解常微分方程该函数求解常微
28、分方程该函数求解常微分方程该函数求解常微分方程e e在初值条件在初值条件在初值条件在初值条件c c下的特解。参下的特解。参下的特解。参下的特解。参数数数数v v描述方程中的自变量,省略时按缺省原则处理,描述方程中的自变量,省略时按缺省原则处理,描述方程中的自变量,省略时按缺省原则处理,描述方程中的自变量,省略时按缺省原则处理,若没有给出初值条件若没有给出初值条件若没有给出初值条件若没有给出初值条件c c,则求方程的通解。,则求方程的通解。,则求方程的通解。,则求方程的通解。4/6/202329dsolve在求常微分方程组时的调用格式为:在求常微分方程组时的调用格式为:dsolve(e1,e2,
29、en,c1,cn,v1,vn)该函数求解常微分方程组该函数求解常微分方程组e1,en在初值条件在初值条件c1,cn下的特解,若不给出初值条件,下的特解,若不给出初值条件,则求则求方程组的通解,方程组的通解,v1,vn给出求解变量。给出求解变量。例例9-10 求下列微分方程的解。求下列微分方程的解。4/6/2023309.5 符号函数的简易绘图函数符号函数的简易绘图函数(examp9_11.m)二二维维绘绘图图函函数数plot是是MATLAB最最基基本本和和最最常常用用的的绘绘图图函函数数,其其简简易易绘绘图图函函数数为为ezplot。ezplot的调用格式为:的调用格式为:ezplot(f):绘绘制制表表达达式式f(xf(x)的的二二维维图图形形,x x轴轴坐标的近似范围为坐标的近似范围为-2pi,2pi。ezplot(f,xmin,xmax):绘制表达式绘制表达式f(xf(x)的二的二维图形维图形,x,x轴坐标的范围轴坐标的范围xmin,xmax。4/6/202331