《第3章MATLAB符号计算.ppt》由会员分享,可在线阅读,更多相关《第3章MATLAB符号计算.ppt(44页珍藏版)》请在三一办公上搜索。
1、第三章 符号计算,1、学会符号变量和符号表达式的定义;2、能够使用符号运算解决一般的微积 分和方程求解问题。,3.1 符号计算基础,3.2 符号导数及应用,3.3 符号积分,3.4 级数,3.5 代数方程符号求解,3.6 常微分方程符号求解,3.7 作业,3.1 符号计算基础,3.1.1 符号对象,1、建立符号变量和符号常数,(1)sym函数:sym函数用来建立单个符号量;,例如:a=sym(a)建立符号变量a,此后,用户可以在表达式中使用变量a进行各种运算。,例3.1考察符号变量和数值变量的差别。,在 MATLAB命令窗口,输入命令:,a=sym(a);b=sym(b);c=sym(c);d
2、=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的行列式,例3.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(k
3、1),%计算符号表达式值,sqrt(r1),%计算数值表达式值,sqrt(k3+sqrt(k2),%计算符号表达式值,sqrt(r3+sqrt(r2),%计算数值表达式值,(2)syms函数,1)调用格式:syms var1 var2 varn,!注意:不要在变量名上加字符分界符(),变量间用空格而不要用逗号分隔。,说明:定义符号变量var1,var2,varn;,2.建立符号表达式,例3.3用两种方法建立符号表达式。,例3.4建立x,y的一般二元函数。,在MATLAB命令窗口,输入命令:,syms x y;f=sym(f(x,y);,3、默认自变量情况,原则:MATLAB按照数学常规决定谁是
4、自变量。,例3.5:默认自变量情况,a*x2+b*x+c%默认自变量为x1/(4+cos(t)%默认自变量为t4*x/y%默认自变量为x2*a+b%默认自变量为b2*I+4*j%默认自变量为x,1)除了i和j之外,字母位置最接近x的小写字母;,2)式子中没有上述字母,x被视为默认自变量。,3.1.2 基本的符号运算,(1)符号表达式的四则运算,例3.6 符号表达式的四则运算示例。,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)*(
5、x-y),1.符号表达式运算,(2)因式分解与展开,1)factor(S):%对S分解因式,S是符号表达式 或符号矩阵;,2)expand(S):%对S进行展开,S是符号表达 式或符号矩阵;,3)collect(S):%对S合并同类项,S是符号表 达式或符号矩阵;,4)collect(S,v):%对S按变量v合并同类项,S 是符号表达式或符号矩阵。,例3.7 对符号矩阵A的每个元素分解因式。,syms a b x y;A=2*a2*b3*x2-4*a*b4*x3+10*a*b3*x4,3*x*y-5*x2;4,a3-b3;factor(A)%对A的每个元素分解因式Ans=?,例3.8 计算表达
6、式S的值。,syms x y;s=(-7*x2-8*y2)*(-x2+3*y2);expand(s)%对s展开collect(s,x)%对s按变量x合并同类项factor(ans)%对ans分解因式,(3)表达式化简,1)simplify(S):应用函数规则对S进行化简;,2)simple(S):调用MATLAB的其他函数对表达式进行综合化简,并显示化简过程。,例3.9 化简,syms x y;s=(x2+y2)2+(x2-y2)2;simple(s)%MATLAB自动调用多种函数对 s进行化简,并显示每步结果,2.符号矩阵运算,1)transpose(S):返回S矩阵的转置矩阵;,2)det
7、erm(S):返回S矩阵的行列式值;,3)colspace(S):返回S矩阵列空间的基;,4)Q,D=eigensys(S):Q返回S矩阵的特征向量,D返回S矩阵的特征值。,3.1.3 符号表达式中变量的确定,1)MATLAB中的符号可以表示符号变量和符号常数;,2)findsym可以帮助用户查找一个符号表达式中的符号变量。,3)用findsym(S,1)查找系统的缺省变量;,调用格式:findsym(S,n),MATLAB按离字符x最近原则确定缺省变量。,3.2 符号导数及其应用,3.2.1函数的极限,1)函数:limit,(1)调用格式:limit(f,x,a)%若a0,且对x求极限,可简
8、写为limit(f),(2)limit函数的另一种功能是求单边极限;,调用格式为:limit(f,x,a,right)%右趋近于alimit(f,x,a,left)%左趋近于a,例3.10 求极限。,limit(1/x,x,0)%求limit(1/x),x趋于0limit(1/x,x,0,left)%求limit(1/x),x左趋于0limit(1/x,x,0,right)%求limit(1/x),x右趋于0,特例:若求函数cos(x)的导数,按照导数定义有syms t xlimit(cos(x+t)-cos(x)/t,t,0)Ans=?,3.2.2 符号函数求导及其应用,1)diff(f):
9、求f对预设独立变量的一次微分值;,2)diff(f,t):求f对独立变量t的一次微分值;,3)diff(f,n):求f对预设独立变量的n次微分值;,4)diff(f,t,n):求f对独立变量t的n次微分值。,注意:微分函数diff也可以作用于符号矩阵,其结果是对矩阵的每个元素进行微分运算。,例3.11 求函数的导数。,syms a b t x y z;f=sqrt(1+exp(x);diff(f)%预设独立变量的一次微分值,f=x*cos(x);diff(f,x,2)%求f对x的二阶导数diff(f,x,3)%求f对x的三阶导数,f=x*exp(y)/y2;diff(f,x)%z对x的偏导数d
10、iff(f,y)%z对y的偏导数,f1=a*cos(t);f2=b*sin(t);diff(f2)/diff(f1)%按参数方程求导公式求y对 x的导数(diff(f1)*diff(f2,2)-diff(f1,2)*diff(f2)/(diff(f1)3%求y对x的二阶导数,f=x2+y2+z2-a2;zx=-diff(f,x)/diff(f,z)%按隐函数求导公式求z 对x的偏导数zy=-diff(f,y)/diff(f,z)%按隐函数求导公式求z 对y的偏导数,例3.12在曲线y=x3+3x-2上哪一点的切线与直线y=4x-1平行。,x=sym(x);y=x3+3*x-2;%定义曲线函数f
11、=diff(y);%对曲线求导数g=f-4;solve(g)%求方程f-4=0的根,即求 曲线何处的导数为4,3.3 符号积分,3.3.1不定积分,(1)int(f)返回f对预设独立变量的积分值;,(2)int(f,t)返回f对独立变量t的积分值;,(3)int(f,a,b)返回f对预设独立变量的积分值,积分区间为a,b,a和b为数值式;,(4)int(f,t,a,b)返回f对独立变量t的积分值,积分区间为a,b,a和b为数值式;,(5)int(f,m,n)返回f对预设变量的积分值,积分区间为m,n,m和n为符号式;,例3.13 求不定积分,x=sym(x);f=(3-x2)3;int(f)%
12、求不定积分 f=sqrt(x3+x4);int(f)%求不定积分 g=simple(ans)%调用simple函数对结果化简,3.3.2 符号函数的定积分,x=sym(x);t=sym(t);int(abs(1-x),1,2)%求定积分f=1/(1+x2);int(f,-inf,inf)%求定积分int(4*t*x,x,2,sin(t)%求定积分f=x3/(x-1)100;I=int(f,2,3)%用符号积分的方法求定积分double(I)%将上述符号结果转换为数值,例3.14 求定积分,例3.15 求椭球的体积,syms a b c z;f=pi*a*b*(c2-z2)/c2;V=int(f
13、,z,-c,c)V=4/3*pi*a*b*c,例3.16 轴的长度为10米,若该轴的线性密度计算公式是f(x)=3+0.3x千克/米(其中x为距轴的端点距离),求轴的质量。,(1)符号函数积分syms x;f=3+0.3*x;m=int(f,0,10),(2)数值积分先建立一个函数文件fx.m:function fx=fx(x)fx=3+0.3*x;再在MATLAB命令窗口,输入命令:m=quad(fx,0,10,1e-3),3.3.3积分变换,1.傅立叶(Fourier)变换,1)fourier(fx,x,t)求函数f(x)的傅立叶像函数F(t);2)ifourier(Fw,t,x)求傅立叶
14、像函数F(t)的原函数f(x);,例3.17求函数的傅立叶变换及其逆变换。,syms x t;y=abs(x);Ft=fourier(y,x,t)%求y的傅立叶变换fx=ifourier(Ft,t,x)%求Ft的傅立叶逆变换,2.拉普拉斯(Laplace)变换,1)laplace(fx,x,t)求函数f(x)拉普拉斯像函数F(t)2)ilaplace(fw,t,x)求拉普拉斯像函数F(t)的原函数f(x)。,例3.18 计算y=x2的拉普拉斯变换及其逆变换。,x=sym(x);y=x2;Ft=laplace(y,x,t)%对函数y进行拉普拉斯变换fx=ilaplace(Ft,t,x)%对函数F
15、t进行拉普拉斯逆变换,3.Z变换,1)ztrans(fn,n,z)求fn的Z变换像函数F(z)2)iztrans(Fz,z,n)求Fz的z变换原函数f(n),例3.19求数列 fn=e-n的Z变换及其逆变换。,syms n zfn=exp(-n);Fz=ztrans(fn,n,z)%求fn的Z变换f=iztrans(Fz,z,n)%求Fz的逆Z变换,3.4 级数,3.4.1 级数的符号求和,symsum(s,v,a,b):%自变量v在a,b之间取值 时,对通项s求和。,例3.20 分别求级数1+1/2+1/3+1/k+和级数1/2+1/(23)+1/(34)+1/(k(k+1)+之和。,sym
16、s ksymsum(1/k,k,1,inf)%+1/2+1/3+1/k+symsum(1/(k*(k+1),k,1,inf)%1/2+1/(23)+1/(34)+1/(k(k+1)+,3.4.2 函数的泰勒级数,taylor(F,v,n):%求F对自变量v的taylor级数展 开至n级。,例3.21求函数在指定点的泰勒展开式。,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次幂时应择n=5taylor(f2,3),例3.22将多项式表示成x+1的幂的多项式。,x=sym
17、(x);p=1+3*x+5*x2-2*x3;f=taylor(p,x,-1,4),例3.23求sin(x)的幂次方小于10次方的展开式。,syms xtaylor(sin(x),10)%求sin(x)taylor级数展开Ans=?,3.5 代数方程符号求解,3.5.1线性方程组的符号求解,1)函数linsolve;2)调用格式为:linsolve(A,b),例3.24 求线性方程组AX=b的解。,解方程组(1)的命令如下:A=34,8,4;3,34,3;3,3,8;b=4;3;2;X=linsolve(A,b)%调用linsolve函数求(1)的解Ab%用另一种方法求(1)的解,解方程组(2)
18、的命令如下:syms a11 a12 a13 a21 a22 a23 a31 a32 a33 b1 b2 b3;A=a11,a12,a13;a21,a22,a23;a31,a32,a33;b=b1;b2;b3;X=linsolve(A,b)%调用linsolve函数求(2)的解XX=Ab%用左除运算求(2)的解,3.5.2 非线性方程组的符号求解,1)函数solve;2)调用格式:solve(eqn1,eqn2,eqnN,var1,var2,varN),例3.25 解方程。,x=solve(1/(x+2)+4*x/(x2-4)=1+2/(x-2),x)%解方程(f=sym(x-(x3-4*x-
19、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)。仅标出方程的左端,3.6常微分方程的符号求解,1)函数dsolve;2)调用格式:dsolve(eqn1,condition,var),说明:该函数求解微分方程eqn1在初值条件condition下的特解。参数var描述方程中的自变量符号,省略时按缺省原则处理,若没有给出初值条件condition,则求方程的通解。,特别:dsolve在求微分方程组时的调用格式为:dsolve(eqn1,eqn2,eqnN,co
20、ndition1,conditionN,var1,varN),说明:函数求解微分方程组eqn1、eqnN在初值条件conditoion1、conditionN下的解,若不给出初值条件,则求方程组的通解,var1、varN给出求解变量。,方法:在函数dsolve所包含的equation中,用字母D表示求微分,D的数字表示几重微分,D后的变量为因变量。如Dy表示一阶微分项y;D2y表示二阶微分项y;并且默认所有这些变量都是对自变量t求导。,例3.26 求微分方程的通解。,dsolve(Dy=5)ans=5*t+C1dsolve(Dy=x,x)%求微分方程y=x的通解,指定x为自变量ans 1/2*
21、x2+C1,dsolve(D2y=1+Dy)%求y=1+y的通解ans=-t+C1+C2*exp(t)dsolve(D2y=1+Dy,y(0)=1,Dy(0)=0)%求y=1+y的解,加初始条件ans=-t+exp(t),例3.27 求微分方程的通解。,y=dsolve(Dy-(x2+y2)/x2/2,x)%解(1)。方程的右端为0时可以不写y=dsolve(Dy*x2+2*x*y-exp(x),x)%解(2)y=dsolve(Dy-x/y/sqrt(1-x2),x)%解(3),例3.28 求微分方程的特解。,y=dsolve(Dy=2*x*y2,y(0)=1,x)%解(1)y=dsolve(Dy-x2/(1+y2),y(2)=1,x)%解(2),*常微分方程组求解,例3.29求微分方程组的解。,x,y=dsolve(Dx=yx,Dy=2x)%微分 方程组的通解X=exp(t)*C1+C2*exp(t)-C2-2-2*tY=C2+2*tx,y=dsolve(Dx=yx,Dy=2x,x(0)=0,y(0)=1)%加初始条件X=?Y=?,1、求极限 和,2、设,求f(t),3、求积分,4、求y+ytgx=cosx的通解。,5、解微分方程组。,