第9章MATLAB符号计算ppt课件.ppt

上传人:sccc 文档编号:5311073 上传时间:2023-06-24 格式:PPT 页数:39 大小:154.53KB
返回 下载 相关 举报
第9章MATLAB符号计算ppt课件.ppt_第1页
第1页 / 共39页
第9章MATLAB符号计算ppt课件.ppt_第2页
第2页 / 共39页
第9章MATLAB符号计算ppt课件.ppt_第3页
第3页 / 共39页
第9章MATLAB符号计算ppt课件.ppt_第4页
第4页 / 共39页
第9章MATLAB符号计算ppt课件.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《第9章MATLAB符号计算ppt课件.ppt》由会员分享,可在线阅读,更多相关《第9章MATLAB符号计算ppt课件.ppt(39页珍藏版)》请在三一办公上搜索。

1、第9章 MATLAB符号计算9.1 符号对象9.2 符号微积分9.3 级 数9.4 符号方程求解,9.1 符号对象9.1.1 建立符号对象1建立符号变量和符号常量MATLAB提供了两个建立符号对象的函数:sym和syms,两个函数的用法不同。(1)sym函数sym函数用来建立单个符号量,一般调用格式为:符号量名=sym(符号字符串)该函数可以建立一个符号量,符号字符串可以是常量、变量、函数或表达式。应用sym函数还可以定义符号常量,使用符号常量进行代数运算时和数值常量进行的运算不同。,(2)syms函数函数sym一次只能定义一个符号变量,使用不方便。MATLAB提供了另一个函数syms,一次可

2、以定义多个符号变量。syms函数的一般调用格式为:syms 符号变量名1 符号变量名2 符号变量名n用这种格式定义符号变量时不要在变量名上加字符串分界符(),变量间用空格而不要用逗号分隔。,2建立符号表达式含有符号对象的表达式称为符号表达式。建立符号表达式有以下3种方法:(1)利用单引号来生成符号表达式。(2)用sym函数建立符号表达式。(3)使用已经定义的符号变量组成符号表达式。,9.1.2 符号表达式运算1符号表达式的四则运算符号表达式的加、减、乘、除运算可分别由函数symadd、symsub、symmul和symdiv来实现,幂运算可以由sympow来实现。2符号表达式的提取分子和分母运

