1第5章MATLAB符号运算叶春生,材料学院csye@mail.hust.edu.cnTel:027-875570412本章目标理解符号运算的有关概念掌握使用符号运算解决符号推导、微积分、方程等问题的方法3主要内容5.1数值运算与符号运算5.2符号变量和符号表达式5.3符号表示式的运算5.4微积分5.5方程求解45.1数值运算与符号运算数值运算在运算前必须先对变量赋值,再参加运算。符号运算不需要对变量赋值就可运算,运算结果以标准的符号形式表达。55.2符号变量和符号表达式符号变量和符号表达式在使用前必须说明sym函数f1=sym(‘ax^2+bx+c’)%创建符号变量f1和一个符号表达式syms函数clearsymsabcxwhosNameSizeBytesClassa1x1126symobjectb1x1126symobjectc1x1126symobjectx1x1126symobject65.3符号表示式的运算5.3.1算术运算clearf1=sym('1/(a-b)');f2=sym('2*a/(a+b)');f3=sym('(a+1)*(b-1)*(a-b)');f1+f2%符号和ans=1/(a-b)+2*a/(a+b)f1*f3%符号积ans=(a+1)*(b-1)f1/f3%符号商ans=1/(a-b)^2/(a+1)/(b-1)75.3.2函数运算1.合并、化简、展开等函数collect函数:将表达式中相同幂次的项合并;factor函数:将表达式因式分解;simplify函数:利用代数中的函数规则对表达式进行化简;numden函数:将表示式从有理数形式转变成分子与分母形式。2.反函数finverse(f,v)对指定自变量为v的函数f(v)求反函数3.复合函数compose(f,g)求f=f(x)和g=g(y)的复合函数f(g(y))compose(f,g,z)求f=f(x)和g=g(y)的复合函数f(g(z))4.表达式替换函数subs(s)用赋值语句中给定值替换表达式中所有同名变量subs(s,old,new)用符号或数值变量new替换s中的符号变量old8例clearf1=sym('(exp(x)+x)*(x+2)');f2=sym('a^3-1');f3=sym('1/a^4+2/a^3+3/a^2+4/a+5');f4=sym('sin(x)^2+cos(x)^2');collect(f1)ans=x^2+(exp(x)+2)*x+2*exp(x)expand(f1)ans=exp(x)*x+2*exp(x)+x^2+2*xfactor(f2)ans=(a-1)*(a^2+a+1)[m,n]=numden(f3)%m为分子,n为分母m=1+2*a+3*a^2+4*a^3+5*a^4n=a^4simplify(f4)ans=19例clearsymsxyfinverse(1/tan(x))%求反函数,自变量为xans=atan(1/x)f=x^2+y;finverse(f,y)%求反函数,自变量为yans=-x^2+yclearsymsxyztu;f=1/(1+x^2);g=sin(y);h=x^t;p=exp(-y/u);compose(f,g)%求f=f(x)和g=g(y)的复合函数f(g(y))ans=1/(1+sin(y)^2)10例clearsymsabsubs(a+b,a,4)%用4替代a+b中的aans=4+bsubs(cos(a)+sin(b),{a,b},{sym('alpha'),2})%多重替换ans=cos(alpha)+sin(2)f=sym('x^2+3*x+2')f=x^2+3*x+2subs(f,‘x’,2)%求解f当x=2时的值ans=12115.4微积分5.4.1极限12135.4.2微分diff(f)求表达式f对默认自变量的一次微分值;diff(f,t)求表达式f对自变量t的一次微分值;diff(f,n)求表达式f对默认自变量的n次微分值;diff(f,t,n)求表达式f对自变量t的n次微分值。14155.4.3积分int(f)求表达式f对默认自变量的积分值;int(f,t)求表达式f对自变量t的不定积分值;int(f,a,b)求表达式f对默认自变量的定积分值,积分区间为[a,b];int(f,t,a,b)求表达式f对自变量t的定积分值,积分区间为[a,b]16175.5方程求解5.5.1代数方程代数方程的求解由函数solve实现:solve(f)求解符号方程式fsolve(f1,…,fn)求解由f1,…,fn组成的代数方程组5.5.2常微分方程使用函数dsolve来求解常微分方程:dsolve('eq1,eq2,...','cond1,cond2,...','v')18例symsabcxf=sym('a*x*x+b*x+c=0')solve(f)ans=[1/2/a*(-b+(b^2-4*c*a)^(1/2))][1/2/a*(-b-(b^2-4*c*a)^(1/2))]solve('1+x=sin(x)')ans=-1.9345632107520242675632614537689dsolve('Dy=x','x')%求微分方程y'=x的通解,指定x为自变量。ans=1/2*x^2+C1dsolve('D2y=1+Dy','y(0)=1','Dy(0)=0')%求微分方程y''=1+y'的解,加初始条件ans=-t+exp(t)[x,y]=dsolve('Dx=y+x,Dy=2*x')%微分方程组的通解x=-1/2*C1*exp(-t)+C2*exp(2*t)y=C1*exp(-t)+C2*exp(2*t)19扩展阅读5.6符号矩阵5.7任意精度计算5.8级数5.9符号积分变换5.10符号表达式绘图5.11Maple接口20应用举例21应用举例22应用举例23应用举例-6-4-2024050100150200250texp(-t)sin(t)+exp(-t)cos(t)24应用举例