资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,7,章,MATLAB,符号计算,7.1,符号计算基础,7.2,符号导数及其应用,7.3,符号积分,7.4,级数,7.5,符号方程的求解,7.1,符号计算基础,7.1.1,符号对象,1.,建立符号变量和符号常数,(1)sym,函数,sym,函数用来建立单个符号量,,例如,,a=sym(a),建立符号变量,a,,,此后,用户可以在表达式中使用变量,a,进行各种运算。,可以将式,a=sym(a),运用到表达式中,如:,a=2*sin(sym(a),例,7.1,考察符号变量和数值变量的差别。,在,MATLAB,命令窗口,输入命令:,a=sym(a);b=sym(b);c=sym(c);d=sym(d);%,定义,4,个,符号变量,w=10;x=5;y=-8;z=11;%,定义,4,个数值变量,A=a,b;c,d%,建立符号矩阵,A,B=w,x;y,z%,建立数值矩阵,B,det(A,)%,计算符号矩阵,A,的行列式,det(B,)%,计算数值矩阵,B,的行列式,A=,a,b,c,d,B=,10 5,-8 11,ans,=,a*,d-b,*c,ans,=,150,例,7.2,比较符号常数与数值在代数运算时的差别。,在,MATLAB,命令窗口,输入命令:,pi1=sym(pi);k1=sym(8);k2=sym(2);k3=sym(3);%,定义符号变量,pi2=pi;r1=8;r2=2;r3=3;%,定义数值变量,sin(pi1/3)%,计算符号表达式值,sin(pi2/3)%,计算数值表达式值,sqrt(k1)%,计算符号表达式值,sqrt(r1)%,计算数值表达式值,sqrt(k3+sqrt(k2)%,计算符号表达式值,sqrt(r3+sqrt(r2)%,计算数值表达式值,ans=,1/2*3(1/2),ans=,0.8660,ans=,2*2(1/2),ans=,1/2*3(1/2),ans=,0.8660,ans=,2*2(1/2),(2)syms,函数,syms,函数的一般调用格式为:,syms,var1 var2,varn,函数定义符号变量,var1,var2,varn,等。,用这种格式定义符号变量时,不要在变量名上加字符分界符,(),,,变量间用空格而不要用逗号分隔。,2.,建立符号表达式,含有符号量的表达式,如:一般代数式,符号方程,符号矩阵,抽象函数等。,(,1,),代数式,建立,例,7.3,用两种方法建立符号表达式,。,在,MATLAB,窗口,输入命令:,U=sym(3*x2+5*y+2*x*y+6)%,定义符号表达式,U,syms,x y;%,建立符号变量,x,、,y,V=3*x2+5*y+2*x*y+6%,定义符号表达式,V,2*U-V+6%,求符号表达式的值,U=,3*x2+5*y+2*x*y+6,V=,3*x2+5*y+2*x*y+6,ans=,3*x2+5*y+2*x*y+12,(,2,),符号方程,建立,利用,sym,直接建立,如:,y=sym(,a*x2+b*x+c=0,);,不能用赋值的方法建立符号方程。,(,3,),符号矩阵,建立,使用直接输入法。,transpose(S,),返回,S,矩阵的转置矩阵。,determ(S,),返回,S,矩阵的行列式值。,例,7.4,计算,3,阶范得蒙矩阵行列式的值。,设,A,是一个由符号变量,a,b,c,确定的范得蒙矩阵。,命令如下:,syms,a b c;,U=a,b,c;,A=1,1,1;U;U.2%,建立范得蒙符号矩阵,determ,(A)%,计算,A,的行列式值,A=,1,1,1,a,b,c,a2,b2,c2,ans=,b*c2-c*b2-a*c2+a*b2+a2*c-a2*b,(,4,),抽象函数,建立,关于抽象函数:函数关系未确定的函数。,比如:函数,f,(,x,),,这里只知道,f,与变量,x,之间有一定的依赖关系,但并未确定具体是什么样的关系。,例,7.5,建立,x,y,的一般二元函数。,在,MATLAB,命令窗口,输入命令:,syms,x y;,f=sym(f(x,y);,7.1.2,基本的符号运算,1.,符号表达式运算,(1),符号表达式的四则运算,符号表达式的四则运算和其他表达式的运算并无不同,但要注意,其运算结果依然是一个符号表达式。符号表达式的加、减、乘、除运算可分别由函数,symadd,、,symsub,、,symmul,和,symdiv,来实现,幂运算可以由,sympow,来实现。,例,7.6,符号表达式的四则运算示例。,在,MATLAB,命令窗口,输入命令:,syms,x y z;,f=2*x+x2*x-5*x+x3%,符号表达式的结果为最简形式,f=2*x/(5*x)%,符号表达式的结果为最简形式,f=(x+y)*(x-y)%,符号表达式的结果不是,x2-y2,,,而是,(x+y)*(x-y),f=,-3*x+2*x3,f=,2/5,f=,(x+y)*(x-y),(2),符号表达式的提取分子和分母运算,如果符号表达式是一个有理分式或可以展开为有理分式,可利用,numden,函数来提取符号表达式中的分子或分母。其一般调用格式为:,n,d,=,numden(s,),该函数提取符号表达式,s,的分子和分母,分别将它们存放在,n,与,d,中。,例,7.7,符号表达式提取分子分母示例,g=sym(x2+3)/(2*x-1)+3*x/(x-1);,n,d=numden(g),n=,x3+5*x2-3,d=,(2*x-1)*(x-1),(,3),因式分解与展开,factor(S),对,S,分解因式,,S,是符号表达式或符号矩阵。,expand(S),对,S,进行展开,,S,是符号表达式或符号矩阵。,collect(S),对,S,合并同类项,,S,是符号表达式或符号矩阵。,collect(S,v),对,S,按变量,v,合并同类项,,S,是符号表达式或符号矩阵。,例,7.8,对符号矩阵,A,的每个元素分解因式。,命令如下:,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*x2*a*b3*(5*x2*b3-2*x*b+a),-x*(-3*y+5*x),4,(a-b)*(a2+a*b+b2),例,7.9,计算表达式,S,的值。,命令如下:,syms,x y;,s=(-7*x2-8*y2)*(-x2+3*y2);,expand(s)%,对,s,展开,collect(s,x)%,对,s,按变量,x,合并同类项,(,无同类项,),factor(ans,)%,对,ans,分解因式,执行结果:,ans=,7*x4-13*x2*y2-24*y4,ans=,7*x4-13*x2*y2-24*y4,ans=,(8*y2+7*x2)*(x2-3*y2),(4),表达式化简,MATLAB,提供的对符号表达式化简的函数有:,simplify(S),应用函数规则对,S,进行化简。,simple(S),调用,MATLAB,的其他函数对表达式进行综,合化简,并显示化简过程。,例,7.10,化简,命令如下:,syms,x y;,s=(x2+y2)2+(x2-y2)2;,simple(s)%MATLAB,自动调用多种函数对,s,进行化简,并显,示每步结果,(,5,)符号表达式与数值表达式之间的转换,利用函数,sym,可以将数值表达式变换成它的符号表达式。,sym(1.5),ans,=,3/2,函数,eval,可以将符号表达式变换成数值表达式。,phi=(1+sqrt(5)/2,eval(phi,),ans,=,1.6180,2.,符号矩阵运算,transpose(S),返回,S,矩阵的转置矩阵。,determ(S,),返回,S,矩阵的行列式值。,colspace(S,),返回,S,矩阵列空间的基。,Q,D=,eigensys(S,),Q,返回,S,矩阵的特征向量,,D,返回,S,矩阵的特征值。,注意:应用于数值矩阵的函数,(,diag,,,triu,,,tril,,,det,,,rank,,,eig,等,),均可用于符号矩阵的运算。,7.1.3,符号表达式中变量的确定,MATLAB,中的符号可以表示符号变量和符号常数。,findsym,可以帮助用户查找一个符号表达式中的符号,变量。,该函数的调用格式为:,findsym(S,n,),函数返回符号表达式,S,中的,n,个符号变量,若没有指定,n,,,则返回,S,中的全部符号变量。,在求函数的极限、导数和积分时,如果用户没有明确指定自变量,,MATLAB,将按缺省原则确定主变量并对其进行相应微积分运算。可用,findsym(S,1),查找系统的缺省变量,事实上,,MATLAB,按离字符,x,最近原则确定缺省变量。,7.2,符号导数及其应用,7.2.1,函数的极限,limit,函数的调用格式为:,limit(f,x,a),格式中的参数,x,,,a,可以省略。省略,x,,,MATLAB,按缺省规则确定求极限的变量;,a,缺省为,0,。,limit,函数的另一种功能是求单边极限,其调用格式为:,limit(f,x,a,right),或,limit(f,x,a,left),例,7.11,求极限。,在,MATLAB,命令窗口,输入命令:,syms,a m x;,f=(x(1/m)-a(1/m)/(x-a);,limit(f,x,a)%,求极限,(1),f=(sin(a+x)-sin(a-x)/x;,limit(f)%,求极限,(2),f=x*(sqrt(x2+1)-x);,limit(f,inf,)%,求,f,函数在,x(,包括,+,和,-),处的极限,limit(f,x,inf,left,)%,求极限,(3),f=(,sqrt(x)-sqrt(a)-sqrt(x-a)/sqrt(x,*x-a*a);,limit(f,x,a,right)%,求极限,(4),7.2.2,符号函数求导及其应用,MATLAB,中的求导的函数为:,diff(f,x,n),diff,函数求函数,f,对变量,x,的,n,阶导数。,参数,x,的用法同求极限函数,limit,,,可以缺省,缺省值与,limit,相同,,n,的缺省值是,1,。,例,7.12,求函数的导数。,命令如下:,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)/diff(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,的偏导数,y=,xcos(x,),例,7.13,在曲线,y=x,3,+3x-2,上哪一点的切线与直线,y=4x-1,平行。,命令如下:,x=sym(x);,y=x3+3*x-2;%,定义曲线函数,f=diff(y);%,对曲线求导数,g=f-4;,solve(g)%,求方程,f-4
展开阅读全文