1 / 29

第 9 章 MATLAB 符号计算 9.1 符号对象 9.2 符号微积分 9.3 级 数 9.4 符号方程求解

第 9 章 MATLAB 符号计算 9.1 符号对象 9.2 符号微积分 9.3 级 数 9.4 符号方程求解. 9.1 符号对象 9.1.1 建立符号对象 1 .建立符号变量和符号常量 MATLAB 提供了两个建立符号对象的函数: sym 和 syms ,两个函数的用法不同。 (1) sym 函数 sym 函数用来建立单个符号量,一般调用格式为: 符号量名 =sym(' 符号字符串 ') 该函数可以建立一个符号量,符号字符串可以是常量、变量、函数或表达式。

marcie
Download Presentation

第 9 章 MATLAB 符号计算 9.1 符号对象 9.2 符号微积分 9.3 级 数 9.4 符号方程求解

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第9章 MATLAB符号计算 9.1 符号对象 9.2 符号微积分 9.3 级 数 9.4 符号方程求解

  2. 9.1 符号对象 9.1.1 建立符号对象 1.建立符号变量和符号常量 MATLAB提供了两个建立符号对象的函数:sym和syms,两个函数的用法不同。 (1) sym函数 sym函数用来建立单个符号量,一般调用格式为: 符号量名=sym('符号字符串') 该函数可以建立一个符号量,符号字符串可以是常量、变量、函数或表达式。 应用sym函数还可以定义符号常量,使用符号常量进行代数运算时和数值常量进行的运算不同。下面的命令用于比较符号常量与数值常量在代数运算时的差别。

  3. sqrt(2) ans = 1.4142 s = sqrt(sym(2)) x = 2^(1/2) sym(4)/sym(5) + sym(2)/sym(3) ans = 22/15

  4. (2) syms函数 函数sym一次只能定义一个符号变量,使用不方便。MATLAB提供了另一个函数syms,一次可以定义多个符号变量。syms函数的一般调用格式为: syms 符号变量名1 符号变量名2 … 符号变量名n 用这种格式定义符号变量时不要在变量名上加字符串分界符(‘),变量间用空格而不要用逗号分隔。

  5. 2.建立符号表达式 含有符号对象的表达式称为符号表达式。建立符号表达式有以下3种方法: (1)利用单引号来生成符号表达式。 (2)用sym函数建立符号表达式。 (3) 使用已经定义的符号变量组成符号表达式。

  6. 1) a = sym('a'); b = sym('b'); x = sym('x'); e = sym('e'); f = a*e^x+b*sin(x) 2) f = sym('a*e^x+b*sin(x)') 例9-1用sym函数生成符号表达式 aex+bsin(x)

  7. 9.1.2 符号表达式运算 1.符号表达式的提取分子和分母运算 如果符号表达式是一个有理分式或可以展开为有理分式,可利用numden函数来提取符号表达式中的分子或分母。其一般调用格式为: [n,d]=numden(s) 该函数提取符号表达式s的分子和分母,分别将它们存放在n与d中。

  8. 2.符号表达式的因式分解与展开 MATLAB提供了符号表达式的因式分解与展开的函数,函数的调用格式为: factor(s):对符号表达式s分解因式。 expand(s):对符号表达式s进行展开。 collect(s):对符号表达式s合并同类项。 collect(s,v):对符号表达式s按变量v合并同类项。

  9. syms x f = -1/4*x*exp(-2*x)+3/16*exp(-2*x) collect(f,exp(-2*x)) f = -1/4*x*exp(-2*x)+3/16*exp(-2*x) ans = (-1/4*x+3/16)*exp(-2*x) 例9-2用函数collect合并同类项

  10. 3.符号表达式的化简 MATLAB提供的对符号表达式化简的函数有: simplify(s):应用函数规则对s进行化简。 simple(s):调用MATLAB的其他函数对表达式进行综合化简,并显示化简过程。 simplify(sin(x)^2+cos(x)^2) ans = 1

  11. 4.符号表达式与数值表达式之间的转换 利用函数sym可以将数值表达式变换成它的符号表达式。 函数numeric或eval可以将符号表达式变换成数值表达式。 x = sym(0.33333333333333333333333333) eval(x)

  12. 9.1.3 符号表达式中变量的确定 MATLAB中的符号可以表示符号变量和符号常量。findsym可以帮助用户查找一个符号表达式中的的符号变量。该函数的调用格式为: findsym(s,n) 函数返回符号表达式s中的n个符号变量,若没有指定n,则返回s中的全部符号变量。

  13. 9.1.4 符号矩阵 符号矩阵也是一种符号表达式,所以前面介绍的符号表达式运算都可以在矩阵意义下进行。但应注意这些函数作用于符号矩阵时,是分别作用于矩阵的每一个元素。 由于符号矩阵是一个矩阵,所以符号矩阵还能进行有关矩阵的运算。MATLAB还有一些专用于符号矩阵的函数,这些函数作用于单个的数据无意义。例如 transpose(s):返回s矩阵的转置矩阵。 determ(s):返回s矩阵的行列式值。 其实,曾介绍过的许多应用于数值矩阵的函数,如diag、triu、tril、inv、det、rank、eig等,也可直接应用于符号矩阵。

  14. 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。

  15. (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。

  16. 例9-3求下列极限。 极限1: syms a m x; f=(x*(exp(sin(x))+1)-2*(exp(tan(x))-1))/(x+a); limit(f,x,a) ans = (1/2*a*exp(sin(a))+1/2*a-exp(tan(a))+1)/a 极限2: syms x t; limit((1+2*t/x)^(3*x),x,inf) ans = exp(6*t)

  17. 极限3: syms x; f=x*(sqrt(x^2+1)-x); limit(f,x,inf,'left') ans = 1/2 极限4: syms x; f=(sqrt(x)-sqrt(2)-sqrt(x-2))/sqrt(x*x-4); limit(f,x,2,'right') ans = -1/2

  18. 9.2.2 符号导数 diff函数用于对符号表达式求导数。该函数的一般调用格式为: diff(s):没有指定变量和导数阶数,则系统按findsym函数指示的默认变量对符号表达式s求一阶导数。 diff(s,'v'):以v为自变量,对符号表达式s求一阶导数。 diff(s,n):按findsym函数指示的默认变量对符号表达式s求n阶导数,n为正整数。 diff(s,'v',n):以v为自变量,对符号表达式s求n阶导数。

  19. syms x y f1 = sin(x) f1d = diff(sin(x)) f2 = y*sin(x) + x*cos(y); f2d = diff(f2) f2d = diff(f2,y) f3 = exp(x^2); f3d3 = diff(f3,3) 例9-4求下列函数的导数

  20. 9.2.3 符号积分 符号积分由函数int来实现。该函数的一般调用格式为: int(s):没有指定积分变量和积分阶数时,系统按findsym函数指示的默认变量对被积函数或符号表达式s求不定积分。 int(s,v):以v为自变量,对被积函数或符号表达式s求不定积分。 int(s,v,a,b):求定积分运算。a,b分别表示定积分的下限和上限。该函数求被积函数在区间[a,b]上的定积分。a和b可以是两个具体的数,也可以是一个符号表达式,还可以是无穷(inf)。当函数f关于变量x在闭区间[a,b]上可积时,函数返回一个定积分结果。当a,b中有一个是inf时,函数返回一个广义积分。当a,b中有一个符号表达式时,函数返回一个符号函数。

  21. syms x y z f1 = -2*x/(1+x^2)^2; F1 = int(f1) f2 = x/(1+z^2); F2 = int(f2,z) f3 = 1/sqrt(2*pi)*exp(-x^2/2); F3 = int(f3,0,inf) 例9-5求下列积分

  22. 9.2.4 积分变换 常见的积分变换有傅立叶变换、拉普拉斯变换和Z变换。 1.傅立叶(Fourier)变换 在MATLAB中,进行傅立叶变换的函数是: fourier(f,x,t):求函数f(x)的傅立叶像函数F(t)。 ifourier(F,t,x):求傅立叶像函数F(t)的原函数f(x)。

  23. syms x w fourier(sin(3*x),x,w) ans = i*pi*(-dirac(w-3)+dirac(w+3)) ifourier(ans,w,x) ans = sin(3*x) 例9-6求函数y=sin(3*x)的傅立叶变换及其逆变换

  24. 2.拉普拉斯(Laplace)变换 在MATLAB中,进行拉普拉斯变换的函数是: laplace(fx,x,t):求函数f(x)的拉普拉斯像函数F(t)。 ilaplace(Fw,t,x):求拉普拉斯像函数F(t)的原函数f(x)。 例9-7计算y=x3的拉普拉斯变换及其逆变换。

  25. 3.Z变换 当函数f(x)呈现为一个离散的数列f(n)时,对数列f(n)进行z变换的MATLAB函数是: ztrans(fn,n,z):求fn的Z变换像函数F(z)。 iztrans(Fz,z,n):求Fz的z变换原函数f(n)。 例9-8求数列 fn=e-2n的Z变换及其逆变换。

  26. 9.3 级 数 9.3.1 级数符号求和 求无穷级数的和需要符号表达式求和函数symsum,其调用格式为: symsum(s,v,n,m) 其中s表示一个级数的通项,是一个符号表达式。v是求和变量,v省略时使用系统的默认变量。n和m是求和的开始项和末项。 例9-9求下列级数之和。 symsum(1/k^2,1,Inf)

  27. 9.3.2 函数的泰勒级数 MATLAB提供了taylor函数将函数展开为幂级数,其调用格式为: taylor(f,v,n,a) 该函数将函数f按变量v展开为泰勒级数,展开到第n项(即变量v的n-1次幂)为止,n的缺省值为6。v的缺省值与diff函数相同。参数a指定将函数f在自变量v=a处展开,a的缺省值是0。 例9-10求函数在指定点的泰勒级数展开式。 taylor(sin(x),x,10,0)

  28. 9.4 符号方程求解 9.4.1 符号代数方程求解 在MATLAB中,求解用符号表达式表示的代数方程可由函数solve实现,其调用格式为: solve(s):求解符号表达式s的代数方程,求解变量为默认变量。 solve(s,v):求解符号表达式s的代数方程,求解变量为v。 solve(s1,s2,…,sn,v1,v2,…,vn):求解符号表达式s1,s2,…,sn组成的代数方程组,求解变量分别v1,v2,…,vn。 例9-11解下列方程。 [x,y] = solve('x^2 + x*y + y = 3','x^2 - 4*x + 3 = 0')

  29. 9.4.2 符号常微分方程求解 在MATLAB中,用大写字母D表示导数。例如,Dy表示y',D2y表示y'',Dy(0)=5表示y'(0)=5。D3y+D2y+Dy-x+5=0表示微分方程y'''+y''+y'-x+5=0。符号常微分方程求解可以通过函数dsolve来实现,其调用格式为: dsolve(e,c,v) 该函数求解常微分方程e在初值条件c下的特解。参数v描述方程中的自变量,省略时按缺省原则处理,若没有给出初值条件c,则求方程的通解。 dsolve在求常微分方程组时的调用格式为: dsolve(e1,e2,…,en,c1,…,cn,v1,…,vn) 该函数求解常微分方程组e1,…,en在初值条件c1,…,cn下的特解,若不给出初值条件,则求方程组的通解,v1,…,vn给出求解变量。 例9-12求下列微分方程的解。 dsolve('Dy = y^2')

More Related