薛定宇教授大讲堂(卷Ⅱ):MATLAB微积分运算
上QQ阅读APP看书,第一时间看更新

3.2 单边极限与函数连续性

3.2.1 左极限与右极限

前面介绍的极限中,x→x0通常允许x从任意方向趋近于x0,而实际应用中,有时只允许x从左侧或从右侧趋近于x0,这就涉及单边极限问题。

定义3-7 函数的单边极限(或称左右极限)数学形式如下

从物理意义上看,定义中前者表示x从左侧无限趋近于x0点,所以又称为左极限,后者相应地称为右极限。单边极限问题在MATLAB符号运算工具箱中也可以使用limit()函数直接求出,该函数的调用格式为

L=limit(f,x,x0, 'left'),%左极限

L=limit(f,x,x0, 'right'),%右极限

例3-14 试求出下面的单边极限问题:

求解函数的单边极限与前面介绍的一般极限问题一样方便,采用的步骤也是一致的。先申明符号变量,在将原函数用MATLAB表示出来,最后调用limit()函数直接得出所需的函数右极限的值,其结果为1。其实读者还可以尝试,如果再多求几重这样的函数,得出的结果也是1。

对这个函数而言,若x<0,则原函数在实数框架下是没有定义的,必须假设x为正数;x=0时由于0做了分母,函数也是没有定义的;只能研究x>0的情形,所以应该事先申明x为正的符号变量。还可以绘制出该函数在x=0附近的一个邻域内的曲线,如图3-4所示,可见在x→0+时,函数的值确实趋近于1。

图3-4 x=0邻域内函数曲线

     >> fplot(f,[-0.001,0.01]), hold on, plot(0,1,'o'), hold off

例3-15 试求解单边极限问题

利用MATLAB的limit()函数,可以容易地求出单边极限为12。

用下面的语句还可以绘制出(−0.1,0.1)区间的函数曲线,如图3-5所示。这里采用了一点小技巧,成功地避开了x=0点。

     >> x0=-0.1+0.000001:0.001:0.1; plot(x0,f(x0),0,c,'o')

图3-5 x=0附近的曲线

可见,对这个例子来说,使用limit(f,x,0)命令也能求出函数极限值是12。

回顾原始问题,其中采用x→0+是因为它可以保证根号内的值为非负数。事实上,即使是负数,cos jα=(eα+e−α)/2也是有定义的,且其结果为实数,这对本问题没有影响,但对某些分段函数来说,单边极限是不同的。

例3-16 试分别求出tant函数关于π/2点处的左右极限。

由下面命令可以分别求出函数的左右极限,分别为L1=L2=−

3.2.2 函数的连续性

定义3-8 如果函数f(x)在x=x0的某个邻域内有定义,且,则称f(x)函数在x0点处连续。

定义3-9 如果出现下面两种情况之一,则称x=x0是函数f(x)的间断点。

(1)函数f(x)在x=x0处没有定义或不存在;

(2)f(x0)有定义,但

定义3-10 若关于某点x0,函数f(t)的左右极限相同,则该点称为第一类间断点,否则称为第二类间断点。

例3-17 试判定下面分段函数f(x)的连续性。

从给定的分段函数看,在三个给定的区间内f(x)都是连续的,所以需要进一步判定这三个区间两两交界的点处,即x=−7与x=1处函数是否连续就可以了。比如说,需要判定第一段函数的x→−7左极限是不是等于−7,在第三段函数的x→1+处右极限是不是等于1就可以了。

可以看出,L1=−1/6,L2=1/2,都不是期待的值,所以在这两个点处函数都不连续,由上面的语句还可以绘制出函数的曲线,如图3-6所示,从得出的图形可见,在这两个点处函数都存在跳跃,确实是不连续的。

图3-6 函数连续性的判定

例3-18 ,试选择a的值使得函数f(x)连续。

函数稳定性的关键点可能发生在x=0。由给出的函数f(x)看,f(0)=a,如果a恰好等于,则函数连续。由下面命令可以直接求出a的值为1。

     >> syms x; f(x)=exp(x); a=limit(f,x,0,'left')

3.2.3 区间极限运算

有些函数,如sin x,在x→∞的极限是不存在的,但可以通过MuPAD函数的选项求取其极限范围。可以通过下面的语句直接调用MuPAD的底层函数limit()求解相关问题。

     L=feval(symengine,'limit',f,'x=infinity','Intervals')

其中feval()函数可以直接通过符号运算引擎symengine调用MuPAD的底层函数limit(),其变元为MuPAD写法。

例3-19 假设a,b>0,试求出f(t)=a sin 8x2+b cos(2x−2)函数在x→∞时极限的区间。

利用底层的MuPAD命令可以解出该极限的区间为(−a−b,a+b)。

定义3-11 区间极限的下界与上界分别记作,在数学上分别称为下极限与上极限。

3.2.4 函数连续性的应用——方程解的判定

定理3-1 如果f(x)在(a,b)区间内连续,且f(a)f(b)<0,则在(a,b)区间内至少存在一个ξ,使得f(ξ)=0。

高等数学老师讲授的“至少存在一个ξ”的方法可以判定一个方程f(x)=0是否有解。其实判定方程解的存在性并不是科学技术人员最感兴趣的事,他们更感兴趣的是有几个这样的ξ,这些ξ都在哪儿。

有了MATLAB这样强有力的计算机工具,求解方程是个轻而易举的事,即使想求出多元多解方程全部的根也是特别容易的,具体内容可以参见本丛书第IV卷。对简单的单变量的方程而言,MATLAB提供的fzero()函数就足以应付了。

例3-20 试判定方程f(x)=sin (x3+1/x)=0在(ϵ,0.1)区间是否有解。如果有,有多少根呢?能不能求出其全部的根?

如果将ϵ点与0.1点的值代入函数,可以发现f(ϵ)=0.8742,f(0.1)=−0.5449,这两点的函数值异号,数学家会告诉你,在该区间至少存在一个ξ,满足f(ξ)=0。

数学家能知道的就只有这么多了,如果不借助计算机他们也不知道有多少个根,以及根都位于什么地方。如果绘制函数的曲线,可以得出如图3-7所示的曲线,从曲线上看原方程有无数个根。

     >> fplot(f,[-0.1,0.1])

图3-7 sin(x3+1/x)=0方程的图示

科学技术人员当然不能满足于数学家的结论,他们更感兴趣的是方程到底有多少个根,这些根都在哪里。要想得出一个根,可以使用简单的搜索函数fzero(),不过该函数一次只能得出方程的一个根,求解多解方程很麻烦。如果想得出一般方程在感兴趣区间内全部的根,则需要采用本丛书第IV卷中将介绍的more_sols()函数薛定宇.高等应用数学问题的MATLAB求解[M].4版.北京:清华大学出版社,2018.,这里只给出其命令与结果,如图3-8所示,关于该函数这里暂不过多介绍。

图3-8 方程根的标示(每个圆圈都是找到的根)