3、算如果符号表达式是一个有理分式或可以展开为有理分式,可利用numden函数来提取符号表达式中的分子或分母。其一般调用格式为:n,d=numden(s)该函数提取符号表达式s的分子和分母,分别将它们存放在n与d中。,例9-1p1=1/(y-3);p2=3*y/(y+2);p3=(y+4)*(y-3)*y;symmul(p1,p3)ans=(y+4)*y sympow(p2,3)ans=27*y3/(y+2)3 symadd(p1,p2)ans=1/(y-3)+3*y/(y+2)num,den=numden(symadd(p1,p2)ans=-8*y+2+3*y,(y-3)*(y+2),7.0以上

4、版本中,符号表达式的四则运算同数值计算,采用的符号为:命令+、-、*、.*、.、/、./、.,例9-1p1=sym(1/(y-3);p2=sym(3*y/(y+2);p3=sym(y+4)*(y-3)*y);p1*p3%symmul(p1,p3)ans=(y+4)*y p23%sympow(p2,3)ans=27*y3/(y+2)3 p1+p2%symadd(p1,p2)ans=1/(y-3)+3*y/(y+2)num,den=numden(symadd(p1,p2)ans=-8*y+2+3*y,(y-3)*(y+2),3符号表达式的因式分解与展开MATLAB提供了符号表达式的因式分解与展开的

5、函数,函数的调用格式为:factor(s):对符号表达式s分解因式。expand(s):对符号表达式s进行展开。collect(s):对符号表达式s合并同类项。collect(s,v):对符号表达式s按变量v合并同类项。,例9-2,syms x y;R1=collect(exp(x)+x)*(x+2)R2=collect(x+y)*(x2+y2+1),y)R3=collect(x+1)*(y+1),x+y)R4=factor(x+y)*(x2+y2+1)R5=expand(x+y)*(x2+y2+1)计算结果为:R1=x2+(exp(x)+2)*x+2*exp(x)R2=y3+x*y2+(x2

6、+1)*y+x*(x2+1)R3=(y+1)*x+y+1,x+yR4=(x+y)*(x2+y2+1)R5=x3+x*y2+x+y*x2+y3+y,4符号表达式的化简MATLAB提供的对符号表达式化简的函数有:simplify(s):应用函数规则对s进行化简。simple(s):调用MATLAB的其他函数对表达式进行综合化简,并显示化简过程。,例9-3f1=sym(exp(x)+x)*(x+2);f2=sym(a3-1);f3=sym(1/a4+2/a3+3/a2+4/a+5);f4=sym(sin(x)2+cos(x)2);collect(f1)%ans=x2+(exp(x)+2)*x+2*e

7、xp(x)expand(f1)%ans=exp(x)*x+2*exp(x)+x2+2*xfactor(f2)%ans=(a-1)*(a2+a+1)m,n=numden(f3)%m为分子,n为分母%m=1+2*a+3*a2+4*a3+5*a4%n=a4simplify(f4)%ans=1 simple(f4),5符号表达式与数值表达式之间的转换利用函数sym可以将数值表达式变换成它的符号表达式。函数numeric或eval可以将符号表达式变换成数值表达式。(7.0以上版本只能用eval),9.1.3 符号表达式中变量的确定MATLAB中的符号可以表示符号变量和符号常量。findsym可以帮助用户

8、查找一个符号表达式中的的符号变量。该函数的调用格式为:findsym(s,n)函数返回符号表达式s中的n个符号变量,若没有指定n,则返回s中的全部符号变量。,例9-4f=sym(2*w-3*y+z2+5*a);findsym(f)%ans=%a,w,y,zfindsym(f,3)%ans=%y,w,zfindsym(f,1)%ans=%y,9.1.4 符号矩阵符号矩阵也是一种符号表达式,所以前面介绍的符号表达式运算都可以在矩阵意义下进行。但应注意这些函数作用于符号矩阵时,是分别作用于矩阵的每一个元素。由于符号矩阵是一个矩阵,所以符号矩阵还能进行有关矩阵的运算。MATLAB还有一些专用于符号矩阵

9、的函数,这些函数作用于单个的数据无意义。例如transpose(s):返回s矩阵的转置矩阵。determ(s):返回s矩阵的行列式值。(7.0以上版本用det)其实,曾介绍过的许多应用于数值矩阵的函数,如diag、triu、tril、inv、det、rank、eig等,也可直接应用于符号矩阵。,例9-5 A=sym(a,2*b;3*a,0)%A=%a,2*b%3*a,0 transpose(A)ans=a,3*a 2*b,0det(A),9.2 符号微积分9.2.1 符号极限limit函数的调用格式为:(1)limit(f,x,a):求符号函数f(x)的极限值。即计算当变量x趋近于常数a时,f

10、(x)函数的极限值。(2)limit(f,a):求符号函数f(x)的极限值。由于没有指定符号函数f(x)的自变量,则使用该格式时,符号函数f(x)的变量为函数findsym(f)确定的默认自变量,即变量x趋近于a。,(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

11、-6 求下列极限。极限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),极限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)

12、ans=-1/2,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阶导数。,例9-7S1=6*x3-4*x2+b*x-5;S2=sin(a);S3=(1-t3)/(1+t4);diff(S1)ans=18*x2-8*x+b diff(S1,2)ans=3

