普林斯顿微积分学习:第6章 如何求解微分(求导)问题

写在前面

这一章是上一章理论的"实战篇"。上一章我们学习了导数的定义,这一章我们要实际动手,用这个定义去求出几个具体函数的导数,并且从中总结出一套"幂函数求导公式",以后遇到 xnx^nxn 这种形式就可以直接套公式,不用每次都从定义算起。
本章要解决的核心问题是:

  • 怎样用导数的定义(差商取极限)去求导数;
  • 遇到"分式相减"或"根式相减"时如何化简,避开 00\dfrac{0}{0}00 这个陷阱;
  • 怎样推导出万能公式 ddx(xn)=nxn−1\dfrac{d}{dx}(x^n) = n x^{n-1}dxd(xn)=nxn1;
  • 这个公式在 nnn 取不同特殊值(比如 000111222−1-1112\frac122113\frac1331)时分别意味着什么。

6.1 导数定义回顾

上一章已经学过,函数 f(x)f(x)f(x) 在某一点的导数定义是:
f′(x)=lim⁡h→0f(x+h)−f(x)h f'(x) = \lim_{h \to 0} \frac{f(x+h) - f(x)}{h} f(x)=h0limhf(x+h)f(x)
这个式子的意思是:取曲线上很靠近的两个点,算出连接这两点的直线(割线)的斜率,然后让这两个点无限靠近,看这个斜率最终稳定在哪个数值上。那个最终稳定下来的数值,就是导数,也就是切线的斜率。
下面这张图直观地展示了这个过程——灰色虚线是"割线",随着 hhh 越变小,割线越贴近红色的"切线":
在这里插入图片描述

在这里插入图片描述

(上图第一张:灰色虚线代表两点间的割线,h越小割线越接近红色的切线,这正是导数定义里取极限的几何意义。第二张图展示的是 y=x2y=x^2y=x2 在不同点处切线斜率不同,且这个斜率正好等于 2x2x2x。)
如果你直接把 h=0h=0h=0 代入差商公式,几乎总会得到 00\dfrac{0}{0}00 这种没有意义的形式(因为分子 f(x+h)−f(x)f(x+h)-f(x)f(x+h)f(x)h=0h=0h=0 时是 f(x)−f(x)=0f(x)-f(x)=0f(x)f(x)=0,分母 hhhh=0h=0h=0 时也是 000)。所以核心技巧就是:先想办法把分子和分母里"共同的、让两者都变成0的因子" hhh 给约掉,这样剩下的式子在 h=0h=0h=0 处才有意义,这时候才能安心地代入 h=0h=0h=0
下面这张流程图总结了整体的解题思路:

会出现0/0

不会出现0/0

两个分式相减

两个根式相减

多项式展开式

要求 f(x) 在某点的导数

写出导数定义式
f'(x) = lim 当 h 趋于0 of [f(x+h)-f(x)] / h

直接代入 h=0
会不会出现 0/0 ?

需要先做代数变形
设法消去这个0/0障碍

可以直接代入 h=0 求值

分子是什么类型的式子?

取公分母合并
例如 1/x 的情形

分子有理化
乘以共轭式
例如 根号x 的情形

二项展开分析
例如 x 的 n 次方的情形

化简后约去公因子 h

让 h 趋于 0, 求出最终极限值

得到导数公式


6.2 用定义法求 f(x)=1xf(x) = \dfrac{1}{x}f(x)=x1 的导数

第一步:写出定义式。
f′(x)=lim⁡h→01x+h−1xh f'(x) = \lim_{h \to 0} \frac{\dfrac{1}{x+h} - \dfrac{1}{x}}{h} f(x)=h0limhx+h1x1
如果直接令 h=0h=0h=0,分子是 1x−1x=0\dfrac{1}{x}-\dfrac{1}{x}=0x1x1=0,分母也是 000,确实是 00\dfrac{0}{0}00 的形式,不能直接代入。
第二步:化简分子。 分子是两个分式相减,标准做法是取公分母合并:
1x+h−1x=x−(x+h)x(x+h)=−hx(x+h) \frac{1}{x+h} - \frac{1}{x} = \frac{x - (x+h)}{x(x+h)} = \frac{-h}{x(x+h)} x+h1x1=x(x+h)x(x+h)=x(x+h)h
第三步:把化简后的分子代回差商,再除以 hhh 注意"除以 hhh"相当于"乘以 1h\dfrac1hh1",所以:
f′(x)=lim⁡h→0−hx(x+h)⋅1h=lim⁡h→0−hh x(x+h) f'(x) = \lim_{h \to 0} \frac{-h}{x(x+h)} \cdot \frac{1}{h} = \lim_{h \to 0} \frac{-h}{h \, x(x+h)} f(x)=h0limx(x+h)hh1=h0limhx(x+h)h
第四步:约去公因子 hhh 分子分母都有一个 hhh,可以直接约掉(这一步正是绕开 00\frac0000 的关键):
f′(x)=lim⁡h→0−1x(x+h) f'(x) = \lim_{h \to 0} \frac{-1}{x(x+h)} f(x)=h0limx(x+h)1
第五步:现在式子里已经没有"除以 hhh"了,可以放心地令 h=0h=0h=0:
f′(x)=−1x⋅x=−1x2 f'(x) = \frac{-1}{x \cdot x} = -\frac{1}{x^2} f(x)=xx1=x21
结论:
ddx(1x)=−1x2 \frac{d}{dx}\left(\frac{1}{x}\right) = -\frac{1}{x^2} dxd(x1)=x21

6.3 用定义法求 f(x)=xf(x) = \sqrt{x}f(x)=x 的导数

这次分子不再是分式相减,而是根式相减:
f′(x)=lim⁡h→0x+h−xh f'(x) = \lim_{h \to 0} \frac{\sqrt{x+h} - \sqrt{x}}{h} f(x)=h0limhx+hx
直接代入 h=0h=0h=0 同样会得到 00\dfrac{0}{0}00。但这次"取公分母"这一招不管用了,因为分子里没有分式,而是两个根号相减。
遇到根式相减时的标准技巧是"分子有理化":同时乘上分子的共轭式(即把中间的减号换成加号得到的式子),利用平方差公式 ( a−b )( a+b )=a2−b2(\,a-b\,)(\,a+b\,)=a^2-b^2(ab)(a+b)=a2b2 把根号消掉。
f′(x)=lim⁡h→0x+h−xh⋅x+h+xx+h+x f'(x) = \lim_{h \to 0} \frac{\sqrt{x+h} - \sqrt{x}}{h} \cdot \frac{\sqrt{x+h} + \sqrt{x}}{\sqrt{x+h} + \sqrt{x}} f(x)=h0limhx+hxx+h+xx+h+x
分子部分,(x+h−x)(x+h+x)(\sqrt{x+h}-\sqrt{x})(\sqrt{x+h}+\sqrt{x})(x+hx)(x+h+x) 正好套用平方差公式,变成 (x+h)−x=h(x+h) - x = h(x+h)x=h:
f′(x)=lim⁡h→0(x+h)−xh(x+h+x)=lim⁡h→0hh(x+h+x) f'(x) = \lim_{h \to 0} \frac{(x+h) - x}{h\left(\sqrt{x+h} + \sqrt{x}\right)} = \lim_{h \to 0} \frac{h}{h\left(\sqrt{x+h} + \sqrt{x}\right)} f(x)=h0limh(x+h+x)(x+h)x=h0limh(x+h+x)h
分子分母再次同时出现 hhh,约掉:
f′(x)=lim⁡h→01x+h+x f'(x) = \lim_{h \to 0} \frac{1}{\sqrt{x+h} + \sqrt{x}} f(x)=h0limx+h+x1
现在分母不再依赖于"除以 hhh"了,可以放心代入 h=0h=0h=0:
f′(x)=1x+x=12x f'(x) = \frac{1}{\sqrt{x} + \sqrt{x}} = \frac{1}{2\sqrt{x}} f(x)=x+x1=2x1
结论:
ddx(x)=12x \frac{d}{dx}\left(\sqrt{x}\right) = \frac{1}{2\sqrt{x}} dxd(x)=2x1

