收藏 分销(赏)

第八讲_MATLAB符号计算.ppt

上传人:s4****5z 文档编号:10471594 上传时间:2025-05-29 格式:PPT 页数:43 大小:101KB
下载 相关 举报
第八讲_MATLAB符号计算.ppt_第1页
第1页 / 共43页
第八讲_MATLAB符号计算.ppt_第2页
第2页 / 共43页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第八讲,MATLAB,符号计算,8.1,符号计算基础,8.2,符号导数及其应用,8.3,符号积分,8.4,级数,8.5,代数方程的符号求解,8.6,常微分方程的符号求解,8.1,符号计算基础,MATLAB,中,符号计算函数是数值计算函数的重载,符号计算工具箱采用的函数和数值计算的函数有一部分同名,为得到准确的在线帮助,应该用,help sym/,函数名,例如:,help sym/inv,8.1.1,符号对象,1.,建立符号变量和符号常数,(1),sym,函数,sym,函数用来建立单个符号变量和符号表达式,例如,,a=sym(a),建立符号变量,a,,,此后,用户可以在表达式中使用变量,a,进行各种运算。,rho,=sym(1+sqrt(5)/2),f=rho2-rho-1,rho,=,(1+sqrt(5)/2,f=,(1/2+1/2*5(1/2)2-3/2-1/2*5(1/2),例,8.1,考察符号变量和数值变量的差别。,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,例,8.2,比较符号常数与数值在代数运算时的差别。,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,=2.8284,ans,=(3+2(1/2)(1/2),ans,=2.1010,(2),syms,函数,syms,函数的一般调用格式为:,syms,var1 var2,varn,函数定义符号变量,var1,var2,varn,等。用这种格式定义符号变量时,不要,在变量名上加字符分界符,(),,变量间用空格而,不要,用逗号分隔。,syms,a b c d,符号计算的结果是符号或符号表达式,如果其中的符号要用具体数值代替,可以用,subs,函数,例如将,A,中的符号,a,以数值,5,代替,可以用,B=subs(A,a,5),clear;,syms,a b c d;,A1=a,b;c,d;,A2=det(A1);,A3=subs(A2,a,1);,A3=subs(A3,b,2);,A3=subs(A3,c,3);,A3=subs(A3,d,4),例,8.3,计算行列式 ,当 时计算,A,的,数值结果。,A3=,-2,2.,建立符号表达式,例,8.4,用两种方法建立符号表达式,。,在,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,例,8.5,计算,3,阶范得蒙矩阵行列式的值。设,A,是一个由符号变量,a,b,c,确定的范得蒙矩阵,。,syms,a b c,U=a,b,c,A=1,1,1;U;U.2,%,建立范得蒙符号矩阵,det(A,),%,计算,A,的行列式值,U=a,b,c,A=1,1,1,a,b,c,a2,b2,c2,ans,=b*c2-c*b2-a*c2+a*b2+a2*c-a2*b,例,8.6,建立,x,y,的一般二元函数。,在,MATLAB,命令窗口,输入命令:,syms,x y;,f=sym(f(x,y),f=,f(x,y),8.1.2,基本的符号运算,1.,符号表达式运算,(1),符号表达式的四则运算,例,8.7,符号表达式的四则运算示例。,在,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),因式分解与展开,factor(S),对,S,分解因式,,S,是符号表达式或符号矩阵。,expand(S),对,S,进行展开,,S,是符号表达式或符号矩阵。,collect(S),对,S,合并同类项,,S,是符号表达式或符号矩阵。,collect(S,v),对,S,按变量,v,合并同类项,,S,是符号表达式或符号矩阵。,例,8.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,的每个元素分解因式,A=,2*a2*b3*x2-4*a*b4*x3+10*a*b6*x4,3*x*y-5*x2,4,a3-b3,ans,=,2*a*b3*x2*(5*b3*x2-2*b*x+a),-x*(-3*y+5*x),4,(a-b)*(a2+a*b+b2),例,8.9,计算表达式,S,的值。,syms,x y;,s=(-7*x2-8*y2)*(-x2+3*y2);,expand(s),%,对,s,展开,collect(s,x),%,对,s,按变量,x,合并同类项,(,无同类项,),factor(ans,),%,对,ans,分解因式,expand(cos(x+y,),ans,=7*x4-13*x2*y2-24*y4,ans,=7*x4-13*x2*y2-24*y4,ans,=(8*y2+7*x2)*(x2-3*y2),ans,=,cos(x,)*,cos(y)-sin(x,)*sin(y),(3),表达式化简,MATLAB,提供的对符号表达式化简的函数有:,simplify(S),应用函数规则对,S,进行化简。,simple(S),调用,MATLAB,的其他函数对表达式进行综合化简,并显示化简过程。,例:,syms,x y;,s=(x2+y2)2+(x2-y2)2;,simple(s),%MATLAB,自动调用多种函数对,s,进行,%,化简,并显示每步结果,ans,=2*x4+2*y4,2.,符号矩阵运算,transpose(S),返回,S,矩阵的转置矩阵。,8.1.3,符号表达式中变量的确定,MATLAB,中的符号可以表示符号变量和符号常数。,findsym,可以帮助用户查找一个符号表达式中的符号变量。,该函数的调用格式为:,findsym(S,n,),函数返回符号表达式,S,中的,n,个符号变量,若没有指定,n,,,则返回,S,中的全部符号变量。,在求函数的极限、导数和积分时,如果用户没有明确指定自变量,,MATLAB,将按缺省原则确定主变量并对其进行相应微积分运算。可用,findsym(S,1),查找系统的缺省变量,事实上,,MATLAB,按离字符,x,最近原则确定缺省变量,。,syms,a x y z t,findsym(sin(pi,*t),ans,=t,findsym(x+i,*y-j*z),ans,=x,y,z,findsym(a+y,1),returns y.,8.2,符号导数及其应用,8.2.1,函数的极限,limit,函数的调用格式为:,limit(f,x,a),limit,函数的另一种功能是求单边极限,其调用格式为:,limit(f,x,a,right),或,limit(f,x,a,left),数学表达式,命令格式,limit(f),limit(f,x,a),或,limit(f,a),limit(f,x,a,left),limit(f,x,a,right),例,8.10,求极限。,在,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),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),8.2.2,符号函数求导及其应用,MATLAB,中的求导的函数为:,diff(f,x,n),diff,函数求函数,f,对变量,x,的,n,阶导数,。参数,x,的用法同求极限函数,limit,,,可以缺省,缺省值与,limit,相同,,n,的缺省值是,1,。,例,8.11,求函数的导数。,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,的偏导数,ans,=1/2/(1+exp(x)(1/2)*exp(x),ans,=-2*sin(x)-x*,cos(x,),ans,=-3*,cos(x)+x,*sin(x),ans,=-b*,cos(t)/a/sin(t,),ans,=-(a*sin(t)2*b+a*cos(t)2*b)/a3/sin(t)3,ans,=exp(y)/y2,ans,=x*exp(y)/y2-2*x*exp(y)/y3,zx,=-x/z,zy,=-y/z,例,8.12,在曲线,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=0,的根,即求曲线,%,何处的导数为,4,ans,=,1/3*3(1/2),-1/3*3(1/2),8.3,符号积分,8.3.1,不定积分,在,MATLAB,中,求不定积分的函数是,int,,,其调用格式为:,int(f,x,),int,函数求函数,f,对变量,x,的不定积分,。参数,x,可以缺省,缺省原则与,diff,函数相同。,例,8.13,求不定积分。,x=sym(x);,f=(3-x2)3;,int(f,),%,求不定积分,(1),f=sqrt(x3+x4);,int(f,),%,求不定积分,(2),g=,simple(ans,),%,调用,simple,函数对结果化简,ans,=27*x-1/7*x7+9/5*x5-9*x3,ans,=-1/48*(x3+x4)(1/2)*(-16*(x2+x)(3/2)+12*(x2+x)(1/2)*x+6*(x2+x)(1/2)-3*log(1/2+x+(x2+x)(1/2)/x/(x+1)*x)(1/2),g=1/3*(x+1)*x)(1/2)*x2+1/12*(x+1)*x)(1/2)*x-1/8*(x+1)*x)(1/2)+1/16*log(1/2+x+(x+1)*x)(1/2),8.3.2,符号函数的定积分,定积分在实际工作中有广泛的应用。在,MATLAB,中,定积分的计算使用函数:,int(f,x,a,b,),例,6.14,求定积分。,x=sym(x);t=sym(t);,int(abs(1-x),1,2),%,求定积分,(1),f=1/(1+x2);,int(f,-inf,inf,),%,求定积分,(2),int(4*t*x,x,2,sin(t),%,求定积分,(3),f=x3/(x-1)100;,I=,int(f,2,3),%,求定积分,(4),double(I),%,将上述符号结果转换为数值,ans,=1/2,ans,=pi,ans,=2*t*(sin(t)2-4),I=97893129180187301565519001875382615/1192978373971185320372138406360121344,ans,=,0.0821,例,8.15,求椭球的体积。,命令如下:,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,例,8.16,轴的长度为,10,米,若该轴的线性密度计算公式是,f(x)=6+0.3x,千克,/,米,(,其中,x,为距轴的端点距离,),,求轴的质量。,(1),符号函数积分。在,MATLAB,命令窗口,输入命令:,sym x;,f=6+0.3*x;,m=int(f,0,10),(2),数值积分。,先建立一个函数文件,fx.m,:,function,fx,=,fx(x,),fx,=6+0.3*x;,再在,MATLAB,命令窗口,输入命令:,m=quad(fx,0,10,1e-6),例,8.17,求空间曲线,c,从点,(0,,,0,,,0),到点,(3,,,3,,,2),的长度。求曲线,c,的长度是曲线一型,命令如下:,sym t;,x=3*t;y=3*t2;z=2*t3;,f=diff(x,y,z,t),%,求,x,y,z,对参数,t,的导数,g=,sqrt(f,*f),%,计算一型积分公式中的根式部分,l=int(g,t,0,1),%,计算曲线,c,的长度,f=3,6*t,6*t2,g=3*(1+4*t*conj(t)+4*t2*conj(t)2)(1/2),l=5,8.3.3,积分变换,1.,傅立叶,(Fourier),变换,在,MATLAB,中,进行傅立叶变换的函数是:,fourier(fx,x,t,),求函数,f(x),的傅立叶像函数,F(t),。,ifourier(Fw,t,x,),求傅立叶像函数,F(t),的原函数,f(x),。,例:,syms,x t;,y=abs(x),Ft=,fourier(y,x,t,),%,求,y,的傅立叶变换,fx,=,ifourier(Ft,t,x,),%,求,Ft,的傅立叶逆变换,y=,abs(x),Ft=,-2/t2,fx,=,x*(2*heaviside(x)-1),2.,拉普拉斯,(Laplace),变换,在,MATLAB,中,进行拉普拉斯变换的函数是:,laplace(fx,x,t,),求函数,f(x),的拉普拉斯像函数,F(t),。,ilaplace(Fw,t,x,),求拉普拉斯像函数,F(t),的原函数,f(x),。,例,8.19,计算,y=x,2,的拉普拉斯变换及其逆变换,.,命令如下:,x=sym(x);y=x2;,Ft=,laplace(y,x,t,),%,对函数,y,进行拉普拉斯变换,fx,=,ilaplace(Ft,t,x,),%,对函数,Ft,进行拉普拉斯逆变换,Ft=,2/t3,fx,=,x2,3.Z,变换,对数列,f(n),进行,z,变换的,MATLAB,函数是:,ztrans(fn,n,z,),求,fn,的,Z,变换像函数,F(z),iztrans(Fz,z,n,),求,Fz,的,z,变换原函数,f(n),例,8.20,求数列,f,n,=,e,-,n,的,Z,变换及其逆变换。,命令如下:,syms,n z,fn=exp(-n);,Fz,=,ztrans(fn,n,z,),%,求,fn,的,Z,变换,f=,iztrans(Fz,z,n,),%,求,Fz,的逆,Z,变换,Fz,=z/exp(-1)/(z/exp(-1)-1),f=exp(-1)n,8.4,级数,8.4.1,级数的符号求和,函数,symsum,用于对符号表达式求和,,,调用格式为:,symsum(a,n,n0,nn),对,表达式,a,的,符号变量,n,从,n=n,0,到,n=,n,n,求和,例,7.22,求级数之和。,命令如下:,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(n2,1,100),%,求,s4,。,计算有限级数的和,8.4.2,函数的泰勒级数,MATLAB,中提供了将函数展开为幂级数的函数,taylor,,,其调用格式为:,taylor(f,x,a,k,),将,函数,f,对,x,在,x=a,处,泰勒展开到,k-1,项。,例,7.23,求函数在指定点的泰勒展开式。,命令如下:,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),%,展开到,x,的,4,次幂时应选择,k=5,ans,=1+2*x+2*x2-2*x4,例,8.24,将多项式表示成,x+1,的幂的多项式。,命令如下:,x=sym(x);,p=1+3*x+5*x2-2*x3;,f=taylor(p,x,-1,4),f=,-8-13*x+11*(1+x)2-2*(1+x)3,8.5,代数方程的符号求解,求解方程组的函数是,solve,,,调用格式为:,solve(eqn1,eqn2,eqnN,var1,var2,varN,),例,7.28,解方程。,命令如下:,x=solve(1/(x+2)+4*x/(x2-4)=1+2/(x-2),x),%,解方程,(1),f=sym(x-(x3-4*x-7)(1/3)=1);,x=solve(f),%,解方程,(2),x=solve(2*sin(3*x-pi/4)=1),%,解方程,(3),x=solve(x+x*exp(x)-10,x),%,解方程,(4),。仅标出方程的左端,例,8.29,求方程组的解。,x y=solve(1/x3+1/y3-28,1/x+1/y-4,x,y),%,解方程组,(1),x y=solve(x+y-98,x(1/3)+y(1/3)-2,x,y),%,解方程组,(2),Warning:Explicit solution could not be found.,In C:MATLABR11toolboxsymbolicsolve.m at line 136,x=,empty sym,y=,对方程组,(2)MATLAB,给出了无解的结论,显然错误,请看完全与其同构的方程组,(3),。输入命令如下:,u,v=solve(u3+v3-98,u+v-2,u,v)%,解方程组,(3),8.6,常微分方程的符号求解,MATLAB,的符号运算工具箱中提供了功能强大的求解常微分方程的函数,dsolve,。,该函数的调用格式为:,dsolve(eqn1,condition,var),该函数求解微分方程,eqn1,在初值条件,condition,下的特解。参数,var,描述方程中的自变量符号,省略时按缺省原则处理,若没有给出初值条件,condition,,,则求方程的通解。,dsolve,在求微分方程组时的调用格式为:,dsolve(eqn1,eqn2,eqnN,condition1,conditionN,var1,varN,),函数求解微分方程组,eqn1,、,、,eqnN,在初值条件,conditoion1,、,、,conditionN,下的解,若不给出初值条件,则求方程组的通解,,var1,、,、,varN,给出求解变量。,例,8.30,求微分方程的通解。,命令如下:,y=dsolve(Dy-(x2+y2)/x2/2,x)%,解,(1),y=,dsolve(Dy,*x2+2*x*y-exp(x),x)%,解,(2),y=dsolve(Dy-x/y/sqrt(1-x2),x)%,解,(3),y=x*(-2+log(x)+C1)/(log(x)+C1),y=(exp(x)+C1)/x2,y=,(-2*(1-x2)(1/2)+C1)(1/2),-(-2*(1-x2)(1/2)+C1)(1/2),例,8.31,求微分方程的特解。,命令如下:,y=,dsolve(Dy,=2*x*y2,y(0)=1,x)%,解,(1),y=dsolve(Dy-x2/(1+y2),y(2)=1,x)%,解,(2),y=,-1/(-1+x2),例,8.32,用微分方程的数值解法和符号解法解方程,并对结果进行比较。,在,MATLAB,命令窗口,输入命令:,y=dsolve(Dy+2*y/x-4*x,y(1)=2,x),%,用符号方法得到方程的解析解,为了求方程的数值解,需要按要求建立一个函数文件,fxyy.m,:,function f=,fxyy(x,y,),f=(4*x2-2*y)/x;,%,只能是,y=f(x,y),的形式,当不是这种形式时,要变形。,输入命令:,t,w=ode45(fxyy,1,2,2);,%,得到区间,1,2,中的数值解,以向量,t,w,存储。,为了对两种结果进行比较,在同一个坐标系中作出两种结果的图形。输入命令:,x=linspace(1,2,100);,y=x.2+1./x.2;,%,为作图把符号解的结果离散化,plot(x,y,b.,t,w,r-);,8.6.3,常微分方程组求解,例,7.33,求微分方程组的解。,命令如下:,x,y=,dsolve(Dx,=4*x-2*,y,Dy,=2*x-y,t),%,解方程组,(1),x,y=dsolve(D2x-y,D2y+x,t),%,解方程组,(2),
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服