第九章 MATLAB符号运算.ppt_第1页
第九章 MATLAB符号运算.ppt_第2页
第九章 MATLAB符号运算.ppt_第3页
第九章 MATLAB符号运算.ppt_第4页
第九章 MATLAB符号运算.ppt_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第9章 MATLAB符号计算,9.1 符号计算基础 9.2 符号函数及其应用 9.3 符号积分 9.4 级 数 9.5 符号方程求解,9.1 符号计算基础,9.1.1 符号对象 1建立符号变量和符号常量 MATLAB提供了两个建立符号对象的函数:sym和syms,两个函数的用法不同。,(1) sym函数 sym函数用来建立单个符号量,一般调用格式为: 符号量名=sym(符号字符串) 该函数可以建立单个符号量,符号字符 串可以是常量、变量、函数或表达式。 符号量一旦建立,用户就可以在表达式中使 用它进行各种运算。,例9-1:考察符号变量和数值变量的差别。 程序: a=sym(a); b=sym(

2、b); c=sym(c); d=sym(d); 定义4个符号变量 w=10;x=5;y= -8;z=11; 定义4个数值变量 A=a,b;c,d 建立符号矩阵A A= a,b c,d,B=w,x;y,z 建立数值矩阵B B= 10 5 -8 11 det(A) 计算符号矩阵A的行列式 ans= a*b-b*c det(B) 计算数值矩阵B的行列式 ans= 150,应用sym函数还可以定义符号常量,使用符号常量进行代数运算时和数值常量进行的运算不同。,例9-2:比较符号常数与数值在代数运算时的差别。 程序: pi1=sym(pi); k1=sym(8); k2=sym(2); k3=sym(3

3、); 定义符号变量 pi2=pi;r1=8;r2=2;r3=3; 定义数值变量 sin(pi1/3) 计算符号表达式的值 ans= 1/2*3(1/2) sin(pi2/3) 计算数值表达式的值 ans= 0.8660,sqrt(k1) 计算符号表达式的值 ans= 2*2(1/2) sqrt(r1) 计算数值表达式的值 ans= 2.8284 sqrt(k3+ sqrt(k2) 计算符号表达式的值 ans= (3+2(1/2)(1/2) sqrt(r3+ sqrt(r2) 计算数值表达式的值 ans= 2.1010,结论: 用符号常数进行计算象是进行数学演算,得到的结果为数学表达式;而数值计

4、算将结果近似为一个有限小数,(2) syms函数 MATLAB提供了另一个函数syms,一次可以定义多个符号变量。syms函数的一般调用格式为: syms 符号变量名1 符号变量名2 符号变量名n,注意: 用这种格式定义符号变量时不要在变量名上加字符串分界符(),变量间用空格而不要用逗号分隔。,2建立符号表达式 含有符号对象的表达式称为符号表达式。 符号表达式包括符号代数式、符号方程、符号矩阵、抽象函数等,建立符号表达式有3种方法: (1)利用单引号来生成符号代数式。 (2)用sym函数建立符号表达式。 (3) 使用已经定义的符号变量组成符号表达式。,1)建立代数式 方法:用sym函数建立符号

5、表达式;使用已经定义的符号变量组成符号表达式;利用单引号建立,例9-3:用两种方法建立符号表达式: 3x2+5y+2xy+6 程序: U=sym(3*x2+5*y+2*x*y+6) 定义符号表达式 U= 3*x2+5*y+2*x*y+6 syms x y; 建立符号变量 V= 3*x2+5*y+2*x*y+6 定义符号表达式 ans= 3*x2+5*y+2*x*y+6 U=3x2+5y+2xy+6 U= 3x2+5y+2xy+6 2*U-V+6 求符号表达式的值 ans= 3*x2+5*y+5*x*y+12,2)建立符号方程 方法:用sym函数建立符号方程;利用单引号建立,例9-4: y=sy

6、m(ax2+bx+c=0) 建立了一个符号方程 注意: 因为符号方程中含有等号,故不能采用赋值的方法来建立符号方程,否则方程中的等号和命令中的赋值号会混淆,3)建立符号矩阵 方法:直接建立 例9-5:计算3阶范得蒙矩阵行列式的值。 A=1,1,1;a,b,c;a2,b2,c2 程序: syms a b c; U=a,b,c; A=1,1,1;U;U.2; 建立范得蒙矩阵 det(A) 计算矩阵行列式的值,4)建立抽象函数 定义:所谓抽象函数就是函数关系未确定的函数。 如:z=f(x,y) 例9-6:建立x,y的一般二元函数。 程序: syms x y; f=sym(f(x,y),9.1.2 符

7、号表达式运算,1符号表达式的四则运算 符号表达式的加、减、乘、除运算可分别由函数symadd、symsub、symmul和symdiv来实现,幂运算可以由sympow来实现。结果仍旧为符号表达式。,2符号表达式的提取分子和分母运算 可用numden函数来提取符号表达式中的分子或分母。其调用格式为: n,d=numden(s) 该函数提取符号表达式s的分子和分母,分别将它们存放在n与d中。,3符号表达式的因式分解与展开 函数的调用格式为: factor(s):对符号表达式s分解因式。 expand(s):对符号表达式s进行展开。 collect(s):对符号表达式s合并同类项。 collect(

8、s,v):对符号表达式s按变量v合并同类项。,例9-7:对下列符号矩阵A的每个元素分解因式 A=2a2b3x2-4ab4x3+10ab6x4,3xy-5x2; 4, a3-b3 程序: syms a b x y; A=2*a2*b3*x2- 4*a*b4*x3+10*a*b6*x4,3*x*y-5*x2; 4,a3-b3; factor(A) 对A的每个元素分解因式 ans= 2*a2*b3*x2- 4*a*b4*x3+10*a*b6*x4,3*x*y-5*x2 4,a3-b3,例9-8:计算表达式S的值 s=(-7x2-8y2) (-x2+3y2) 程序: syms x y; S=(-7*x

9、2-8*y2) (-x2+3*y2); expand(s) ans= 7*x4-13*x2*y2-24*y4 Collect(s,x) ans= 7*x4-13*x2*y2-24*y4 factor(ans) ans= (7*x2+8*y2) (x2-3*y2),4符号表达式的化简 MATLAB提供的对符号表达式化简的函数有: simplify(s):应用函数规则对s进行化简。 simple(s):调用MATLAB的其他函数对表达式进行综合化简,并显示化简过程。,例9-9:化简s=(s2+y2)2-(s2-y2)2 程序: syms x y; s=(x2+y2)2-(x2-y2)2 simpl

10、e(s) Simplify: 这是simple函数自动调用函数, 并非由用户调入.下同 2*x4+2*y4 radsimp: 2*x4+2*y4,combine(trig): 2*x4+2*y4 factor: 2*x4+2*y4 expand: 2*x4+2*y4 combine: (s2+y2)2-(s2-y2)2 convert(exp): (s2+y2)2-(s2-y2)2,convert(sincos): (s2+y2)2-(s2-y2)2 convert(tan): (s2+y2)2-(s2-y2)2 collect(x): 2*x4+2*y4 ans= 2*x4+2*y4,可见:

11、simple函数试探使用各种函数化简,其化简过程是机械的,部分过程可以省略,5符号表达式与数值表达式之间的转换 利用函数sym可以将数值表达式变换成它的符号表达式。 函数numeric或eval可以将符号表达式变换成数值表达式。,5符号表达式与数值表达式之间的转换 利用函数sym可以将数值表达式变换成它的符号表达式。 函数numeric或eval可以将符号表达式变换成数值表达式。,9.1.3 符号表达式中变量的确定,MATLAB中的符号可以表示符号变量和符号常量。findsym可以帮助用户查找一个符号表达式中的的符号变量。该函数的调用格式为: findsym(s,n) 函数返回符号表达式s中的

12、n个符号变量,若没有指定n,则返回s中的全部符号变量。,例9-10:,注意:如果变量缺省时,MATLAB将按照离字符x最近的原则确定缺省变量,例9-11:,9.1.4 符号矩阵,符号矩阵也是一种符号表达式,所以前面介绍的符号表达式运算都可以在矩阵意义下进行。但应注意这些函数作用于符号矩阵时,是分别作用于矩阵的每一个元素。,由于符号矩阵是一个矩阵,所以符号矩阵还能进行有关矩阵的运算。MATLAB还有一些专用于符号矩阵的函数,这些函数作用于单个的数据无意义。,transpose(s):返回s矩阵的转置矩阵。 determ(s):返回s矩阵的行列式值。 其实,曾介绍过的许多应用于数值矩阵的函数,如d

13、iag、triu、tril、inv、det、rank、eig等,也可直接应用于符号矩阵。,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。,(3) limit(f):求符号函数f(x)的极限值。符号函数f(x)的变量为函数findsym(f)确定的默认变量;

14、没有指定变量的目标值时,系统默认变量趋近于0,即a=0的情况。,(4) limit(f,x,a,right):求符号函数f的极限值。right表示变量x从右边趋近于a。 (5) limit(f,x,a,left):求符号函数f的极限值。left表示变量x从左边趋近于a。,例9-12 求下列极限。 极限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

15、*x),x,inf) ans = exp(6*t),极限3: syms x; f=x*(sqrt(x2+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,9.2.2 符号函数求导及其应用,diff函数用于对符号表达式求导数。 该函数的一般调用格式为: 1、diff(s):没有指定变量和导数阶数,则系统按 findsym函数指示的默认变量对符号表达式s求一阶导数。 2、diff(s,v):以v为自变量,对

16、符号表达式s求一阶导数。,3、diff(s,n):按findsym函数指示的默认变量对符号表达式s求n阶导数,n为正整数。 4、diff(s,v,n):以v为自变量,对符号表达式s求n阶导数。,例9.13 求函数的导数(p202例7-3)。 命令如下: syms a b t x y z; f=sqrt(1+exp(x); diff(f) %求(1)。未指定求导变量和阶数,按缺省规则处理 f=x*cos(x); diff(f,x,2) %求(2)。求f对x的二阶导数 diff(f,x,3) %求(2)。求f对x的三阶导数 f1=a*cos(t);f2=b*sin(t); diff(f2)/dif

17、f(f1) %求(3)。按参数方程求导公式求y对x的导数 (diff(f1)*diff(f2,2)-diff(f1,2)*diff(f2)/(diff(f1)3 %求(3)。求y对x的二阶导数 f=x*exp(y)/y2; diff(f,x) %求(4)。z对x的偏导数 diff(f,y) %求(4)。z对y的偏导数 f=x2+y2+z2-a2; zx=-diff(f,x)/diff(f,z) %求(5)。按隐函数求导公式求z对x的偏导数 zy=-diff(f,y)/diff(f,z) %求(5)。按隐函数求导公式求z对y的偏导数,例9.14 在曲线y=x3+3x-2上哪一点的切线与直线y=4

18、x-1平行。 命令如下: x=sym(x); y=x3+3*x-2; %定义曲线函数 f=diff(y); %对曲线求导数 g=f-4; solve(g) %求方程f-4=0的根,即求曲线何处的 导数为4,9.3 符号积分,9.3.1 符号函数的不定积分 符号不定积分由函数int来实现。调用格式为: 1、 int(s):没有指定积分变量和积分阶数时,系统按findsym函数指示的默认变量对被积函数或符号表达式s求不定积分。 2、int(s,v):以v为自变量,对被积函数或符号表达式s求不定积分。,例9.15 求不定积分。 命令如下: x=sym(x); f=(3-x2)3; int(f) %求

19、不定积分(1) f=sqrt(x3+x4); int(f) %求不定积分(2) g=simple(ans) %调用simple函数对结果化简,9.3.2 符号函数的定积分 int(s,v,a,b):求定积分运算。a,b分别表示定积分的下限和上限。当函数f关于变量v在闭区间a,b上可积时,函数返回一个定积分结果。当a,b中有一个是inf时,函数返回一个广义积分。当a,b中有一个符号表达式时,函数返回一个符号函数。,例9.16 求定积分。 命令如下: x=sym(x);t=sym(t); int(abs(1-x),1,2) %求定积分(1) f=1/(1+x2); int(f,-inf,inf)

20、%求定积分(2) int(4*t*x,x,2,sin(t) %求定积分(3) f=x3/(x-1)100; I=int(f,2,3) %用符号积分的方法求定积分(4) double(I) %将上述符号结果转换为数值,例9.17 求椭球的体积。 命令如下: syms a b c z; f=pi*a*b*(c2-z2)/c2; V=int(f,z,-c,c) V = 4/3*pi*a*b*c,9.3.3 积分变换,积分变换的定义 积分变换的思路 常见的积分变换: 傅立叶变换、拉普拉斯换和Z变换。,1傅立叶(Fourier)变换 在MATLAB中,进行傅立叶变换的函数是: fourier(f,x,t

21、):求函数f(x)的傅立叶像函数F(t)。 ifourier(F,t,x):求傅立叶像函数F(t)的原函数f(x)。,例9.18 求函数的傅立叶变换及其逆变换。 命令如下: syms x t; y=abs(x); Ft=fourier(y,x,t) %求y的傅立叶变换 fx=ifourier(Ft,t,x) %求Ft的傅立叶逆变换,2拉普拉斯(Laplace)变换 在MATLAB中,进行拉普拉斯变换的函数是: laplace(fx,x,t):求函数f(x)的拉普拉斯像函数F(t)。 ilaplace(Fw,t,x):求拉普拉斯像函数F(t)的原函数f(x)。,例9.19 计算y=x2的拉普拉斯

22、变换及其逆变换. 命令如下: x=sym(x);y=x2; Ft=laplace(y,x,t) %对函数y进行拉普拉斯变换 fx=ilaplace(Ft,t,x) %对函数Ft进行拉普拉斯逆变换,3Z变换 当函数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.20求数列 fn=e-n的Z变换及其逆变换。 命令如下: syms n z fn=exp(-n); Fz=ztrans(fn,n,z) %求fn的Z变换 f=izt

23、rans(Fz,z,n) %求Fz的逆Z变换,9.4 级 数,9.4.1 级数的符号求和 符号表达式求和函数symsum,其调用格式为: symsum(s,v,n,m) 其中s表示一个级数的通项,是一个符号表达式。v是求和变量,v省略时使用系统的默认变量。n和m是求和的开始项和末项。,例9.21 求级数之和。 命令如下: n=sym(n); s1=symsum(1/n2,n,1,inf) %求s1 s2=symsum(-1)(n+1)/n,1,inf) %求s2。未指定求和变量,缺省为n s3=symsum(n*xn,n,1,inf) %求s3。此处的求和变量n不能省略。 s4=symsum(

24、n2,1,100) %求s4。计算有限级数的和,9.4.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.22 求函数在指定点的泰勒展开式。 命令如下: x=sym(x); f1=(1+x+x2)/(1-x+x2); f2=sqrt(1-2*x+x3)-(1-3*x+x2)(1/3); taylor(f1,x,5) %求(1)。展开到x的4次幂时应选择n=5 taylor(f2,6) %求

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论