对数求导法的基本思路很自然:遇到多个因子的乘积、商或幂,先取对数,把乘除化成加减,再求导。
但实际使用时,常常会遇到一个麻烦:实数范围内,对数的真数必须为正。原函数可能取负值;即使原函数为正,组成它的某些因子也可能为负。如果每次都按各个因子的正负划分区间,再逐段改写,计算就会变得繁琐。
一个很有用的技巧是:在适当的位置加上绝对值,使用 \ln|y| 和 \ln|u(x)|。
这个技巧背后的核心公式是
只要 u 在所考察的点可导且不为零,这个公式就成立。它不要求 u 为正。
为什么加了绝对值,求导结果却没有多出一个符号?我们可以把分类讨论集中做一次。
当 u(x)>0 时,\ln|u(x)|=\ln u(x),于是
当 u(x)<0 时,\ln|u(x)|=\ln(-u(x)),于是
这里的分子、分母各产生一个负号,恰好抵消。严格地说,若 u(x_0)\ne0,由于可导蕴含连续,u 在 x_0 的某个邻域内保持与 u(x_0) 相同的符号,所以上面的求导是有依据的。
因此,我们只需在证明公式时讨论一次正负,之后便可以统一使用它。特别地,
注意,右边是 1/(x-a),不是 1/|x-a|。绝对值消除了取对数的障碍,却没有把导数的符号抹去。
取绝对值后,对数的运算法则也能统一处理非零实数因子。对于 a,b\ne0,有
原因很简单:|ab|=|a||b|,而 |a|,|b| 都为正。我们实际使用的仍然是正数的对数法则。
来看一道具体的题:求
的导数。
首先确定原函数的定义域。被开方数必须非负,分母不能为零,因此
在这些区间的内部,即
被开方数严格为正,y>0,可以取对数。
如果直接写成
这个等式只在 x>4 时才有意义。例如,x<1 时,原函数完全有定义,但右边四个对数的真数全是负数。
问题出在:整体为正,不代表每个因子都为正。
在 I 上,原来的分式为正,所以可以写成
于是统一得到
两边求导:
因此,在 I 上,
三个区间使用同一套计算,不必分别把负因子改写为 1-x、2-x 等形式。
这里仍有两个点需要说明:x=1 和 x=2 属于原函数的定义域,但此时 y=0,不能取对数。它们也是定义域的端点;即使考察沿定义域的单侧差商,也没有有限极限。事实上,
所以相应的单侧差商分别趋于 -\infty 和 +\infty。上面的导数公式已经覆盖了这道题中所有通常意义下可导的点。
再看一个函数本身也可能为负的例子:
原函数在 x\ne3 时有定义,在 x=1,2 时取零值。按照题目要求,我们先求 y\ne0 时的导数,即考虑 x\ne1,2,3。
这次不能直接写 \ln y,因为 y 可能为负。不过,|y| 一定为正。利用实数立方根的性质,
因此
两边求导,得到
所以
这一过程中不需要先判断 y 在每个区间内的正负。最后乘回去的仍是原函数 y,不是 |y|,因为 \ln|y| 的导数是 y'/y。
不过,不能取对数,不等于原函数不可导。 如果进一步要求所有可导点处的导数,就需要回到原函数检查被取对数这一步排除的零点。
例如在 x=1 处,令
则 y=(x-1)g(x),且 g 在 1 处连续。由导数定义,
可见,y(1)=0 虽然使对数求导法无法直接使用,却没有妨碍导数存在。
而在 x=2 附近,令 x=2+h,则
当 h\to0^- 时,差商趋于 +\infty;当 h\to0^+ 时,差商趋于 -\infty。因此 x=2 处不可导。两个零点的情况不同,必须依据原函数判断。
这个技巧还可以概括为一个乘积公式。若 u_1,\ldots,u_n 都在所考察的点可导且不为零,令
那么
从而
对于商,分母对应的项取负号;对于非零的整数次幂,指数作为系数提出。含根式时,则先依据原有定义域和根式性质正确改写,再使用对数法则。
还要避免一个容易发生的误用:绝对值不能替原函数扩大定义域。例如,在上面的平方根例题中,把被开方数改成它的绝对值,确实会让更多的 x 可以代入,但在原定义域之外,得到的已经是另一个函数。我们的等式始终是在原函数有定义的范围内使用的。
同样,对于 y=x^x,按通常的实变量幂函数定义在 x>0 上求导,有
不能仅仅把 \ln x 换成 \ln|x|,就声称同一推导适用于所有 x<0。这会牵涉原来的 x^x 在负数上的实数定义问题;若改用 |x|^x,研究对象就改变了。
使用这个技巧时,可以记住三个动作:先确定原函数的定义域;在函数及相关因子非零的地方取绝对值、取对数;最后检查取对数时排除的零点。绝对值主要省去的是符号的分类讨论,定义域和零点的判断仍然保留。
一对绝对值之所以能让计算变得简洁,是因为正值与负值两种情况在求导之后恰好归结为同一个表达式 u'/u。把这一点证明清楚,许多原本需要逐段书写的计算,就可以一次完成。