直观感受一下"h趋于0"到底在发生什么

下面这个 ASCII 图,用具体数字展示了当 hhh 越变小时,差商是怎样一步步逼近理论导数值 16\dfrac{1}{6}61(这是在 x=9x=9x=9 处算的,因为 9=3\sqrt{9}=39=3,f′(9)=129=16f'(9)=\dfrac{1}{2\sqrt9}=\dfrac16f(9)=291=61)的:

+--------------------------------------+
|  导数定义中 h 趋于 0 是什么意思?     |
|                                      |
|  h = 0.1     时, 差商 = 0.1662...    |
|  h = 0.01    时, 差商 = 0.1666...    |
|  h = 0.001   时, 差商 = 0.16666...   |
|  h = 0.0001  时, 差商 = 0.166666...  |
|                                      |
|  h 越小, 差商越逼近一个固定值 1/6    |
|  这个固定值就是导数 f'(x)            |
+--------------------------------------+

可以看到,hhh 每缩小10倍,差商和理论值之间的差距大约也缩小10倍——这就是"取极限"在数值上的真实样子:不是真的把 hhh 变成 000,而是看这一串数字稳定地逼近哪个固定值。

6.4 组合函数的求导:f(x)=x+x2f(x) = \sqrt{x} + x^2f(x)=x+x2

这个例子的意义在于:当被求导的函数是几个部分相加时,可以把极限拆开,分别处理每一部分
f′(x)=lim⁡h→0[x+h+(x+h)2]−[x+x2]h f'(x) = \lim_{h \to 0} \frac{\left[\sqrt{x+h} + (x+h)^2\right] - \left[\sqrt{x} + x^2\right]}{h} f(x)=h0limh[x+h+(x+h)2][x+x2]
把根号部分和平方部分分别归类:
f′(x)=lim⁡h→0x+h−xh+lim⁡h→0(x+h)2−x2h f'(x) = \lim_{h \to 0} \frac{\sqrt{x+h} - \sqrt{x}}{h} + \lim_{h \to 0} \frac{(x+h)^2 - x^2}{h} f(x)=h0limhx+hx+h0limh(x+h)2x2
这两个极限我们都已经算过了(第一个是上一节刚求出的 12x\dfrac{1}{2\sqrt{x}}2x1;第二个是上一章已经求过的 2x2x2x),所以直接得到:
f′(x)=12x+2x f'(x) = \frac{1}{2\sqrt{x}} + 2x f(x)=2x1+2x
结论:
ddx(x+x2)=12x+2x \frac{d}{dx}\left(\sqrt{x} + x^2\right) = \frac{1}{2\sqrt{x}} + 2x dxd(x+x2)=2x1+2x
这个例子提前预告了后面要学的"和的导数等于导数的和"这条法则,但这里我们是完全从定义出发,踏踏实实地验证了它在这个具体例子上是成立的。

6.5 幂函数求导公式的推导:ddx(xn)=nxn−1\dfrac{d}{dx}(x^n) = n x^{n-1}dxd(xn)=nxn1

现在来推导一个"万能公式",这样以后遇到 xnx^nxn 形式的函数就不用每次都从定义算了。设 f(x)=xnf(x) = x^nf(x)=xn,其中 nnn 是正整数。
f′(x)=lim⁡h→0(x+h)n−xnh f'(x) = \lim_{h \to 0} \frac{(x+h)^n - x^n}{h} f(x)=h0limh(x+h)nxn
难点在于展开 (x+h)n(x+h)^n(x+h)n 我们把它写成 nnn 个括号相乘:
(x+h)n=(x+h)(x+h)⋯(x+h)⏟n 个括号 (x+h)^n = \underbrace{(x+h)(x+h)\cdots(x+h)}_{n\ \text{个括号}} (x+h)n=n 个括号(x+h)(x+h)(x+h)
不需要把它完全展开,只需要分析"展开后会出现哪几类项"。下面这个 ASCII 图详细拆解了这个分析过程:

+---------------------------------------------------+
|  (x+h)^n = (x+h)(x+h)...(x+h)   共 n 个括号相乘   |
|                                                   |
|  第1种取法: 每个括号都取 x                        |
|      ----> 贡献一项: x^n                          |
|                                                   |
|  第2种取法: 恰好有1个括号取 h, 其余 (n-1) 个取 x  |
|      ----> 这样的取法一共有 n 种                  |
|      ----> 每种取法贡献: h * x^(n-1)              |
|      ----> 合计贡献: n * h * x^(n-1)              |
|                                                   |
|  第3种及以后: 至少有2个括号取 h                   |
|      ----> 这些项都含有 h^2 这个因子              |
|      ----> 当 h 趋于0时, 这些项整体趋于0          |
|      ----> 我们把它们统一记作: h^2 * (junk)       |
+---------------------------------------------------+

把这三类项的贡献加起来,我们得到一个关键的展开式:
(x+h)n=xn+nhxn−1+h2×(junk) (x+h)^n = x^n + n h x^{n-1} + h^2 \times (\text{junk}) (x+h)n=xn+nhxn1+h2×(junk)
这里的 “junk”(杂项)就是指所有那些"至少含有两个 hhh"的项打包在一起、再除掉公共的 h2h^2h2 之后剩下的、关于 xxxhhh 的某个多项式——我们不关心它具体长什么样,只关心它在 h→0h\to0h0 时不会"爆炸"(不会变成无穷大),这一点是成立的,因为它本身只是一个普通的多项式。
把这个展开式代入导数定义:
f′(x)=lim⁡h→0xn+nhxn−1+h2×(junk)−xnh f'(x) = \lim_{h \to 0} \frac{x^n + n h x^{n-1} + h^2 \times (\text{junk}) - x^n}{h} f(x)=h0limhxn+nhxn1+h2×(junk)xn
xnx^nxn 这一项和减去的 xnx^nxn 正好抵消:
f′(x)=lim⁡h→0nhxn−1+h2×(junk)h f'(x) = \lim_{h \to 0} \frac{n h x^{n-1} + h^2 \times (\text{junk})}{h} f(x)=h0limhnhxn1+h2×(junk)
分子的每一项都含有至少一个 hhh,可以把 hhh 从分子中提出来,和分母的 hhh 约掉:
f′(x)=lim⁡h→0[nxn−1+h×(junk)] f'(x) = \lim_{h \to 0} \left[ n x^{n-1} + h \times (\text{junk}) \right] f(x)=h0lim[nxn1+h×(junk)]
现在已经不存在"除以 hhh"了,可以放心令 h→0h \to 0h0。这时候第二项 h×(junk)h \times (\text{junk})h×(junk) 因为前面乘了一个趋于 000hhh,而 junk 又不会爆炸,所以整体趋于 000;第一项 nxn−1n x^{n-1}nxn1 不依赖 hhh,原样保留:
f′(x)=nxn−1 f'(x) = n x^{n-1} f(x)=nxn1
结论(当 nnn 是正整数时已经严格证明,当 aaa 是任意实数时这个公式依然成立,证明会在第9章给出):
ddx(xa)=a xa−1 \frac{d}{dx}\left(x^{a}\right) = a\, x^{a-1} dxd(xa)=axa1
用一句话记住这个公式:把指数拿下来放在前面当系数,然后把指数本身减1。

6.6 公式的特殊情形检验

下面用刚推导出的公式 ddx(xa)=axa−1\dfrac{d}{dx}(x^a) = a x^{a-1}dxd(xa)=axa1 代入几个特殊的 aaa,看看是否和我们已知的结果吻合:

aaa 的取值对应的函数 f(x)f(x)f(x)套用公式得到的导数是否与已知结果一致
a=0a=0a=0f(x)=x0=1f(x)=x^0=1f(x)=x0=1(常数)0⋅x−1=00 \cdot x^{-1} = 00x1=0一致,常数的导数恒为0
a=1a=1a=1f(x)=xf(x)=xf(x)=x1⋅x0=11 \cdot x^{0} = 11x0=1一致
a=2a=2a=2f(x)=x2f(x)=x^2f(x)=x22⋅x1=2x2 \cdot x^{1} = 2x2x1=2x一致
a=−1a=-1a=1f(x)=x−1=1xf(x)=x^{-1}=\dfrac1xf(x)=x1=x1−1⋅x−2=−1x2-1 \cdot x^{-2} = -\dfrac{1}{x^2}1x2=x21一致,和6.2节算出的结果完全相同
a=12a=\dfrac12a=21f(x)=x1/2=xf(x)=x^{1/2}=\sqrt xf(x)=x1/2=x12x−1/2=12x\dfrac12 x^{-1/2} = \dfrac{1}{2\sqrt x}21x1/2=2x1一致,和6.3节算出的结果完全相同
a=13a=\dfrac13a=31f(x)=x1/3=x3f(x)=x^{1/3}=\sqrt[3]{x}f(x)=x1/3=3x13x−2/3=13x23\dfrac13 x^{-2/3} = \dfrac{1}{3\sqrt[3]{x^2}}31x2/3=33x21一致,是公式更生僻的应用

这张表说明了一件很重要的事:幂函数求导公式不只是对正整数次幂成立,对 000、负数、分数次幂都成立——这也是为什么这一条公式如此好用,以后只要看到 xxx 的任意次幂,直接套用就行,不需要再回到定义重新推导。
下面这张图把这几种特殊情形画成了一棵树,方便记忆:

幂函数求导公式
d/dx 的 x 的 a 次方 等于 a 乘 x 的 (a-1) 次方

a = 0
常数函数
导数为 0

a = 1
f(x) = x
导数为 1

a = 2
f(x) = x 的平方
导数为 2x

a = -1
f(x) = 1/x
导数为 -1 除以 x的平方

a = 1/2
f(x) = 根号x
导数为 1 除以 2根号x

a = 1/3
f(x) = 三次根号x
导数为 1 除以 3再乘三次根号(x平方)


6.7 用代码验证以上所有结论

光靠手算容易出现符号错误或者粗心的代数失误,下面用 C++ 写一段"数值验证"程序:利用差商在 hhh 很小(比如 10−610^{-6}106)时去逼近真正的导数,然后和我们手算出来的解析公式做对比,如果两者几乎完全一致,就说明手算的公式大概率是正确的。

// verify_derivatives.cpp
// 目的:用"数值差商"去逼近导数定义里的极限,
//      从而检验我们手算出来的导数公式对不对。
//
// 思路非常直接:导数定义是
//     f'(x) = lim_{h->0} [f(x+h) - f(x)] / h
// 我们没办法真的让 h 变成 0(那样会除以0),
// 但可以让 h 变得非常小(比如 1e-6),
// 这样算出来的差商就会非常接近真正的导数值。
// 如果"数值差商"和"我们手算的解析公式"算出来的数几乎一样,
// 就说明手算的公式大概率是对的。
#include <iostream>   // 用于输入输出 std::cout
#include <cmath>      // 用于 sqrt 等数学函数
#include <iomanip>    // 用于设置输出的小数位数
// 用"中心差商"来逼近导数,比单纯的向前差商更精确。
// 中心差商公式: f'(x) ≈ [f(x+h) - f(x-h)] / (2h)
// 这是数值分析里常用的小技巧,误差比普通差商小一个量级。
double numericalDerivative(double (*f)(double), double x, double h = 1e-6) {
    return (f(x + h) - f(x - h)) / (2.0 * h);
}
// ---------- 下面定义我们要研究的三个函数 ----------
// 第一个函数: f(x) = 1/x
double f1(double x) {
    return 1.0 / x;
}
// 它的解析导数(我们手算得到的): f'(x) = -1/x^2
double f1_derivative_exact(double x) {
    return -1.0 / (x * x);
}
// 第二个函数: f(x) = sqrt(x)
double f2(double x) {
    return std::sqrt(x);
}
// 它的解析导数: f'(x) = 1 / (2*sqrt(x))
double f2_derivative_exact(double x) {
    return 1.0 / (2.0 * std::sqrt(x));
}
// 第三个函数: f(x) = sqrt(x) + x^2
double f3(double x) {
    return std::sqrt(x) + x * x;
}
// 它的解析导数: f'(x) = 1/(2*sqrt(x)) + 2x
double f3_derivative_exact(double x) {
    return 1.0 / (2.0 * std::sqrt(x)) + 2.0 * x;
}
int main() {
    // 设置输出格式:保留8位小数,方便对比数值差商和解析解
    std::cout << std::fixed << std::setprecision(8);
    double x = 4.0; // 在 x = 4 这一点做检验(选4是因为sqrt(4)=2,方便手算核对)
    std::cout << "===== 在 x = " << x << " 处验证三个函数的导数 =====\n\n";
    // ---- 验证 f(x) = 1/x ----
    std::cout << "函数 f(x) = 1/x\n";
    std::cout << "  数值差商算出的导数 ≈ " << numericalDerivative(f1, x) << "\n";
    std::cout << "  手算解析公式 -1/x^2 = " << f1_derivative_exact(x) << "\n\n";
    // ---- 验证 f(x) = sqrt(x) ----
    std::cout << "函数 f(x) = sqrt(x)\n";
    std::cout << "  数值差商算出的导数 ≈ " << numericalDerivative(f2, x) << "\n";
    std::cout << "  手算解析公式 1/(2*sqrt(x)) = " << f2_derivative_exact(x) << "\n\n";
    // ---- 验证 f(x) = sqrt(x) + x^2 ----
    std::cout << "函数 f(x) = sqrt(x) + x^2\n";
    std::cout << "  数值差商算出的导数 ≈ " << numericalDerivative(f3, x) << "\n";
    std::cout << "  手算解析公式 1/(2*sqrt(x)) + 2x = " << f3_derivative_exact(x) << "\n\n";
    // ---- 再验证幂函数公式 d/dx(x^n) = n*x^(n-1) 对若干个 n 都成立 ----
    std::cout << "===== 验证幂函数公式 d/dx(x^n) = n * x^(n-1) =====\n";
    std::cout << "(在 x = 2.0 这一点,对 n = 1, 2, 3, 4, 5 分别验证)\n\n";
    double x2 = 2.0;
    for (int n = 1; n <= 5; ++n) {
        // 用数值差商直接计算 x^n 在 x2 处的导数近似值
        double numeric = 0.0;
        {
            double h = 1e-6;
            double fxp = std::pow(x2 + h, n);
            double fxm = std::pow(x2 - h, n);
            numeric = (fxp - fxm) / (2.0 * h);
        }
        double exact = n * std::pow(x2, n - 1);
        std::cout << "  n = " << n
                  << " | 数值差商 ≈ " << numeric
                  << " | 解析公式 n*x^(n-1) = " << exact << "\n";
    }
    return 0;
}

实际编译运行后的输出结果:

===== 在 x = 4.00000000 处验证三个函数的导数 =====
函数 f(x) = 1/x
  数值差商算出的导数 ≈ -0.06250000
  手算解析公式 -1/x^2 = -0.06250000
函数 f(x) = sqrt(x)
  数值差商算出的导数 ≈ 0.25000000
  手算解析公式 1/(2*sqrt(x)) = 0.25000000
函数 f(x) = sqrt(x) + x^2
  数值差商算出的导数 ≈ 8.25000000
  手算解析公式 1/(2*sqrt(x)) + 2x = 8.25000000
===== 验证幂函数公式 d/dx(x^n) = n * x^(n-1) =====
(在 x = 2.0 这一点,对 n = 1, 2, 3, 4, 5 分别验证)
  n = 1 | 数值差商 ≈ 1.00000000 | 解析公式 n*x^(n-1) = 1.00000000
  n = 2 | 数值差商 ≈ 4.00000000 | 解析公式 n*x^(n-1) = 4.00000000
  n = 3 | 数值差商 ≈ 12.00000000 | 解析公式 n*x^(n-1) = 12.00000000
  n = 4 | 数值差商 ≈ 32.00000000 | 解析公式 n*x^(n-1) = 32.00000000
  n = 5 | 数值差商 ≈ 80.00000000 | 解析公式 n*x^(n-1) = 80.00000000

可以看到,数值差商和解析公式算出来的结果完全一致(精确到小数点后8位),这就用计算的方式确认了我们手算推导的每一个结论都是正确的。

6.8 本章小结

  • 用导数定义求导的核心套路是:先想办法消掉差商里的 00\dfrac0000 障碍,再代入 h=0h=0h=0。常见的消障碍手法有:
    • 分式相减 → 取公分母合并;
    • 根式相减 → 乘以共轭式做分子有理化;
    • 多项式展开式(如 (x+h)n(x+h)^n(x+h)n)→ 分析展开后各项关于 hhh 的次数,把"至少含 h2h^2h2"的项归为一类。
  • 通过这套方法,我们严格推导出了万能的幂函数求导公式:
    ddx(xa)=a xa−1(a 为任意实数) \frac{d}{dx}\left(x^{a}\right) = a\, x^{a-1} \qquad (a\ \text{为任意实数}) dxd(xa)=axa1(a 为任意实数)
  • 这个公式涵盖了常数函数(a=0a=0a=0)、一次函数(a=1a=1a=1)、二次函数(a=2a=2a=2)、倒数函数(a=−1a=-1a=1)、平方根函数(a=12a=\frac12a=21)等等大量常见情形,以后看到 xxx 的任意次幂,直接套用即可,不需要每次都回到定义重新推导一遍。
  • 对于"几部分相加"的函数(比如 x+x2\sqrt{x}+x^2x+x2),可以把求导的极限拆开,分别对每一部分求导后再相加——这预告了后面将正式学习的"加法求导法则"。

6.2 求导数的简便方法

写在前面

上一节我们老老实实地用定义(差商取极限)求了几个导数,但你应该已经感觉到了:这样算下去太累了。如果以后每遇到一个函数都要从极限算起,那光是算下面这个函数的导数就要花上半天:
f(x)=3x7+x42x5+15x4/3−23x+96x2−4 f(x) = \frac{3x^7 + x^4\sqrt{2x^5+15x^{4/3}-23x+9}}{6x^2-4} f(x)=6x243x7+x42x5+15x4/323x+9
好消息是:我们不需要这么做。这一节要学的是一套"组装"思路——任何复杂的函数,都是由一些简单的"零件"通过加、减、乘、除、复合这几种基本操作拼装起来的。只要我们搞清楚"每种拼装方式分别怎样影响求导",就可以把复杂函数拆开,对每个零件单独求导,再按规则组装回去,根本不需要回到最原始的定义。
本节要学习的五条法则是:

  • 常数倍法则;
  • 和差法则;
  • 乘积法则;
  • 商法则;
  • 链式法则(处理函数的复合)。

6.2.1 常数的倍数

这是最简单的一条规则:一个函数乘上一个常数,它的导数就是先对函数求导,再乘上那个常数
比如我们已经知道 ddx(x2)=2x\dfrac{d}{dx}(x^2)=2xdxd(x2)=2x,那么:
ddx(7x2)=7×2x=14x \frac{d}{dx}(7x^2) = 7 \times 2x = 14x dxd(7x2)=7×2x=14x
如果前面是负号,可以把负号看成"乘以 −1-11",所以:
ddx(−x2)=−2x \frac{d}{dx}(-x^2) = -2x dxd(x2)=2x
更直接的做法:遇到 cxacx^acxa 这种形式(其中 ccc 是常数),直接把指数 aaa "拿下来"乘到系数 ccc 上,得到新的系数,然后把指数减1。比如求 7x27x^27x2 的导数:把指数 222 拿下来乘以 777,得到新系数 141414,再把指数减1变成 111,所以答案是 14x1=14x14x^1=14x14x1=14x。再比如求 13x413x^413x4 的导数:把指数 444 拿下来乘以 131313,得到 525252,指数减1变成 333,答案是 52x352x^352x3

6.2.2 函数的和与差

这条规则更简单:几个部分相加或相减组成的函数,直接对每一部分分别求导,再按原来的加减关系组合起来
比如求 3x5−2x2+7x+23x^5 - 2x^2 + \dfrac{7}{\sqrt{x}} + 23x52x2+x7+2 关于 xxx 的导数。第一步是把 1x\dfrac{1}{\sqrt x}x1 改写成 x−1/2x^{-1/2}x1/2,这样整个函数就变成了:
3x5−2x2+7x−1/2+2 3x^5 - 2x^2 + 7x^{-1/2} + 2 3x52x2+7x1/2+2
现在对每一部分单独用上一节的幂函数公式:

  • 3x53x^53x5 的导数是 15x415x^415x4;
  • −2x2-2x^22x2 的导数是 −4x-4x4x;
  • 7x−1/27x^{-1/2}7x1/2 的导数是 7×(−12)x−3/2=−72x−3/27 \times \left(-\dfrac12\right) x^{-3/2} = -\dfrac72 x^{-3/2}7×(21)x3/2=27x3/2;
  • 常数 222 的导数是 000(常数求导永远是0,这一项对结果毫无影响)。
    把它们加起来:
    ddx(3x5−2x2+7x+2)=15x4−4x−72x−3/2 \frac{d}{dx}\left(3x^5-2x^2+\frac{7}{\sqrt x}+2\right) = 15x^4 - 4x - \frac{7}{2}x^{-3/2} dxd(3x52x2+x7+2)=15x44x27x3/2
    小技巧:x−3/2x^{-3/2}x3/2 也可以写成 1xx\dfrac{1}{x\sqrt x}xx1,所以上面的答案也可以写成:
    15x4−4x−72⋅1xx 15x^4 - 4x - \frac{7}{2}\cdot\frac{1}{x\sqrt x} 15x44x27xx1
    类似地,x5/2x^{5/2}x5/2 就是 x2xx^2\sqrt xx2x,x7/2x^{7/2}x7/2 就是 x3xx^3\sqrt xx3x,这种"整数次幂乘根号"的写法在化简最终答案时经常很有用。

6.2.3 乘积法则

加减法可以"逐项处理",但乘法不能简单地把两个导数相乘。这是初学者最容易犯的错误,一定要特别小心。
比如要求
h(x)=(x5+2x−1)(3x8−2x7−x4−3x) h(x) = (x^5+2x-1)(3x^8-2x^7-x^4-3x) h(x)=(x5+2x1)(3x82x7x43x)
的导数,如果直接把两个因子分别求导再相乘,得到的不是正确答案。正确的做法是用乘积法则:

乘积法则(版本1):如果 h(x)=f(x)g(x)h(x)=f(x)g(x)h(x)=f(x)g(x),那么
h′(x)=f′(x)g(x)+f(x)g′(x)h'(x) = f'(x)g(x) + f(x)g'(x)h(x)=f(x)g(x)+f(x)g(x)
记忆这个公式有一个很直观的办法——交叉相乘再相加,就像下面这样:

+---------------------------------------------+
|  乘积法则记忆口诀: 交叉相乘再相加           |
|                                             |
|  f(x)        g(x)                           |
|  f'(x)       g'(x)                          |
|                                             |
|  从左下角 f'(x) 出发, 斜着乘到右上角 g(x):  |
|      ----> 得到 f'(x) * g(x)                |
|  从左上角 f(x) 出发, 斜着乘到右下角 g'(x):  |
|      ----> 得到 f(x) * g'(x)                |
|                                             |
|  把这两条斜线的结果加起来, 就是 h'(x):      |
|      h'(x) = f'(x)g(x) + f(x)g'(x)          |
+---------------------------------------------+

回到刚才的例子,设 f(x)=x5+2x−1f(x)=x^5+2x-1f(x)=x5+2x1,g(x)=3x8−2x7−x4−3xg(x)=3x^8-2x^7-x^4-3xg(x)=3x82x7x43x,容易求出:
f′(x)=5x4+2,g′(x)=24x7−14x6−4x3−3 f'(x) = 5x^4+2, \qquad g'(x) = 24x^7-14x^6-4x^3-3 f(x)=5x4+2,g(x)=24x714x64x33
代入乘积法则:
h′(x)=(5x4+2)(3x8−2x7−x4−3x)+(x5+2x−1)(24x7−14x6−4x3−3) h'(x) = (5x^4+2)(3x^8-2x^7-x^4-3x) + (x^5+2x-1)(24x^7-14x^6-4x^3-3) h(x)=(5x4+2)(3x82x7x43x)+(x5+2x1)(24x714x64x33)
这个结果可以继续展开,但展开后会比直接展开原来的 h(x)h(x)h(x) 再求导还要麻烦得多,所以通常就保留这个"没有完全展开"的形式作为最终答案

乘积法则的另一种写法

有时候函数是用 yyy 而不是 f(x)f(x)f(x) 的形式给出的,这时候更方便设 u,vu,vu,v 来代表两部分:

乘积法则(版本2):如果 y=uvy=uvy=uv,那么
dydx=vdudx+udvdx\frac{dy}{dx} = v\frac{du}{dx} + u\frac{dv}{dx}dxdy=vdxdu+udxdv
比如 y=(x3+2x)(3x+x+1)y=(x^3+2x)(3x+\sqrt x+1)y=(x3+2x)(3x+x+1),设 u=x3+2xu=x^3+2xu=x3+2x,v=3x+x+1v=3x+\sqrt x+1v=3x+x+1,那么:
dudx=3x2+2,dvdx=3+12x \frac{du}{dx} = 3x^2+2, \qquad \frac{dv}{dx} = 3+\frac{1}{2\sqrt x} dxdu=3x2+2,dxdv=3+2x1
代入公式:
dydx=(3x+x+1)(3x2+2)+(x3+2x)(3+12x) \frac{dy}{dx} = (3x+\sqrt x+1)(3x^2+2) + (x^3+2x)\left(3+\frac{1}{2\sqrt x}\right) dxdy=(3x+x+1)(3x2+2)+(x3+2x)(3+2x1)

三个函数相乘怎么办?

比如 y=(x2+1)(x2+3x)(x5+2x4+7)y=(x^2+1)(x^2+3x)(x^5+2x^4+7)y=(x2+1)(x2+3x)(x5+2x4+7),这种情况可以用三变量乘积法则:

乘积法则(三变量):如果 y=uvwy=uvwy=uvw,那么
dydx=dudxvw+udvdxw+uvdwdx\frac{dy}{dx} = \frac{du}{dx}vw + u\frac{dv}{dx}w + uv\frac{dw}{dx}dxdy=dxduvw+udxdvw+uvdxdw
记忆方法也很直观:

+------------------------------------------------------+
|  三变量乘积法则记忆技巧                              |
|                                                      |
|  把 uvw 写三遍, 每一遍给一个不同的变量打上导数符号:  |
|                                                      |
|  第一遍:  (du/dx) *    v    *    w                   |
|  第二遍:     u    * (dv/dx) *    w                   |
|  第三遍:     u    *    v    * (dw/dx)                |
|                                                      |
|  把这三遍的结果加起来, 就是完整答案:                 |
|    dy/dx = (du/dx)vw + u(dv/dx)w + uv(dw/dx)         |
+------------------------------------------------------+

也就是说:uvwuvwuvw 完整写三遍,每一遍轮流给其中一个变量加上求导符号,这个技巧对四个或更多变量相乘同样适用——每个变量都恰好被求导一次。
u=x2+1u=x^2+1u=x2+1,v=x2+3xv=x^2+3xv=x2+3x,w=x5+2x4+7w=x^5+2x^4+7w=x5+2x4+7,可得 dudx=2x\dfrac{du}{dx}=2xdxdu=2x,dvdx=2x+3\dfrac{dv}{dx}=2x+3dxdv=2x+3,dwdx=5x4+8x3\dfrac{dw}{dx}=5x^4+8x^3dxdw=5x4+8x3,代入公式:
dydx=(2x)(x2+3x)(x5+2x4+7)+(x2+1)(2x+3)(x5+2x4+7)+(x2+1)(x2+3x)(5x4+8x3) \frac{dy}{dx} = (2x)(x^2+3x)(x^5+2x^4+7) + (x^2+1)(2x+3)(x^5+2x^4+7) + (x^2+1)(x^2+3x)(5x^4+8x^3) dxdy=(2x)(x2+3x)(x5+2x4+7)+(x2+1)(2x+3)(x5+2x4+7)+(x2+1)(x2+3x)(5x4+8x3)
这里同样不需要展开化简,保留这个形式即可。乘积法则的重要性在于:有些函数(比如以后会学到的 xsin⁡xx\sin xxsinx)本身已经没办法再展开了,这时候除了用乘积法则,没有别的办法求导。

6.2.4 商法则

除法的处理方式和乘法类似,但公式略有不同。比如要求
h(x)=2x3−3x+1x5−8x3+2 h(x) = \frac{2x^3-3x+1}{x^5-8x^3+2} h(x)=x58x3+22x33x+1
的导数,设 f(x)=2x3−3x+1f(x)=2x^3-3x+1f(x)=2x33x+1,g(x)=x5−8x3+2g(x)=x^5-8x^3+2g(x)=x58x3+2,h(x)=f(x)g(x)h(x)=\dfrac{f(x)}{g(x)}h(x)=g(x)f(x)

商法则(版本1):如果 h(x)=f(x)g(x)h(x)=\dfrac{f(x)}{g(x)}h(x)=g(x)f(x),那么
h′(x)=f′(x)g(x)−f(x)g′(x)[g(x)]2h'(x) = \frac{f'(x)g(x) - f(x)g'(x)}{[g(x)]^2}h(x)=[g(x)]2f(x)g(x)f(x)g(x)
注意分子部分和乘积法则几乎一样,只是中间的加号换成了减号,这是商法则和乘积法则最容易混淆、也最容易记错的地方,一定要小心顺序:分子永远是"分子的导数乘以分母"减去"分子乘以分母的导数",顺序不能颠倒(因为减法不满足交换律)。
在这个例子里,f′(x)=6x2−3f'(x)=6x^2-3f(x)=6x23,g′(x)=5x4−24x2g'(x)=5x^4-24x^2g(x)=5x424x2,代入商法则:
h′(x)=(6x2−3)(x5−8x3+2)−(2x3−3x+1)(5x4−24x2)(x5−8x3+2)2 h'(x) = \frac{(6x^2-3)(x^5-8x^3+2) - (2x^3-3x+1)(5x^4-24x^2)}{(x^5-8x^3+2)^2} h(x)=(x58x3+2)2(6x23)(x58x3+2)(2x33x+1)(5x424x2)

商法则的另一种写法

商法则(版本2):如果 y=uvy=\dfrac{u}{v}y=vu,那么
dydx=vdudx−udvdxv2\frac{dy}{dx} = \frac{v\dfrac{du}{dx} - u\dfrac{dv}{dx}}{v^2}dxdy=v2vdxduudxdv
比如 y=3x2+12x8−7y=\dfrac{3x^2+1}{2x^8-7}y=2x873x2+1,设 u=3x2+1u=3x^2+1u=3x2+1,v=2x8−7v=2x^8-7v=2x87,则 dudx=6x\dfrac{du}{dx}=6xdxdu=6x,dvdx=16x7\dfrac{dv}{dx}=16x^7dxdv=16x7,代入:
dydx=(2x8−7)(6x)−(3x2+1)(16x7)(2x8−7)2 \frac{dy}{dx} = \frac{(2x^8-7)(6x) - (3x^2+1)(16x^7)}{(2x^8-7)^2} dxdy=(2x87)2(2x87)(6x)(3x2+1)(16x7)
可以看到,商法则并不比乘积法则难,只是稍微更繁琐一点(多了一个分母的平方,以及减号顺序需要留意)。


6.2.5 函数的复合与链式法则

假设要求 h(x)=(x2+1)99h(x)=(x^2+1)^{99}h(x)=(x2+1)99 的导数。把括号里的内容展开99次显然是不现实的,用乘积法则做99次也太离谱。这时候需要换一个角度看待这个函数:
hhh 看成两个函数"接力"产生的结果——先用 g(x)=x2+1g(x)=x^2+1g(x)=x2+1xxx 变成 x2+1x^2+1x2+1,再用 f(x)=x99f(x)=x^{99}f(x)=x99 把这个结果变成99次方。也就是说 h(x)=f(g(x))h(x) = f(g(x))h(x)=f(g(x)),这种"一个函数套在另一个函数外面"的结构叫做复合函数

链式法则(版本1):如果 h(x)=f(g(x))h(x)=f(g(x))h(x)=f(g(x)),那么
h′(x)=f′(g(x))⋅g′(x)h'(x) = f'(g(x))\cdot g'(x)h(x)=f(g(x))g(x)
这个公式拆开来看:第二个因子很简单,就是 ggg 的导数;第一个因子稍微绕一点——先对 fff 求导,然后把求导结果里的 xxx 全部换成 g(x)g(x)g(x)
回到例子,f(x)=x99f(x)=x^{99}f(x)=x99,所以 f′(x)=99x98f'(x)=99x^{98}f(x)=99x98;g(x)=x2+1g(x)=x^2+1g(x)=x2+1,所以 g′(x)=2xg'(x)=2xg(x)=2x。第一个因子是把 f′(x)=99x98f'(x)=99x^{98}f(x)=99x98 里的 xxx 换成 g(x)=x2+1g(x)=x^2+1g(x)=x2+1,得到 99(x2+1)9899(x^2+1)^{98}99(x2+1)98。两个因子相乘:
h′(x)=99(x2+1)98⋅2x=198x(x2+1)98 h'(x) = 99(x^2+1)^{98}\cdot 2x = 198x(x^2+1)^{98} h(x)=99(x2+1)982x=198x(x2+1)98

链式法则的另一种写法(更常用)

y=u99y=u^{99}y=u99,其中 u=x2+1u=x^2+1u=x2+1,这样问题转化为:yyyuuu 的函数,uuu 又是 xxx 的函数

链式法则(版本2):如果 yyyuuu 的函数,uuu 又是 xxx 的函数,那么
dydx=dydu⋅dudx\frac{dy}{dx} = \frac{dy}{du}\cdot\frac{du}{dx}dxdy=dudydxdu
这一版本用起来更顺手:
y=u99,u=x2+1⟹dydu=99u98,dudx=2x y=u^{99},\quad u=x^2+1 \quad\Longrightarrow\quad \frac{dy}{du}=99u^{98},\quad \frac{du}{dx}=2x y=u99,u=x2+1dudy=99u98,dxdu=2x
dydx=dydu⋅dudx=99u98×2x=198xu98 \frac{dy}{dx} = \frac{dy}{du}\cdot\frac{du}{dx} = 99u^{98}\times 2x = 198xu^{98} dxdy=dudydxdu=99u98×2x=198xu98
最后把 uuu 替换回 x2+1x^2+1x2+1,得到 dydx=198x(x2+1)98\dfrac{dy}{dx}=198x(x^2+1)^{98}dxdy=198x(x2+1)98,和刚才的结果完全一致。
再看一个例子:y=x3−7xy=\sqrt{x^3-7x}y=x37x。设 u=x3−7xu=x^3-7xu=x37x,则 y=uy=\sqrt uy=u,有:
dydu=12u,dudx=3x2−7 \frac{dy}{du} = \frac{1}{2\sqrt u}, \qquad \frac{du}{dx} = 3x^2-7 dudy=2u1,dxdu=3x27
dydx=12u×(3x2−7)=3x2−72u=3x2−72x3−7x \frac{dy}{dx} = \frac{1}{2\sqrt u}\times(3x^2-7) = \frac{3x^2-7}{2\sqrt u} = \frac{3x^2-7}{2\sqrt{x^3-7x}} dxdy=2u1×(3x27)=2u3x27=2x37x3x27

为什么叫"链式"法则?

因为整个过程是 x→u→yx \to u \to yxuy 这样一条"链条":先经过 ggg(或者说先变成 uuu),再经过 fff(或者说再变成 yyy)。链式法则把这条链上每一步的"变化率"乘起来,得到整体的变化率。
一个常见的疑问:既然 dydx=dydu⋅dudx\dfrac{dy}{dx}=\dfrac{dy}{du}\cdot\dfrac{du}{dx}dxdy=dudydxdu,看起来好像可以直接把 dududu “约掉”,这不是显然成立吗?其实不能这么想——dydu\dfrac{dy}{du}dudydudx\dfrac{du}{dx}dxdu 并不是真正的分数,而是"分式的极限",只是它们的表现恰好和分数一样,可以这样约分,但这背后是需要证明的(详见6.2.7节的几何说明),不是一个可以想当然认为"显然"的事实。

链式法则可以连续套用多次

比如 y=((x3−10x)9+22)8y = \left((x^3-10x)^9+22\right)^8y=((x310x)9+22)8,这里有"三层嵌套"。设 u=x3−10xu=x^3-10xu=x310x,v=u9+22v=u^9+22v=u9+22,y=v8y=v^8y=v8,那么 x→u→v→yx \to u \to v \to yxuvy 是一条更长的链:
dydx=dydv⋅dvdu⋅dudx \frac{dy}{dx} = \frac{dy}{dv}\cdot\frac{dv}{du}\cdot\frac{du}{dx} dxdy=dvdydudvdxdu
分别求出每一段:
y=v8⇒dydv=8v7,v=u9+22⇒dvdu=9u8,u=x3−10x⇒dudx=3x2−10 y=v^8 \Rightarrow \frac{dy}{dv}=8v^7, \qquad v=u^9+22 \Rightarrow \frac{dv}{du}=9u^8, \qquad u=x^3-10x \Rightarrow \frac{du}{dx}=3x^2-10 y=v8dvdy=8v7,v=u9+22dudv=9u8,u=x310xdxdu=3x210
乘起来:
dydx=8v7⋅9u8⋅(3x2−10) \frac{dy}{dx} = 8v^7 \cdot 9u^8 \cdot (3x^2-10) dxdy=8v79u8(3x210)
再把 v=u9+22v=u^9+22v=u9+22u=x3−10xu=x^3-10xu=x310x 代回去:
dydx=72((x3−10x)9+22)7(x3−10x)8(3x2−10) \frac{dy}{dx} = 72\left((x^3-10x)^9+22\right)^7(x^3-10x)^8(3x^2-10) dxdy=72((x310x)9+22)7(x310x)8(3x210)

抽象求值题:只知道函数在某一点的值和导数值

有时候题目不会给出函数的具体表达式,只给出某一点的函数值和导数值,这时候链式法则依然可以用。
例题1:已知 g(5)=4g(5)=4g(5)=4,g′(5)=7g'(5)=7g(5)=7,设 h(x)=g(x)h(x)=\sqrt{g(x)}h(x)=g(x),求 h′(5)h'(5)h(5)
f(x)=xf(x)=\sqrt xf(x)=x,则 h(x)=f(g(x))h(x)=f(g(x))h(x)=f(g(x)),f′(x)=12xf'(x)=\dfrac{1}{2\sqrt x}f(x)=2x1,所以:
h′(x)=f′(g(x))⋅g′(x)=12g(x)⋅g′(x) h'(x) = f'(g(x))\cdot g'(x) = \frac{1}{2\sqrt{g(x)}}\cdot g'(x) h(x)=f(g(x))g(x)=2g(x)1g(x)
代入 x=5x=5x=5:
h′(5)=12g(5)⋅g′(5)=124×7=74 h'(5) = \frac{1}{2\sqrt{g(5)}}\cdot g'(5) = \frac{1}{2\sqrt4}\times 7 = \frac{7}{4} h(5)=2g(5)1g(5)=241×7=47
例题2:同样已知 g(5)=4g(5)=4g(5)=4,g′(5)=7g'(5)=7g(5)=7,但这次设 j(x)=g(x)j(x)=g(\sqrt x)j(x)=g(x),求 j′(25)j'(25)j(25)
注意这次复合的顺序反过来了:外层是 ggg,内层是 x\sqrt xx。设 f(x)=xf(x)=\sqrt xf(x)=x,则 j(x)=g(f(x))j(x)=g(f(x))j(x)=g(f(x)),所以:
j′(x)=g′(f(x))⋅f′(x)=g′(x)⋅12x j'(x) = g'(f(x))\cdot f'(x) = g'(\sqrt x)\cdot\frac{1}{2\sqrt x} j(x)=g(f(x))f(x)=g(x)2x1
代入 x=25x=25x=25:
j′(25)=g′(25)⋅1225=g′(5)×110=7×110=710 j'(25) = g'(\sqrt{25})\cdot\frac{1}{2\sqrt{25}} = g'(5)\times\frac{1}{10} = 7\times\frac{1}{10} = \frac{7}{10} j(25)=g(25)2251=g(5)×101=7×101=107
对比这两个例题:同样是 gggx\sqrt{\phantom x}x 这两个函数复合,仅仅因为复合的顺序不同(谁在外层、谁在内层),最终结果就完全不一样(74\frac7447 对比 710\frac{7}{10}107)。这提醒我们:函数复合不满足交换律,f(g(x))f(g(x))f(g(x))g(f(x))g(f(x))g(f(x)) 一般是两个不同的函数。

6.2.6 一个综合大例题

现在我们具备了拆解任何复杂函数的能力,回头挑战一开始那个看起来很吓人的函数:
f(x)=3x7+x42x5+15x4/3−23x+96x2−4 f(x) = \frac{3x^7+x^4\sqrt{2x^5+15x^{4/3}-23x+9}}{6x^2-4} f(x)=6x243x7+x42x5+15x4/323x+9
思路是先看最外层的结构,再逐层往里拆。下面这棵树展示了完整的拆解过程:

y = f(x)
最复杂的目标函数

商法则:
y = u 除以 v

u = q + r
(分子, 用和法则)

v = 6x的2次方 减 4
(分母, 直接可求导)

q = 3x的7次方
(直接可求导)

r = w 乘 z
(用乘积法则)

w = x的4次方
(直接可求导)

z = 根号t
(用链式法则)

t = 2x的5次方 加 15x的4/3次方
减 23x 加 9
(直接可求导)

第一层(最外层):商法则。 整个函数是一个分式,设分子为 uuu,分母为 v=6x2−4v=6x^2-4v=6x24。分母的导数很容易:dvdx=12x\dfrac{dv}{dx}=12xdxdv=12x。分子的导数还需要继续往下拆。
第二层:和法则。 分子 u=3x7+x42x5+15x4/3−23x+9u = 3x^7 + x^4\sqrt{2x^5+15x^{4/3}-23x+9}u=3x7+x42x5+15x4/323x+9 是两部分相加,设 q=3x7q=3x^7q=3x7(导数是 21x621x^621x6,很简单),以及 r=x42x5+15x4/3−23x+9r=x^4\sqrt{2x^5+15x^{4/3}-23x+9}r=x42x5+15x4/323x+9(这部分还需要继续拆)。
第三层:乘积法则。 rrr 是两部分相乘:w=x4w=x^4w=x4(导数 dwdx=4x3\dfrac{dw}{dx}=4x^3dxdw=4x3)和 z=2x5+15x4/3−23x+9z=\sqrt{2x^5+15x^{4/3}-23x+9}z=2x5+15x4/323x+9(这部分需要链式法则)。
第四层:链式法则。t=2x5+15x4/3−23x+9t = 2x^5+15x^{4/3}-23x+9t=2x5+15x4/323x+9,那么 z=tz=\sqrt tz=t。先求 ttt 的导数:
dtdx=10x4+20x1/3−23 \frac{dt}{dx} = 10x^4 + 20x^{1/3} - 23 dxdt=10x4+20x1/323
再用链式法则求 zzz 的导数:
dzdx=dzdt⋅dtdx=12t×(10x4+20x1/3−23)=10x4+20x1/3−2322x5+15x4/3−23x+9 \frac{dz}{dx} = \frac{dz}{dt}\cdot\frac{dt}{dx} = \frac{1}{2\sqrt t}\times\left(10x^4+20x^{1/3}-23\right) = \frac{10x^4+20x^{1/3}-23}{2\sqrt{2x^5+15x^{4/3}-23x+9}} dxdz=dtdzdxdt=2t1×(10x4+20x1/323)=22x5+15x4/323x+910x4+20x1/323
从第四层往第三层回填: 现在知道了 w,dwdx,z,dzdxw,\dfrac{dw}{dx},z,\dfrac{dz}{dx}w,dxdw,z,dxdz,用乘积法则求 r=wzr=wzr=wz 的导数:
drdx=zdwdx+wdzdx=2x5+15x4/3−23x+9 (4x3)+x4⋅10x4+20x1/3−2322x5+15x4/3−23x+9 \frac{dr}{dx} = z\frac{dw}{dx} + w\frac{dz}{dx} = \sqrt{2x^5+15x^{4/3}-23x+9}\,(4x^3) + x^4\cdot\frac{10x^4+20x^{1/3}-23}{2\sqrt{2x^5+15x^{4/3}-23x+9}} dxdr=zdxdw+wdxdz=2x5+15x4/323x+9(4x3)+x422x5+15x4/323x+910x4+20x1/323
从第三层往第二层回填: u=q+ru=q+ru=q+r,所以:
dudx=dqdx+drdx=21x6+drdx \frac{du}{dx} = \frac{dq}{dx} + \frac{dr}{dx} = 21x^6 + \frac{dr}{dx} dxdu=dxdq+dxdr=21x6+dxdr
从第二层往第一层回填,套用商法则:
dydx=vdudx−udvdxv2 \frac{dy}{dx} = \frac{v\dfrac{du}{dx} - u\dfrac{dv}{dx}}{v^2} dxdy=v2vdxduudxdv
把所有部分代入(过程繁琐但每一步都是已经会做的基本操作),最终得到:
dydx=(21x6+26x8+140x13/3−207x4+72x322x5+15x4/3−23x+9)(6x2−4)−(3x7+x42x5+15x4/3−23x+9)(12x)(6x2−4)2 \frac{dy}{dx} = \frac{\left(21x^6+\dfrac{26x^8+140x^{13/3}-207x^4+72x^3}{2\sqrt{2x^5+15x^{4/3}-23x+9}}\right)(6x^2-4) - \left(3x^7+x^4\sqrt{2x^5+15x^{4/3}-23x+9}\right)(12x)}{(6x^2-4)^2} dxdy=(6x24)2(21x6+22x5+15x4/323x+926x8+140x13/3207x4+72x3)(6x24)(3x7+x42x5+15x4/323x+9)(12x)
这个结果一点也不简洁,但它是完全正确、严格推导出来的。这个例子说明了一个重要的道理:面对复杂函数时不需要害怕,只需要识别最外层的结构,套用对应的法则,然后把"剩下没求导的部分"当成一个新的子问题,递归地往下拆,直到每一块都是能直接求导的简单函数为止

6.2.7 乘积法则和链式法则的几何直观

乘积法则:面积的变化

uuuvvv 想象成一个矩形的两条边长,矩形的面积就是 uvuvuv。当 xxx 发生一点微小变化时,uuu 变成 u+Δuu+\Delta uu+Δu,vvv 变成 v+Δvv+\Delta vv+Δv,矩形跟着变大了一点。
下面这张图展示了"变大的那一部分面积"具体是怎么构成的:
在这里插入图片描述

新增的面积(图中L形区域,被拆成了三块)正好是:
Δ(uv)=vΔu+uΔv+Δu Δv \Delta(uv) = v\Delta u + u\Delta v + \Delta u\,\Delta v Δ(uv)=vΔu+uΔv+ΔuΔv
其中前两块是"又长又窄的条状矩形",面积分别是 vΔuv\Delta uvΔuuΔvu\Delta vuΔv;第三块是右上角一个很小的矩形,面积是 Δu Δv\Delta u\,\Delta vΔuΔvΔu\Delta uΔuΔv\Delta vΔv 都非常小的时候,这第三块小矩形的面积要比前两块小得多,几乎可以忽略(比如 Δu=Δv=0.001\Delta u=\Delta v=0.001Δu=Δv=0.001 时,前两块的量级是 0.0010.0010.001,第三块的量级却是 0.0000010.0000010.000001,小了一千倍)。
忽略掉这一项之后:
Δ(uv)≈vΔu+uΔv \Delta(uv) \approx v\Delta u + u\Delta v Δ(uv)vΔu+uΔv
两边同时除以 Δx\Delta xΔx,再让 Δx→0\Delta x \to 0Δx0(此时上面的"近似等于"也变成了精确的等于),就得到了乘积法则:
ddx(uv)=vdudx+udvdx \frac{d}{dx}(uv) = v\frac{du}{dx} + u\frac{dv}{dx} dxd(uv)=vdxdu+udxdv

三变量乘积法则的证明思路

z=vwz=vwz=vw,那么 uvwuvwuvw 其实就是 uzuzuz。先对 z=vwz=vwz=vw 用(两变量)乘积法则:
dzdx=wdvdx+vdwdx \frac{dz}{dx} = w\frac{dv}{dx} + v\frac{dw}{dx} dxdz=wdxdv+vdxdw
再对 uzuzuz 用乘积法则:
ddx(uvw)=ddx(uz)=zdudx+udzdx \frac{d}{dx}(uvw) = \frac{d}{dx}(uz) = z\frac{du}{dx} + u\frac{dz}{dx} dxd(uvw)=dxd(uz)=zdxdu+udxdz
z=vwz=vwz=vw 和上面求出的 dzdx\dfrac{dz}{dx}dxdz 代进去:
ddx(uvw)=vwdudx+u(wdvdx+vdwdx)=dudxvw+udvdxw+uvdwdx \frac{d}{dx}(uvw) = vw\frac{du}{dx} + u\left(w\frac{dv}{dx}+v\frac{dw}{dx}\right) = \frac{du}{dx}vw + u\frac{dv}{dx}w + uv\frac{dw}{dx} dxd(uvw)=vwdxdu+u(wdxdv+vdxdw)=dxduvw+udxdvw+uvdxdw
这正是三变量乘积法则。这个证明思路很有启发性:它告诉我们,只要把"三个数相乘"看成"两个数相乘"(把后两个先打包成一个整体),复杂情形总能用简单情形拼出来。

链式法则:拉伸因子的比喻

y=f(u)y=f(u)y=f(u),u=g(x)u=g(x)u=g(x)。想象 g′(x)g'(x)g(x) 是一个"拉伸倍数"——xxx 变化一点点,uuu 的变化量大约是 g′(x)g'(x)g(x) 倍那么多:
Δu≈g′(x)Δx \Delta u \approx g'(x)\Delta x Δug(x)Δx
类似地,f′(u)f'(u)f(u) 也是一个拉伸倍数——uuu 变化一点点,yyy 的变化量大约是 f′(u)f'(u)f(u) 倍那么多:
Δy≈f′(u)Δu \Delta y \approx f'(u)\Delta u Δyf(u)Δu
把这两个近似式接起来:
Δy≈f′(u)g′(x)Δx \Delta y \approx f'(u)g'(x)\Delta x Δyf(u)g(x)Δx
也就是说:xxx 的变化先被 g′(x)g'(x)g(x) 这个倍数拉伸了一次,再被 f′(u)f'(u)f(u) 这个倍数拉伸了一次,总的拉伸倍数就是两个倍数相乘。这正好像吹泡泡糖一样:先把它拉长2倍,再把拉长后的结果拉长3倍,总效果就是拉长了 2×3=62\times3=62×3=6 倍。
两边除以 Δx\Delta xΔx,取极限 Δx→0\Delta x \to 0Δx0:
dydx=lim⁡Δx→0ΔyΔx=f′(u)g′(x) \frac{dy}{dx} = \lim_{\Delta x \to 0}\frac{\Delta y}{\Delta x} = f'(u)g'(x) dxdy=Δx0limΔxΔy=f(u)g(x)
这正是链式法则。把 u=g(x)u=g(x)u=g(x)y=f(u)=f(g(x))y=f(u)=f(g(x))y=f(u)=f(g(x)) 代回去,就是版本1的写法 h′(x)=f′(g(x))g′(x)h'(x)=f'(g(x))g'(x)h(x)=f(g(x))g(x);如果把 f′(u)f'(u)f(u) 写成 dydu\dfrac{dy}{du}dudy、把 g′(x)g'(x)g(x) 写成 dudx\dfrac{du}{dx}dxdu,就是版本2的写法 dydx=dydu⋅dudx\dfrac{dy}{dx}=\dfrac{dy}{du}\cdot\dfrac{du}{dx}dxdy=dudydxdu

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值