36微积分运算 第二章 本章将通过例子系统地介绍Maple 软件中的微积分运算,读者可以学到利用Maple 软件解决简单的高等数学问题的一些方法和技巧。
本章具体包括以下内容:如何在Maple 中计算函数的极限如何在Maple 中检验函数的连续性如何在Maple 中表示微分运算如何在Maple 中进行函数和表达式的微分运算如何在Maple 中对隐函数进行微分和求导运算如何在Maple 中进行符号积分运算如何在Maple 中计算广义积分如何在Maple 中计算数值积分如何在Maple 中表示和计算数列如何在Maple 中求数列的极限如何在Maple 中将已知函数展开成级数。
37.Maple 的应用,可以说大多数是用在高等数学的计算上了,微积分运算,也许是Maple 最为拿手的计算了。
任何解析函数,Maple 都可以求出它的导数来;任何理论上可以计算的的积分,Maple 也都可以不费吹灰之力地将它计算出来。
有了Maple ,你完全可以把积分手册扔到一边去,因为你在也忍受不了它了。
不仅如此,Maple 从来不会抱怨表达式太繁,或者太长的。
可以毫不夸张地说,高等数学书上的任何一道计算题,都可以用Maple 解决。
不信?那好,就跟着我用Maple 重新温习一遍微积分吧,你一定会有新的发现的!2.1 极限和连续性2.1.1 函数或表达式的极限在Maple 中,我们可以利用函数limit 表示和计算函数和表达式的极限。
读者一定还记得,我们用一对单引号表示暂时不作计算的表达式;上面,我们就利用它在Maple 中写出了一个漂亮的极限式。
而后面再次引用它时,Maple 就进行计算,得到了我们所期望的结果。
实际上,对于这些常用的“漂亮”计算符号(又比如求导、积分等运算),Maple 中都有一套函数与其一一对应。
对应的规则是,把原有函数的首字母改成大写,于是就得到“形式函数”,得到的是一个形式上的表达式。
比如上面这个例子,我们就可以写成:顺理成章地,这个函数也可用来求自变量趋于无穷时的极限。
无穷,在Maple 中用infinity 表示。
我们来看下面这个经典的极限:为了使大多数计算能够进行下去,函数limit 假设表达式中所有未被赋值的参数都是非0实数。
比如在a 未被赋值时,a 2/x 在x 趋向于0时的极限将被认为是正无穷大。
函数的第二个参数表示欲求的极限所在的位置,它是一个等式,等式的左边是自变量,右边是极限点,极限点可以是任意的实数。
基于Maple 的强大符号运算功能,表达式中间完。
38.全可以包含未知参数,绝大多数理论上存在的极限都可以求出来。
该函数不仅可以用来求变量函数的极限,还可以用来求多重极限。
这时,函数的第二个参数是一个等式的集合(用一对大括弧“{}”括起来)。
例如:limit 函数的第三个参数是可选参数,利用它可以求单侧极限和复数域极限。
在默认情况下,函数求得的是实数域中的双侧极限(除了无穷大处的极限是单侧的外)。
如果指定第三个参数为complex ,则函数limit 在复数域中求极限。
在实数域中,我们可以指定left 或right ,以求得单侧极限。
例如:2.1.2 函数的连续性在Maple 中,你可以用库函数iscont( )来检验一个函数或者表达式的连续性。
由于它是库函数,使用前我们先要用命令readlib 调入。
请看下面的例子:其中第二个参数指定了有待检验的区间,它必须由两个实的常数(或无穷大)界定。
默认情况下它指的是一个开区间,在指定了第三个(可选)参数为'closed'后,它将检查该闭区间。
如果无法判断表达式在该区间上的连续性,函数将返回系统符号常量FAIL ,表示计算失败。
相应的,Maple 中还有另一个库函数discont( ),可以用来找出表达式或函数的间断点。
这个函数可以找出所有可能的实间断点,依据Maple 的算法,它找到的并不一定都是间断点,但一般情况下,也就是函数比较好的情况下,找到的都是真正的间断点。
我们会经常遇到间断点周期出现或成对出现的情况,这时,Maple 会利用一些辅助变量予以表达,比如_Zn~、。
39._NNn~、和_Bn~,其中n 是序号,_Zn~表示任意整数,_NNn~表示任意自然数,而_Bn~则表示一个二进制数(即可以取0或者1)。
利用函数fdiscont( ),我们可以求得数值上的间断点,和其他浮点运算一样,浮点精度由系统变量Digits 决定。
2.2 Maple 中的求导和微分运算2.2.1 符号表达式求导利用Maple中的求导函数diff( ),你可以计算一个表达式的导数或者偏导数;而利用形式求导函数Diff( ),你可以获得求导表达式。
利用符号$可以简单地表示多重导数,diff(expr, x$3)和diff(expr, x, x, x)是等价的,它们都表示expr对x 的3阶导数。
由于Maple是一个符号计算软件,而且在不加特别约束的情况下,带参数的导数实质上就是偏导数,所以用diff( )计算偏导数和计算单变量函数的导数在形式上没有任何不同:。
40.函数diff( )求得的结果总是一个表达式,如果你需要得到一个函数形式的结果,也就是要求导函数,你可以用D 运算符。
D 运算符作用于一个函数上,得到的结果也是一个函数。
我们在这里先用箭头运算符“->”定义一个简单的函数,箭头运算符的左边是函数的自变量,右边是函数表达式。
有关函数的定义和箭头运算符的详细情况,我们在后面相应章节会加以详细介绍。
D 运算符也可以被用作求多重导数,不过这里不是用“$”而是用两个连续的“@@”。
D 运算符并不局限于单变量函数,一个带指标的D 运算符D[i](f)可以用来求偏导函数。
D[i](f)表示函数f 对第i 个变量的导函数,而多重导数D[i, j](f)等价于D[i]( D[j](f) )。
由于diff 和D 这两种运算本质上是一样的,所不同的仅仅是表达形式而已,它们之间也可以用convert 相互转换。
41.2.2.2 隐函数的导数很多情况下,函数并不能写成显式的解析表达式,而只能通过自变量和函数的方程给出他们之间的关系;有时虽然可以写出显式表达式,但形式上要麻烦的多,所以在高等数学中,我们有直接对隐函数的求导方法。
在Maple 中也有这样的函数——implicitdiff( )。
第一个参数是蕴含着函数关系的方程,它也可以是一个方程组(用一对花括弧扩起来的等式的集合)。
第二个参数是函数(应变量),第三个参数是求导的变量,它们也都可以是变量的集合。
和diff 中一样,这个函数也可以用来求高阶导数,这时需要提供多个求导变量作为参数,形式和diff 中也一样。
有时隐函数表达式中含有一些字母表示的参数,它们并不是函数地自变量,为了将它们和自变量分开,我们可以人为地加入第二个参数——函数及其自变量的显式形式,比如y(x 1, ..., x n ),这样就确定了函数和它的自变量,而方程中其他未知变量就会被认为是常数了。
需要注意的是,如果给出函数,必须给出原方程组适定的函数,也就是说从原方程组中可以解出这些函数来。
比如下面的例2.1中,必须给出{z(x, y), psi(x, y), phi(x, y)},若只给出z(x, y)是不够的。
方程中的变量,除了自变量和函数,其他的都会被看成常数。
如果是对多变量函数求多个偏导数,结果将用偏微分形式给出。
我们可以给定最后一个可选参数,来确定结果的表达形式。
默认情况下,或者我们给定notation = D ,这时结果中的微分用D 运算符表示;否则,我们可以给定notation = Diff ,这样给出的结果中的微分运算符和使用Diff( )时的相同,也就是用“∂”来表示。
请看下面的例子:例2.1 设⎪⎩⎪⎨⎧===ϕψϕψϕsin sin cos cos cos z y x ,求22x z ∂∂。
例2.2 设函数u = u(x)由方程组0),,(,0),,(),,,(===z y x h z y x g z y x f u。
42.定义。
求dxdu2.3 积分运算2.3.1 不定积分Maple 具有众多的内建积分算法。
首先,和我们在大学数学课上学的一样,它会试着使用一些常用方法,比如查表、分部积分、变量代换等等;在这些方法统统失败之后,系统会尝试其他一些特殊方法,比如所谓的Risch 算法等。
让我们先来看一个用Maple 中的函数int()求不定积分的简单例子函数的第一个参数是被积表达式,第二个是积分变量:我们可以注意到,和我们在数学课上的要求不同,Maple 求出的不定积分没有积分常数。
这是有一定用处的,尤其当我们还有对结果作进一步处理时,由于Maple 的符号计算特性,引入积分常数相当于引入了一个变量,对于计算会带来不便。
但这毕竟和我们通常意义上的不定积分有着一定的距离,它把一族函数变成了一个函数,使用是需要引起注意。
好在一般情况下,这对于我们的要求没有多大的影响。
在上面的例子中,我们还用了和求导运算中一样的伎俩,用形式函数Int( )获得了一个漂亮的积分表达式。
在高等数学课上,我们学习过分式的积分方法,即把分式分解成最简真分式的和,再分别求积分。
但是这种方法在处理一部分有理函数的时候难免会出现危机,比如在分母不能简单的进行因式分解的时候。
下面,我们简单描述一下Maple 中不定积分的计算过程:。
43.✧ 在第一阶段中,Maple 用传统方法处理一些特殊的形式,有如多项式、有理式、形如()n cx bx a 2++和()ncx bx a x Q 2)(++的根式,以及形如 (x 的多项式) ⨯ ln x 或 (x 的有理式) ⨯ ln(x 的有理式) 的表达式。
✧ 如果传统方法难以奏效,Maple 将应用Risch-Norman 算法,以避免在包含三角函数和双曲函数的积分中引入复指数和对数。
✧ 如果仍然无法得到答案,Maple 将采用Risch 算法。
这将无法避免地在结果表达式中引入有关积分变量的RootOf 的表达式。
✧ 如果最终还是没有找到解析表达式,Maple 会把积分式作为结果返回。
由于本书的目的在于介绍Maple 软件的使用,对于算法将不予详细描述。
如果读者对于上面提到的两种算法感兴趣,可以参考下列相关文献:K.O. Geddes and L.Y. Stefanus, On the Risch-Norman integration method and itsimplementation in Maple, In: G.H. Gonnet (ed.), Proceedings of ISSAC ’89, ACM Press, New York, 1989, pp. 212-217.R.H. Risch, The problem of integration in finite terms, Trans. AMS 139 (1969),167-189.M. Bronstein, Integration of Elementary Functions, J. Symbolic Computation 9 (1990), 117-174. 2.3.2 定积分在Maple 中,计算定积分也一样是用函数int ,或者它的别称integrate ;同样,它的形式函数Int 也可以用来表示定积分。