1、实验2 符号函数及其微积分 一、符号函数计算 MATLAB中的符号函数计算主要有复数计算、复合函数计算和反函数计算。这些有关的符号函数的计算命令及说明列于表2—1。 表2—1 符号函数计算及复数操作 函数名称 功能及说明 compose(f,g) 求f=f(y),g=g(x)的复合函数f[g(x)]。 compose(f,g,z) 求f=f(y),g=g(x),x=z的复合函数f[g(z)]。 compose(f,g,x,z) 求f=f(x),x=g(z)的复合函数f[g(z)]。 compose(f,g,x,y,z) 求f=f(x),x=g(y),y=z的复合函
2、数f[g(z)]。 g=finverse(f) 求符号函数f的反函数g。 g=finverse(f,v) 求符号函数f对指定自变量v的反函数g。 实例1、求的复合函数 >> syms x y z u t %定义符号变量 >> f=u^3;g=sin(2*x-1); %定义符号表达式f,g >> compose(f,g) %求f,g的复合函数 ans = sin(2*x-1)^3 >> compose(f,g,t) %求f,g的复合函数,再将自变量x换为t ans = sin(2*t-1)^3 实例2、求的反函数。 >> finverse(exp(2*x)-2) %
3、求的反函数 ans = 1/2*log(2+x) >> finverse((1-x)/(2+x)) %求的反函数 ans = -(2*x-1)/(1+x) 二、绘制二维图形 1、图形窗口及其操作 MATLAB中不仅有用于输入各种命令和操作语句的命令窗口,而且有专门用于显示图形和对图形进行操作的图形窗口。图形窗口的操作可以在命令窗口输入相应命令对其进行操作,也可以直接在图形窗口利用图形窗口的本身所带的工具按钮、相关的菜单对其进行操作。下面将介绍一些对图形窗口进行基本操作的命令和函数。 (1) 图形窗口操作命令 对图形窗口的控制和操作的命令很多,这里主要介绍常用的figure、
4、shg、clf、clg、home、hold、subplot等常用命令。它们的调用格式及有关说明了见表2—2。 表2—2 图形窗口操作命令 命令及函数 说明 figure/figure(gcf) 显示当前图形窗口。用于创建新的图形窗口,也可以用来在两个图形窗口中间进行切换。 gcf/shg 显示当前图形窗口,同figure/figure(gcf)。 clf/clg 清除当前图形窗口。如果在hold on状态,图形窗口内的内容将被清除。clg与clf功能相同,是MATLAB早期版本中的清除图形窗口内图象命令。 clc 清除命令窗口。相当于命令窗口edit菜单下的clear c
5、ommand window选项。 home 移动光标到命令窗口的左上角。 hold on 保持当前图形,并允许在当前图形状态下,用同样的缩放比例加入另一个图形。 hold off 释放图形窗口,将hold on状态下加入的新图形作为当前图形。 hold 在hold on和hold off两种状态下进行切换。 ishold 测试当前图形的hold状态。若是hold on状态,则显示1;若是hold off状态,则显示0。 subplot(m,n,p)/subplot(mnp) 将图形窗口分成m×n个窗口,并指定第p个子窗口为当前窗口。子窗口的编号是从左至右、再从上到下进行
6、编号。 subplot 将图形窗口设定为单窗口模式,相当于subplot(1,1,1)/subplot(111)。 (2) 坐标轴、刻度和图形窗口缩放的操作命令 MATLAB中对图形窗口中的坐标轴的操作命令是axis,坐标刻度的操作命令是xlim、ylim、zlim等,其使用方法见表2—3,表2—4。 表2—3 axis函数的调用格式 调用格式 说明 axis([xmin xmax ymin ymax]) 根据向量[xmin xmax ymin ymax]设置二维图形窗口中坐标轴的最大、最小值。 axis([xmin xmax ymin ymax zmin zmax])
7、 根据向量[xmin xmax ymin ymax zmin zmax]设置三维图形窗口中坐标轴的最大、最小值。 axis([xmin xmax ymin ymax zmin zmax cmin cmax]) 根据向量[xmin xmax ymin ymax zmin zmax cmin cmax]设置三维图形窗口中坐标轴的最大、最小值和颜色。 axis auto 将当前图形窗口的坐标轴刻度设置为缺省状态。 axis manual 固定坐标轴刻度,若当前图形窗口为hold on状态,则后面的图形将采用同样的刻度。 axis tight 采用与X方向和Y方向相同的坐标轴刻度,即
8、只绘制包含数据的部分坐标。 axis fill 设定坐标轴边界,用来适应数据值的范围。 axis equal 设置X轴、Y轴为同样的刻度。 axis ij 翻转Y轴,使之正数在下,负数在上。 axis xy 复位Y轴,使之正数在上,负数在下。 axis image 重新设置图形窗口的大小,与axis equal相同,以适应数据的范围。 axis square 重新设置图形窗口的大小,使窗口为正方形。 axis normal 将图形窗口复位至标准大小。 axis vis3d 锁定坐标轴之间的关系。一般用于图形旋转时。 axis off 不显示坐标轴及刻度。
9、axis on 显示坐标轴及刻度。 axis (v) 根据向量v设置坐标轴刻度,使xmin=v1,xmax=v2,ymin=v3,ymax=v4,zmin=v5,zmax=v6。对于对数图形,使用原数值而不使用对数值。 axis(axis) 固定坐标轴刻度,即当图形窗口位于hold on状态下也不改变坐标轴刻度。 表2—4 box、lim、grid及相关函数的调用格式 函数及调用格式 说明 box 是否图形四周都设定坐标轴。box on则开启该功能,box off则关闭该功能,box则在box on和box off之间切换。 datetick(axis,format)
10、根据日期格式format格式化坐标轴上的文本。参数axis可以是'x'(默认值),'y','z'。help datetick可以显示更多用法和信息。 dragrect(x,step) 允许用户在屏幕上拖动矩形。help dragrect可以显示更多的用法。 xlim([xmin xmax]) 设定X轴的最大、最小值,使xmin=xmin,xmax=xmax。 xlim 测定X轴的最大、最小值。 ylim([ymin ymax]) 设定Y轴的最大、最小值,使ymin=ymin,ymax=ymax。 ylim 测定Y轴的最大、最小值。 zlim([zmin zmax]) 设
11、定Z轴的最大、最小值,使zmin=zmin,zmax=zmax。 zlim 测定Z轴的最大、最小值。 grid on 根据图形窗口中图形的坐标形式,绘制图形窗口的网格。 grid off 清除图形窗口中的网格。 grid 在grid on和grid off之间切换。 (3) 线型、点型及颜色参数 不管是在二维绘图还是在三维绘图当中,在所有能产生线条的命令中一律用参数S来定义线条的线型、点型和颜色。在绘图命令中参数S的输入采用字符串形式,两端加单引号。有关线型、点型和颜色的定义见表2—5、表2—6、表2—7。例如: plot(x,y,'-*k)表示绘制的曲线用实线,数据点(
12、x,y)用星号*绘出,曲线和数据点都用黑色。 fplot('fun',lim,'-.r')表示绘制参数fun决定的函数在参数lim给定范围内的曲线,曲线用红色的点划线绘出。 当参数S省略时,则使用系统默认的线型和颜色绘制图形。 表2—5 线型定义符 线型 实线(默认值) 点线 划线 点划线 定义符 - : -- -. 表2—6 点型定义符 点型 实点 加号 交叉号 小圆圈 星号 棱形 上三角 定义符 . + x o * d ^ (续表5—5) 点型 下三角 左三角 右三角 正方形 正六角星 正五角形 定义符 v
13、 < > s h p 表2—7 颜色定义符 颜色 定义符 颜色 定义符 红色 r(red) 绿色 g(green) 蓝色 b(blue) 青色 c(cyan) 品红 m(magenta) 黄色 y(yellow) 黑色 k(black) 白色 w(white) 2、二维图形的绘制 MATLAB具有强大的图形处理功能,不管是二维图形还是三维图形,作图方法都非常简便。绘制二维图形有很多,现在把常用的四个绘图函数的函数名、功能列表如下(见表2—2): 表2—8 MATLAB绘图函数 函 数 式 操 作 功 能 Plot(
14、X,Y) 对向量X绘制向量Y的图形。以X为横坐标,以Y为纵坐标,将有序点集连成曲线。可以加确定图形线型和着色的参数。 Fplot(‘fcn’,) 绘制由fcn表示的函数在区间上图形。Fcn可以是代表某一函数的变量,也可以是X和Y的数学表达式。中括号内最多可以是4个值,前两个是自变量X的范围,后两个是Y的范围。在中括号后还可以加确定图形线型和着色的参数。 polar(theta,rho) 绘制极坐标函数rho=f(theta)的图象。其中theta是极角,以弧度为单位,rho是极径。 polar(theta,rho,S) 同polar(theta,rho),参数S确定要绘制的曲线的
15、线型、点型、颜色。 Bar(X,Y) 以X为横坐标绘制Y的条形图。X必须是严格递增向量。 legend('str1','str2',…) 在图的右上角加线形标注。str1是plot函数中的第一对数组[x1,y1],str2是plot函数中的第二对数组[x2,y2],标注的线型也取处plot函数中相应的线型。 (1)向量作图 在利用向量作图时,首先要创建一个有值的向量,然后对这个向量的每一个元素求另一向量函数值,最后画出向量图形。 实例3、画出在[0,2]上的图象,操作如下: >> X=[0:1/10:2]; %创建向量X,确定X的范围 >> Y=X.^2; %创建向量Y,
16、确定Y的范围 >> plot(X,Y) %绘图 绘制出的图形见图2—1。 图2—1 y=x2在[0,2]上的图形 (2)函数作图 利用MATLAB自带的作图函数作二维或三维图形,既方便又快捷。 实例4、作在[-2,2]上的图形,操作及结果如下: >> fplot('sin(1/x)',[-2,2]) 绘制出的图形见图2—2。 图2—2 y=sin1/x在[-2,2]上的图形 (3)极坐标绘图 实例5、绘制心形线r=2(1-cosθ)的极坐标图形。 在命令窗口输入以下命令: >> theta=[0:0.01:2*pi]; %建立数据点向量theta >> po
17、lar(theta,2*(1-cos(theta)),'-k') %绘制r=2(1-cosθ)的极坐标图形 绘制的心形线如图2—3所示。 图2—3 心形线r=2(1-cosθ)的极坐标图形 实例6、绘制在[-3,3]上以0.3为步长各数据点的条形图。操作如下: >> X=[-3:0.3:3]; %创建向量X,并设置数据点 >> bar(X,exp(-X.^2)) %绘制函数在各数据点的条形图 绘制出的图形见图2—4。 图2—4 在[-3,3]上的条形图 实例7、在同一窗口用不同的线型绘制y=sinx,y =cosx在[0,2π]上的图象,并加上标注。 在命令窗口输入如
18、下命令: >> [x,y]=fplot('sin',[0 2*pi]); %计算[0,2π]上sinx的数据 >> [x1,y1]=fplot('cos',[0 2*pi]); %计算[0,2π]上cosx的数据 >> plot(x,y,'-r',x1,y1,'-.k') %绘制不同线型的两根曲线 >> legend('y=sinx','y=cosx') %加图形标注 绘制出的图形见图2—5。 图2—5 在同一窗口不同线型绘制的y=sinx,y =cosx在[0,2π]上的图象 三、符号函数的极限 函数的极限是微积分的基础,它的概念贯穿微积分的始终。在MATLAB7.0中,
19、系统给出了多种求函数极限的运算函数,使得原本在高等数学中较为复杂的函数极限的求解变得简单容易。现将符号函数的极限的运算函数列于表2—3。 表2—9 符号极限函数limit的调用格式 调用格式 说明 limit(F,x,a) 计算当时符号函数表达式F的极限值。 limit(F) 按系统默认自变量v,计算当时符号函数表达式F的极限值。 limit(F,a) 按系统默认自变量v,计算当时符号函数表达式F的极限值。 limit(F,x,a,'right') 计算当时符号函数表达式F的右极限值。 limit(F,x,a,'left') 计算当时符号函数表达式F的左极限值。
20、 实例8、求极限的操作过程和结果如下: >> syms x a ; %定义符号变量x和a >> limit((x^2-1)/(x-1),x,1) %求函数(x2-1)/(x-1)当时的极限 ans = 2 实例9、求极限和 >> limit(sin(x)/x,x,0) ans = 1 >> limit(sin(x)/x,x,a) ans = sin(a)/a 实例10、求arctanx当和时的极限,求tanx当时的左、右极限。 >> syms x t y %定义符号变量 >> f=atan(x); %定义符号函数 >> limit(f,x,-inf) %计算时的极
21、限,-inf表示负无穷大 ans = -1/2*pi >> limit(f,x,inf) %计算时的极限,inf表示正无穷大 ans = 1/2*pi >> f=tan(x) %定义符号函数 f = tan(x) >> limit(f,x,pi/2,'left') %求时的左极限 ans = Inf >> limit(f,x,pi/2,'right') %求时的右极限 ans = -Inf 实例11、按系统默认自变量求函数自变量趋近于0和3时的极限值。 >> f=(x^2-t^2)/(x-y); %定义符号函数 >> limit(f) %求自变量趋近于0时的极
22、限值 ans = t^2/y >> limit(f,3) %求自变量趋近于3时的极限值 ans = (-9+t^2)/(-3+y) 实例12、求符号矩阵当时的左极限。 >> A=[exp(x) exp(-x) (exp(x)-exp(-x))/2;sin(x) cos(x) sin(2*x);log(1+x) log(2+x) log(3+x)]; %定义符号矩阵A >> limit(A,x,0,'left') %求符号矩阵每一个元素当时的左极限 ans = [ 1, 1, 0] [ 0, 1, 0] [ 0, log(2), log(3)] 四、符号函数的导数
23、 在MATLAB中求符号函数的导数是使用微分函数diff实现的,该函数的调用格式如下表(见表2—4)。 表2—10 符号微分函数diff的调用格式 调用格式 说明 diff(S,'v')/diff(S,sym('v')) 计算符号表达式S对指定符号变量v的一阶导数。 diff(S) 计算符号表达式S对系统默认自变量的一阶导数。 diff(S,n) 计算符号表达式S对系统默认自变量的n阶导数。 diff(S,'v',n)/diff(S,n,'v') 计算符号表达式S对指定符号变量v的n阶导数。 实例13、求函数和的一阶导数的操作如下: >> diff(cos(a*x^
24、2-1),'x') ans = -2*sin(a*x^2-1)*a*x >> diff(sin(a*x^3)) ans = 3*cos(a*x^3)*a*x^2 实例14、求函数和的一阶和三阶导数。 >> syms x y t u v z a b %定义符号变量 >> S=exp(x)*(sqrt(x)+2^x); %定义符号函数 >> diff(S) %计算符号函数的一阶导数 ans = exp(x)*(x^(1/2)+2^x)+exp(x)*(1/2/x^(1/2)+2^x*log(2)) >> diff(S,3) %计算符号函数的三阶导数 ans = exp(
25、x)*(x^(1/2)+2^x)+3*exp(x)*(1/2/x^(1/2)+2^x*log(2))+3*exp(x)*(-1/4/x^(3/2)+2^x*log(2)^2)+exp(x)*(3/8/x^(5/2)+2^x*log(2)^3) >> S=log(log(log(x))); %定义符号函数 >> diff(S) %计算符号函数的一阶导数 ans = 1/x/log(x)/log(log(x)) >> diff(S,3) %计算符号函数的三阶导数 ans = 2/x^3/log(x)/log(log(x))+3/x^3/log(x)^2/log(log(x))+3/x
26、^3/log(x)^2/log(log(x))^2+2/x^3/log(x)^3/log(log(x))+3/x^3/log(x)^3/log(log(x))^2+2/x^3/log(x)^3/log(log(x))^3 实例15、求隐函数的一阶导数。 >> S=x^2+y^3-3*x*y; %定义符号表达式 >> -diff(S,x)/diff(S,y) %由dy/dx=-Fx/Fy计算表达式中y对x的导数 ans = (-2*x+3*y)/(3*y^2-3*x) 五、符号一元函数的积分 MATLAB中对符号函数的积分是通过调用函数int实现的。调用格式如下表(见表2—11)。
27、 表2—11 符号积分函数int的调用格式 调用格式 说明 int(S) 对符号表达式S中的默认自变量求S的不定积分。 int(S,v) 对符号表达式S中的指定变量v求S的不定积分。 int(S,a,b) 对符号表达式S中的默认自变量在区间[a,b]上求S的定积分。 int(S,v,a,b) 对符号表达式S中的指定自变量v在区间[a,b]上求S的定积分。 实例16、计算不定积分 >> syms x y z a b %定义符号变量 >> S=(2*x-7)/(4*x^2+12*x+25); %定义符号表达式 >> int(S) %对符号表达式求不定积分 ans =
28、 1/4*log(4*x^2+12*x+25)-5/4*atan(1/2*x+3/4) >> S=1/(x^4*sqrt(1+x^2)); %定义符号表达式 >> int(S) %对符号表达式求不定积分 ans = -1/3/x^3*(1+x^2)^(1/2)+2/3/x*(1+x^2)^(1/2) >> S=exp(2*x)*cos(3*x) %定义符号表达式 S = exp(2*x)*cos(3*x) >> int(S) %对符号表达式求不定积分 ans = 2/13*exp(2*x)*cos(3*x)+3/13*exp(2*x)*sin(3*x) 实例17、求
29、定积分 >> syms x y z a b %定义符号变量 >> S=x^2/sqrt(1-x^2); %定义符号表达式 >> int(S,0,1/2) %计算符号表达式在区间[0,1/2]上的定积分 ans = -1/8*3^(1/2)+1/12*pi >> S=x*sin(x)^2; %定义符号表达式 >> int(S,0,pi/2) %计算符号表达式在区间[0,π/2]上的定积分 ans = 1/16*pi^2+1/4 >> S=1/(1+4*x^2); %定义符号表达式 >> int(S,-inf,inf) %计算符号表达式在区间上的广义积分 ans = 1/2*pi






