1、符号表达式及其应用符号表达式及其应用微积分基本运算微积分基本运算Taylor级数展开级数展开常微分方程求解常微分方程求解第第3章章 高等数学计算高等数学计算MATLAB的的符号计算符号计算在数学、物理及各类工程应用中在数学、物理及各类工程应用中,除了数值计算外除了数值计算外,还常常需用符号计算还常常需用符号计算.一般的计算机语言平台只能一般的计算机语言平台只能实现数值计算实现数值计算,早期的早期的MATLAB也不能实现符号计也不能实现符号计算。算。1993年年MathWorks公司购买了公司购买了MAPLE的使用的使用权权,并开发出实现符号计算的工具箱并开发出实现符号计算的工具箱Symboli
2、c Math Toolbox.符号计算需要使用专门函数,功能包括有微积分、符号计算需要使用专门函数,功能包括有微积分、线性代数、方程求解、积分变换等。在线性代数、方程求解、积分变换等。在MATLAB数数值计算和字符串操作中值计算和字符串操作中,变量通过赋值语句创建变量通过赋值语句创建.但但是符号计算中的变量在使用前,必须要用关键词是符号计算中的变量在使用前,必须要用关键词syms(或其它函数或其它函数)创建。创建。2/16例例1.用符号表达式定义用符号表达式定义 f=e 0.2x sin(0.5x)并绘图并绘图.syms x;f=exp(-0.2*x)*sin(0.5*x);ezplot(f,
3、0,2*pi)3/16syms 符号变量符号变量1 符号变量符号变量2 f=exp(-1/5*x)*sin(1/2*x)ezplot(f)绘表达式绘表达式f=f(x)的图的图绘图区域绘图区域 -2*pix2*piezplot(f,a,b)绘图区域绘图区域:axa时的极限时的极限symsum(f,k,m,n)求级数求级数7/16 nmkkf)(求极限运算求极限运算求一个数学表达式的极限用命令求一个数学表达式的极限用命令limit,使用格式如下,使用格式如下limit(F,x,a)这一命令的功能是求出符号表达式这一命令的功能是求出符号表达式F当当x a.的极限。的极限。(1)limit(F,a)使
4、用与使用与x最接近的英文字母作为自变量;最接近的英文字母作为自变量;(2)limit(F)使用使用 a=0 作为自变量的极限点。作为自变量的极限点。求表达式的左极限和右极限命令分别为求表达式的左极限和右极限命令分别为LIMIT(F,x,a,right)LIMIT(F,x,a,left)例例18、求极限求极限 xxxsinlim .10 42lim .222 xxx xxxt3)21(lim .3 xx1lim .40 xx1lim.50 hxhxh)sin()sin(lim .60 ,)1(lim .7xxxexa syms x a t h;p1=limit(sin(x)/x)p2=limit
5、(x-2)/(x2-4),2)p3=limit(1+2*t/x)(3*x),x,inf)p4=limit(1/x,x,0,right)p5=limit(1/x,x,0,left)%定义符号变量定义符号变量%求第一个极限求第一个极限%求第二个极限求第二个极限%求第三个极限求第三个极限%求第四个极限求第四个极限%求第五个极限求第五个极限 p6=limit(sin(x+h)-sin(x)/h,h,0)v=(1+a/x)x,exp(-x);p7=limit(v,x,inf,left)%求第六个极限求第六个极限%定义向量函数定义向量函数%求第七个极限求第七个极限得:得:1sinlim.10 xxx414
6、2lim22 xxxtxxext63)21(lim xx1lim0 xhxhxhcos)sin()sin(lim0 xx1lim00,)1(limaxxxeexa 函数的台劳(函数的台劳(taylor)级数展开)级数展开一元函数一元函数f(x)的台劳(的台劳(taylor)级数展开命令格式为)级数展开命令格式为taylor(f,n,a)其中,其中,f为函数表达式,为函数表达式,n确定级数最高项次数为确定级数最高项次数为(n 1),a指定函数在某一点展开。指定函数在某一点展开。taylor(f)得到函数得到函数f.的五阶麦克劳林多项式逼近;的五阶麦克劳林多项式逼近;taylor(f,n)得到函数
7、得到函数f.的的(n-1)阶麦克劳林多项式逼近阶麦克劳林多项式逼近taylor(f,a)得到得到f的关于点的关于点a的台劳多项式逼近。的台劳多项式逼近。taylor(f,x)使用自变量使用自变量x做台劳级数展开。做台劳级数展开。例例19、对下列函数做台劳级数展开对下列函数做台劳级数展开(1)e-x在在 x=0处作处作5阶展开,(阶展开,(2)ln x 在在x=1处作处作5阶展开;阶展开;(3)sin x在在x=/2 处处5阶展开;(阶展开;(4)xt 在在 t=0处作处作2阶展开。阶展开。syms x tT1=taylor(exp(-x)returns 1-x+1/2*x2-1/6*x3+1/
8、24*x4-1/120*x5T2=taylor(log(x),6,1)x-1-1/2*(x-1)2+1/3*(x-1)3-1/4*(x-1)4+1/5*(x-1)5T3=taylor(sin(x),6,pi/2)1-1/2*(x-1/2*pi)2+1/24*(x-1/2*pi)4T4=taylor(xt,3,t)1+log(x)*t+1/2*log(x)2*t2543224124161211xxxxxex 得:得:5432)1(51)1(41)1(31)1(211ln xxxxxx42)2(241)2(211sin xxx22)(ln21)(ln1txtxxt )cos(451)(xxf 例例
9、9.麦克劳林展开函数麦克劳林展开函数syms xf=1/(5+4*cos(x)T=taylor(f,8)Pretty(T)2 4 49 6 1/9+2/81 x +5/1458 x +-x 131220例例3.7计算计算 f=1/(5+4cos(x)关于关于x的导数的导数syms xf=1/(5+4*cos(x)ezplot(f)f1=diff(f,x,1)ezplot(f1)-6-4-202460.20.40.60.81x1/(5+4 cos(x)-6-4-20246-1-0.500.51x4/(5+4 cos(x)2 sin(x)f1=4/(5+4*cos(x)2*sin(x)可视化符号函
10、数分析界面可视化符号函数分析界面1、单变量函数分析的交互界面、单变量函数分析的交互界面单变量函数分析界面用于考察两个一元函数各自性质单变量函数分析界面用于考察两个一元函数各自性质及其相关关系。及其相关关系。该函数计算器由该函数计算器由funtool.m文件生成。文件生成。在在MATLAB命令窗口中键入命令命令窗口中键入命令 funtool系统将产生三个新窗口。其中,系统将产生三个新窗口。其中,1号和号和2号窗口号窗口(Figure No.1,Figure No.2)是函数曲线窗口,)是函数曲线窗口,3号号窗口(窗口(Figure No.3)是函数运算控制器。系统初始状)是函数运算控制器。系统初
11、始状态时时刻,三个窗口中只有态时时刻,三个窗口中只有3号窗口处于激活状态,另号窗口处于激活状态,另两个处于睡眠状态。用鼠标单击两个处于睡眠状态。用鼠标单击1号(或号(或2号)窗口,号)窗口,可激活该窗口,同时使原处于激活状态的窗口转换到可激活该窗口,同时使原处于激活状态的窗口转换到睡眠状态。睡眠状态。231cosxx xcos451 第一个文本框中的函数第一个文本框中的函数f(x)换为换为 ,第二个文本,第二个文本框中的函数框中的函数g(x)换为换为则另两个窗口的函数图形会发生变化,如下图所示。则另两个窗口的函数图形会发生变化,如下图所示。swap 交换交换 f(x)和和g(x).cycle
12、顺序演示典型函数表中函数顺序演示典型函数表中函数insert 将当前函数插入典型函数表中代演示将当前函数插入典型函数表中代演示 help 帮助文件帮助文件delete 将将1号窗口中函数从典型函数表中删除号窗口中函数从典型函数表中删除 demo 自动演示自动演示 reset 返回初始演示状态返回初始演示状态 close 关闭函数计算器关闭函数计算器例例5.求求函数函数 的渐近线、极值、的渐近线、极值、拐点,并作图拐点,并作图.8/163163)(22 xxxxxRsyms xn=3*x2+6*x-1;d=x2+x-3;f=n/d;limit(f,inf)ans=3roots=solve(d)r
13、oots=-1/2+1/2*13(1/2)-1/2-1/2*13(1/2)ezplot(f)hold onplot(-2*pi 2*pi,3 3,g)plot(double(roots(1)*1 1,-5 10,r)plot(double(roots(2)*1 1,-5 10,r)title(水平渐近线和垂直渐近线水平渐近线和垂直渐近线)hold offf1=diff(f);c=solve(f1)c=-8/3-1/3*13(1/2)-8/3+1/3*13(1/2)ezplot(f)hold onplot(double(c),double(subs(f,c),ro)title(函数的极大值和极小
14、值函数的极大值和极小值)text(-5.5,3.2,局部极小值局部极小值)text(-2.5,2,局部极大值局部极大值)hold off222)3()17163()(xxxxxRf2=diff(f1);q=solve(f2);double(q)ans=-5.2635 -1.3682-0.8511i -1.3682+0.8511iq=q(1);ezplot(f,-9 6)hold onplot(double(q),double(subs(f,q),ro)title(函数的拐点函数的拐点)text(-7,2,拐点拐点)hold off3223)3()4151243(2)(xxxxxxR例例7.计算
15、不定积分计算不定积分 dxbxeax)sin(syms a b xf=exp(a*x)*sin(b*x);int(f,x);pretty(ans)b exp(a x)cos(b x)a exp(a x)sin(b x)-+-2 2 2 2 a +b a +bg=simplify(ans)g=exp(a*x)*(-b*cos(b*x)+a*sin(b*x)/(a2+b2)cos()sin(1)sin(22bxbbxaebadxbxeaxax 例例8.绘函数绘函数 (a=1,b=3)在在0,3.2上的图形上的图形.并计算并计算bxexfaxsin)(syms a b xf=exp(a*x)*sin
16、(b*x)f1=subs(f,a,1),f1=subs(f1,b,3)ezplot(f1,0,3.22)F1=simplify(int(f1,1,2)double(F1)ans=-3.180600.511.522.53-5051015xexp(x)sin(3 x)213sin xdxex例例10、计算定积分计算定积分 ,syms x y t q1=int(sin(x)+2,0,pi/6)q2=int(xy,y,0,pi/3)q3=int(4*x*t,x,2,sin(t)%定义符号变量定义符号变量%求第一个积分求第一个积分%求第二个积分求第二个积分%求第三个积分求第三个积分得:得:60)2(si
17、n dxx 30 dyxy ttxdxsin24q1=-1/2*3(1/2)+1/3*pi+1q2=(x(1/3*pi)-1)/log(x)q3=2*t*(sin(t)2-4)即:即:32131)2(sin60 dxxxxdyxyln13130 )4(sin242sin2 tttxdxt例例3.12 计算二重积分计算二重积分syms x yf=x2*sin(y);int(int(f,x,0,1),y,0,pi)ezmesh(f,0,1,0,pi)Ddxdyyx sin20,10|),(yxyxDans=2/3 定积分数值计算命令定积分数值计算命令 quad(f,a,b)例例3.14 计算积分上
18、限函数值计算积分上限函数值f=inline(x.3./(exp(x)-1);x=eps:.1:5;y=f(x);fill(0,x,5,0,y,0,c)x=eps:0.1:10;y=f(x);line(x,y)q(1)=quad(f,eps,1);for k=1:4 line(k,k,0,f(k);q(k+1)=q(k)+quad(f,k,k+1);endq tdxxxtF031)exp()(t 1 2 3 4 5F(t)0.2248 1.1764 2.5522 3.8771 4.8999024681000.511.5f=inline(exp(x).*sin(3*x)quad(f,1,2)ans
19、=-3.1806计算定积分计算定积分:213sin xdxex例例9.级数求和运算级数求和运算S=symsum(f,n,a,b)nkSnk 2111例例11.计算级数计算级数2212221nkSnk 1231kkSS2=symsum(k2,k,1,n);factor(S2)S2=1/6*n*(n+1)*(2*n+1)syms k nS1=symsum(k,k,1,n);factor(S1)S1=1/2*n*(n+1)S3=symsum(1/k2,k,1,inf)S3=1/6*pi212/16命令格式命令格式:dsolve(eq1,con1,x)y的一阶导数的一阶导数 Dy,y的二阶导数的二阶导
20、数 D2y例例10.解微分方程解微分方程14/16y=dsolve(Dy=1/(1+x2)-2*y2,y(0)=0,x)y=2*x/(2*x2+2)22211yxy 符号解符号解:y(x)=x/(1+x 2)0123456700.20.40.60.8旋转曲面绘制方法旋转曲面绘制方法非负函数非负函数 y=f(x)在有限区间上的图形为上半平面在有限区间上的图形为上半平面的一条曲线,曲线绕的一条曲线,曲线绕x轴旋转时,产生以轴旋转时,产生以x为对称为对称轴的旋转曲面,方程为轴的旋转曲面,方程为)(22xfzy 绘制网面需创建三维坐标绘制网面需创建三维坐标矩阵矩阵,对某一确定的对某一确定的x=t,旋旋
21、转曲面上对应于过点转曲面上对应于过点x=t垂直于垂直于X轴的圆轴的圆,该圆周上该圆周上所有点的所有点的X坐标不变,坐标不变,y和和z的坐标则满足圆的方的坐标则满足圆的方程程 f=inline(exp(-0.2*x).*sin(0.5*x);t=(0:20)*pi/10;theta=t;r=f(t);x=t*ones(size(t);y=r*cos(theta);z=r*sin(theta);mesh(x,y,z)colormap(0 0 0)axis offview(-17,54)5.0sin()(2.0 xexfx 曲线曲线 绕绕X轴旋转图形绘制轴旋转图形绘制)(22xfzy cos)(tf
22、y sin)(tfz tx 练习题与思考题练习题与思考题15/161.用用MATLAB求极限求极限xxxx30sinsintanlim 2.用用MATLAB求导数求导数xxxfcos1sin1)(3.用用MATLAB求定积分求定积分 022dxexx4.用用MATLAB求级数和求级数和 12)12(1nnn5.计算曲线段计算曲线段 f(x)=exp(a x)sin(b x),绕绕X轴旋转的旋转曲面面积轴旋转的旋转曲面面积 20 x6.编写一个函数文件,用于计算椭圆周长,要求输编写一个函数文件,用于计算椭圆周长,要求输入变量是椭圆的长半轴和短半轴。入变量是椭圆的长半轴和短半轴。7.符号变量与数值
23、型变量有何区别?符号变量与数值型变量有何区别?8.用两个窗口绘下列函数图形用两个窗口绘下列函数图形,分析函数性质分析函数性质16/16xxf1sin)(xxxg1sin)(思考题与练习题思考题与练习题1.用用syms x 定义了符号变量定义了符号变量,表达式表达式Y=exp(-0.2*x)*sin(0.5*x)与一般表达式有何不同与一般表达式有何不同2.定积分符号计算与数值计算有何不同?定积分符号计算与数值计算有何不同?3.旋转曲面的面积计算公式如何构造?旋转曲面的面积计算公式如何构造?4.写出曲线写出曲线 y=f(x)绕绕y轴旋转的旋转曲面方程轴旋转的旋转曲面方程5.下面两个曲面是由同一个平面曲线旋转产生的下面两个曲面是由同一个平面曲线旋转产生的,这个这个平面曲线的方程是什么平面曲线的方程是什么?