13、6*x-8 diff(S1,b)ans=x diff(S2)ans=cos(a)diff(S3)ans=-3*t2/(1+t4)-4*(1-t3)/(1+t4)2*t3 simplify(diff(S3)ans=t2*(-3+t4-4*t)/(1+t4)2,9.2.3 符号积分符号积分由函数int来实现。该函数的一般调用格式为:int(s):没有指定积分变量和积分阶数时,系统按findsym函数指示的默认变量对被积函数或符号表达式s求不定积分。int(s,v):以v为自变量,对被积函数或符号表达式s求不定积分。int(s,v,a,b):求定积分运算。a,b分别表示定积分的下限和上限。该函数求被

14、积函数在区间a,b上的定积分。a和b可以是两个具体的数,也可以是一个符号表达式,还可以是无穷(inf)。当函数f关于变量x在闭区间a,b上可积时,函数返回一个定积分结果。当a,b中有一个是inf时,函数返回一个广义积分。当a,b中有一个符号表达式时,函数返回一个符号函数。,例9-8S1=6*x3-4*x2+b*x-5;S2=sin(a);S3=sqrt(x);int(S1)ans=3/2*x4-4/3*x3+1/2*b*x2-5*x int(S2)ans=-cos(a)int(S3)ans=2/3*x(3/2)int(S3,a,b)ans=2/3*b(3/2)-2/3*a(3/2)int(S3

15、,0.5,0.6)ans=2/25*15(1/2)-1/6*2(1/2)eval(int(S3,0.5,0.6)%使用eval函数可以计算积分的数值 ans=0.0741,9.2.4 积分变换常见的积分变换有傅立叶变换、拉普拉斯变换和Z变换。1傅立叶(Fourier)变换在MATLAB中,进行傅立叶变换的函数是:fourier(f,x,t):求函数f(x)的傅立叶像函数F(t)。ifourier(F,t,x):求傅立叶像函数F(t)的原函数f(x)。例9-5 求函数y=6*x3-4*x2+b*x-5的傅立叶变换及其逆变换。,syms y x t b y=6*x3-4*x2+b*x-5 y=6*

16、x3-4*x2+b*x-5 z=fourier(y,x,t)z=-12*i*pi*Dirac(3,t)+8*pi*Dirac(2,t)+2*i*b*pi*Dirac(1,t)-10*pi*Dirac(t)ifourier(z,t,x)ans=6*x3-4*x2+b*x-5,2拉普拉斯(Laplace)变换在MATLAB中,进行拉普拉斯变换的函数是:laplace(fx,x,t):求函数f(x)的拉普拉斯像函数F(t)。ilaplace(Fw,t,x):求拉普拉斯像函数F(t)的原函数f(x)。例9-6 计算y=x3的拉普拉斯变换及其逆变换。,syms y x t y=x3 y=x3 lapla

17、ce(y,x,t)ans=6/t4 ilaplace(6/t4,t,x)ans=x3,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-7 求数列 fn=e2n的Z变换及其逆变换。,syms y n z y=exp(2*n)y=exp(2*n)m=ztrans(y,n,z)m=z/exp(2)/(z/exp(2)-1)iztrans(m,z,n)ans=exp(2)n,9.3 级 数9.3.1 级数符号求和求无穷级数的

18、和需要符号表达式求和函数symsum,其调用格式为:symsum(s,v,n,m)其中s表示一个级数的通项,是一个符号表达式。v是求和变量,v省略时使用系统的默认变量。n和m是求和的开始项和末项。例9-8 求下列级数之和。,syms x n s=(-1)n*xn/sqrt(n2-n);y=symsum(s,n,2,inf)y=sum(-1)n*xn/(n2-n)(1/2),n=2.inf),9.3.2 函数的泰勒级数MATLAB提供了taylor函数将函数展开为幂级数,其调用格式为:taylor(f,v,n,a)该函数将函数f按变量v展开为泰勒级数,展开到第n项(即变量v的n-1次幂)为止,n

19、的缺省值为6。v的缺省值与diff函数相同。参数a指定将函数f在自变量v=a处展开,a的缺省值是0。例9-9 求函数在指定点的泰勒级数展开式。,syms x f=exp(x);t=taylor(f,4)t=1+x+1/2*x2+1/6*x3 t=taylor(f,4,5)t=exp(5)+exp(5)*(x-5)+1/2*exp(5)*(x-5)2+1/6*exp(5)*(x-5)3 f1=sin(x);t=taylor(f1,4)t=x-1/6*x3 t=taylor(f1,4,6)t=sin(6)+cos(6)*(x-6)-1/2*sin(6)*(x-6)2-1/6*cos(6)*(x-6

20、)3,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-10 解下列方程。,eq1=x-3=4;%注意也可写成eq1=x-7 eq2=x2-x-6=0;%注意也可写成eq2=x2-x-6 eq3=x2+2*x+4=0;eq4=3*x+2*y-z=10;

21、eq5=-x+3*y+2*z=5;eq6=x-y-z=-1;solve(eq1)ans=7 solve(eq2)ans=3,-2%原方程式有二个根3,-2 solve(eq3)ans=-1+I*3(1/2),-1-I*3(1/2)%注意实根和虚根的表示式 solve(eq4,eq5,eq6)%解三个联立方程式 ans=x=-2,y=5,z=-6,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来实现,

22、其调用格式为:dsolve(e,c,v)该函数求解常微分方程e在初值条件c下的特解。参数v描述方程中的自变量,省略时按缺省原则处理,若没有给出初值条件c,则求方程的通解。dsolve在求常微分方程组时的调用格式为:dsolve(e1,e2,en,c1,cn,v1,vn)该函数求解常微分方程组e1,en在初值条件c1,cn下的特解,若不给出初值条件,则求方程组的通解,v1,vn给出求解变量。例9-11 求下列微分方程的解。,假设有以下三个一阶常微分方程式和其初始条件 y=3x2,y(2)=0.5 y=2.x.cos(y)2,y(0)=0.25 y=3y+exp(2x),y(0)=3 对应上述常微分方程式的符号运算式为:soln_1=dsolve(Dy=3*x2,y(2)=0.5)ans=x3-7.500000000000000 ezplot(soln_1,2,4)%看看这个函数的长相 soln_2=dsolve(Dy=2*x*cos(y)2,y(0)=pi/4)ans=atan(x2+1)soln_3=dsolve(Dy=3*y+exp(2*x),y(0)=3)ans=-exp(2*x)+4*exp(3*x),

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号