第二篇第四章MATLAB符号计算。130。4.5化简和代换符号表达式的初等运算是指符号表达式的变换和化简、符号的代换、复合函数的运算和反函数的运算、加、减、乘、除运算、乘方和开方运算。有关加、减、乘、除运算、乘方和开方运算在第一章实验的内容中我们已经作了介绍。下面主要介绍符号表达式的变换和化简、符号的代换、复合函数和反函数的运算。在MATLAB中,这些运算的常用函数如表4-5所示。表4-5符号表达式的变换和化简、复合函数和反函数的运算的MATLAB函数MATLAB函数名函数功能变换和化简expand(表达式)将表达式中的括号进行展开,即将乘积展开为和式factor(表达式)将表达式进行分解,即把多项式转换为乘积形式horner(表达式)将一般的表达式变为嵌套的形式collect(表达式)合并同类项simplify(表达式)利用各种恒等式关系、函数关系将表达式进行化简simple(表达式)(1)f=simple(S)对表达式S进行化简,输出长度最短的表达式f;(2)simple(S)对表达式S进行化简,输出用各种函数化简的结果及长度最短的表达式;(3)[f,how]=simple(S)对表达式S进行化简,输出长度最短的表达式f及f是哪一个函数作用的结果how。findsym(表达式)确认符号表达式中的符号代换subs(f,old,new)用符号new代替表达式f中的符号oldsubexpr(f)将表达式f中的公共部分用符号表示复合函数运算y=compose(f,g)输出y=f(u)和u=g(x)的复合函数y=f(g(x))y=compose(f,g,t)输出y=f(u)和u=g(t)的复合函数y=f(g(t))反函数运算g=finverse(f)输入函数y=f(x),其中y=f(x)和y=g(x)互为反函数,输出的y=g(x)是y=f(x)的反函数g=finverse(f,t)输入函数y=f(t),其中y=f(t)和y=g(t)互为反函数,输出的y=g(t)是y=f(t)的反函数第四章MATLAB符号计算第二篇第四章MATLAB符号计算作者:任玉杰。131。[例1]设函数652xy和yz3,试求z关于x的复合函数。解输入symsxyz=sqrt(3*y);y=5*x^2-6;z=compose(z,y)运行后屏幕显示为z=3^(1/2)*(5*x^2-6)^(1/2)[例2]分别求函数1yex和tysin2的反函数。解输入symsxty1y2y1=exp(-x);y2=sin(t);g1=finverse(y1)g2=finverse(y2,t)运行后屏幕显示为g1=-log(x)g2=asin(t)[例3]求函数)0(5acdcxbaxy的反函数。解输入symsxabcdy=((a*x+b)/(c*x+d))^(1/5)';g=finverse(y)运行后屏幕显示为g=-(b-conj(x)^5*d)/(a-conj(x)^5*c)为了用符号x代替表达式g中的符号conj(x),再输入:g=subs(-(b-conj(x)^5*d)/(a-conj(x)^5*c),conj(x),x)运行后屏幕显示为g=(-b+x^5*d)/(a-x^5*c)[例4]在MATLAB工作窗口输入下面程序,运行后,观察其结果,说明所使用MATLAB函数collect、expand、horner、factor和simplify的意义和用法。解在MATLAB工作窗口输入下面程序:symsxytaf1=collect(x^3+2*x^2-5*x^2+4*x-3*x+12-3),f2=collect((1+x)*t+t*x),f3=expand((x-1)*(x-2)*(x-3)),第二篇第四章MATLAB符号计算作者:任玉杰。132。f4=expand(cos(x+y)),f5=expand(cos(3*acos(x))),f6=horner(x^3-6*x^2+11*x-6),f7=horner(1.1+2.2*x+3.3*x^2),f8=factor(x^3-6*x^2+11*x-6),f9=simplify((1-x^2)/(1-x)),f10=simplify(sin(x)^2+cos(x)^2),f11=simplify((1/a^3+6/a^2+12/a+8)^(1/3))运行后屏幕显示如下:f1=x^3-3*x^2+x+9f2=2*t*x+tf3=x^3-6*x^2+11*x-6f4=cos(x)*cos(y)-sin(x)*sin(y)f5=4*x^3-3*xf6=-6+(11+(-6+x)*x)*xf7=11/10+(11/5+33/10*x)*xf8=(x-1)*(x-2)*(x-3)f9=x+1f10=1f11=((2*a+1)^3/a^3)^(1/3)请读者观察其结果,说明所使用MATLAB函数collect等的意义和用法。[例5]用findsym来确认例4中的符号表达式f11中的符号。解输入findsym(f11)运行后屏幕显示如下:ans=a[例6]工具箱为我们提供了一个强有力的函数simple,它综合运用上面的函数进行化简,并找出长度最短的表达式。(1)请问simple命令常用的调用格式有几种?(2)对于simple命令这些调用格式,选择下面的函数在计算机上演示,并说明它们的功能。(i)f(x)=sin(x)^2+cos(x)^2;(ii)g(x)=(1/a^3+6/a^2+12/a+8)^(1/3).第二篇第四章MATLAB符号计算作者:任玉杰。133。解(1)simple命令常用调用格式有三种,即f=simple(S),simple(S)和[f,how]=simple(S)(2)(i)f=simple(S)的功能是对表达式S进行化简,输出长度最短的表达式f。例如,输入symsaxf=simple(sin(x)^2+cos(x)^2)g=simple((1/a^3+6/a^2+12/a+8)^(1/3))运行后屏幕显示:f=1g=(2*a+1)/a(ii)simple(S)的功能是对表达式S进行化简,输出用各种函数化简的结果,及长度最短的表达式。例如,输入simple(sin(x)^2+cos(x)^2)运行后屏幕显示:simplify:1radsimp:sin(x)^2+cos(x)^2combine(trig):1factor:sin(x)^2+cos(x)^2expand:sin(x)^2+cos(x)^2combine:1convert(exp):-1/4*(exp(i*x)-1/exp(i*x))^2+(1/2*exp(i*x)+1/2/exp(i*x))^2convert(sincos):sin(x)^2+cos(x)^2convert(tan):4*tan(1/2*x)^2/(1+tan(1/2*x)^2)^2+(1-tan(1/2*x)^2)^2/(1+tan(1/2*x)^2)^2collect(x):sin(x)^2+cos(x)^2ans=1请读者在计算机上演示g(x)。(iii)[f,how]=simple(S)的功能是对表达式S进行化简,输出长度最短的表达式f及f是哪一个函数作用的结果how.例如,输入第二篇第四章MATLAB符号计算作者:任玉杰。134。[f,how]=simple((1/a^3+6/a^2+12/a+8)^(1/3)),[g,how]=simple(sin(x)^2+cos(x)^2)运行后屏幕显示:f=(2*a+1)/ahow=radsimpg=1how=combine[例7]工具箱中提供了两种代换函数subs和subexpr。请分别写出它们的一种调用格式,说明它们的功能,并选择下面的函数在计算机上演示。(1)用5代替表达式a+b中的a;(2)分别用alpha和5代替表达式中的a,b;(3)首先用命令t=solve('a*x^3+b*x^2+c*x+d=0')求方程的根t,然后将求解的结果中的公共部分用s代换。解(1)代换函数subs的一种调用格式为subs(S,old,new)它的功能是用符号new代替表达式S中的符号old。例如,输入symsab,subs(a+b,a,5)f=subs(cos(a)+sin(b),[a,b],[sym('alpha'),5])运行后屏幕显示:ans=5+bf=cos(alpha)+sin(5)(2)代换函数subs的一种调用格式为[Y,SIGMA]=subexpr(X,SIGMA)或[Y,SIGMA]=subexpr(X,'SIGMA')它的功能是将表达式X中的公共部分用SIGMA表示。例如,输入t=solve('a*x^3+b*x^2+c*x+d=0'),[r,s]=subexpr(t,'s')运行后屏幕显示:t=[1/6/a*(36*c*b*a-108*d*a^2-8*b^3+12*3^(1/2)*(4*c^3*a-c^2*b^2-18*c*b*a*d+27*d^2*a^2+4*d*b^3)^(1/2)*a)^(1/3)-2/3*(3*c*a-b^2)/a/(36*c*b*a-108*d*a^2-8*b^3+12*3^(1/2)*(4*c^3*a-c^2*b^2-18*c*b*a*d+27*d^2*a^2+4*d*b^3)^(1/2)*a)^(1/3)-1/3*b/a][-1/12/a*(36*c*b*a-108*d*a^2-8*b^3+12*3^(1/2)*(4*c^3*a-c^2*b^2-18*c*b*a*d+27*d^2*a^2+4*d*b^3)^(1/2)*a)^(1/3)+1/3*(3*c*a-b^2)/a/(36*c*b*a-108*d*a^2-8*b^3+12*3^(1/2)*(4*c^3*a-c^2*第二篇第四章MATLAB符号计算作者:任玉杰。135。b^2-18*c*b*a*d+27*d^2*a^2+4*d*b^3)^(1/2)*a)^(1/3)-1/3*b/a+1/2*i*3^(1/2)*(1/6/a*(36*c*b*a-108*d*a^2-8*b^3+12*3^(1/2)*(4*c^3*a-c^2*b^2-18*c*b*a*d+27*d^2*a^2+4*d*b^3)^(1/2)*a)^(1/3)+2/3*(3*c*a-b^2)/a/(36*c*b*a-108*d*a^2-8*b^3+12*3^(1/2)*(4*c^3*a-c^2*b^2-18*c*b*a*d+27*d^2*a^2+4*d*b^3)^(1/2)*a)^(1/3))][-1/12/a*(36*c*b*a-108*d*a^2-8*b^3+12*3^(1/2)*(4*c^3*a-c^2*b^2-18*c*b*a*d+27*d^2*a^2+4*d*b^3)^(1/2)*a)^(1/3)+1/3*(3*c*a-b^2)/a/(36*c*b*a-108*d*a^2-8*b^3+12*3^(1/2)*(4*c^3*a-c^2*b^2-18*c*b*a*d+27*d^2*a^2+4*d*b^3)^(1/2)*a)^(1/3)-1/3*b/a-1/2*i*3^(1/2)*(1/6/a*(36*c*b*a-108*d*a^2-8*b^3+12*3^(1/2)*(4*c^3*a-c^2*b^2-18*c*b*a*d+27*d^2*a^2+4*d*b^3)^(1/2)*a)^(1/3)+2/3*(3*c*a-b^2)/a/(36*c*b*a-108*d*a^2-8*b^3+12*3^(1/2)*(4*c^3*a-c^2*b^2-18*c*b*a*d+27*d^2*a^2+4*d*b^3)^(1/2)*a)^(1/3))]r=[1/6/a*s^(1/3)-2/3*(3*c*a-b^2)/a/s^(1/3)-1/3*b/a][-1/12/a*s^(1/3)+1/3*(3*c*a-b^2)/a