写在前面
这一章是上一章理论的"实战篇"。上一章我们学习了导数的定义,这一章我们要实际动手,用这个定义去求出几个具体函数的导数,并且从中总结出一套"幂函数求导公式",以后遇到 xnx^nxn 这种形式就可以直接套公式,不用每次都从定义算起。
本章要解决的核心问题是:
- 怎样用导数的定义(差商取极限)去求导数;
- 遇到"分式相减"或"根式相减"时如何化简,避开 00\dfrac{0}{0}00 这个陷阱;
- 怎样推导出万能公式 ddx(xn)=nxn−1\dfrac{d}{dx}(x^n) = n x^{n-1}dxd(xn)=nxn−1;
- 这个公式在 nnn 取不同特殊值(比如 000、111、222、−1-1−1、12\frac1221、13\frac1331)时分别意味着什么。
6.1 导数定义回顾
上一章已经学过,函数 f(x)f(x)f(x) 在某一点的导数定义是:
f′(x)=limh→0f(x+h)−f(x)h
f'(x) = \lim_{h \to 0} \frac{f(x+h) - f(x)}{h}
f′(x)=h→0limhf(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,分母 hhh 在 h=0h=0h=0 时也是 000)。所以核心技巧就是:先想办法把分子和分母里"共同的、让两者都变成0的因子" hhh 给约掉,这样剩下的式子在 h=0h=0h=0 处才有意义,这时候才能安心地代入 h=0h=0h=0。
下面这张流程图总结了整体的解题思路:
6.2 用定义法求 f(x)=1xf(x) = \dfrac{1}{x}f(x)=x1 的导数
第一步:写出定义式。
f′(x)=limh→01x+h−1xh
f'(x) = \lim_{h \to 0} \frac{\dfrac{1}{x+h} - \dfrac{1}{x}}{h}
f′(x)=h→0limhx+h1−x1
如果直接令 h=0h=0h=0,分子是 1x−1x=0\dfrac{1}{x}-\dfrac{1}{x}=0x1−x1=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+h1−x1=x(x+h)x−(x+h)=x(x+h)−h
第三步:把化简后的分子代回差商,再除以 hhh。 注意"除以 hhh"相当于"乘以 1h\dfrac1hh1",所以:
f′(x)=limh→0−hx(x+h)⋅1h=limh→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)=h→0limx(x+h)−h⋅h1=h→0limhx(x+h)−h
第四步:约去公因子 hhh。 分子分母都有一个 hhh,可以直接约掉(这一步正是绕开 00\frac0000 的关键):
f′(x)=limh→0−1x(x+h)
f'(x) = \lim_{h \to 0} \frac{-1}{x(x+h)}
f′(x)=h→0limx(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)=x⋅x−1=−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)=limh→0x+h−xh
f'(x) = \lim_{h \to 0} \frac{\sqrt{x+h} - \sqrt{x}}{h}
f′(x)=h→0limhx+h−x
直接代入 h=0h=0h=0 同样会得到 00\dfrac{0}{0}00。但这次"取公分母"这一招不管用了,因为分子里没有分式,而是两个根号相减。
遇到根式相减时的标准技巧是"分子有理化":同时乘上分子的共轭式(即把中间的减号换成加号得到的式子),利用平方差公式 ( a−b )( a+b )=a2−b2(\,a-b\,)(\,a+b\,)=a^2-b^2(a−b)(a+b)=a2−b2 把根号消掉。
f′(x)=limh→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)=h→0limhx+h−x⋅x+h+xx+h+x
分子部分,(x+h−x)(x+h+x)(\sqrt{x+h}-\sqrt{x})(\sqrt{x+h}+\sqrt{x})(x+h−x)(x+h+x) 正好套用平方差公式,变成 (x+h)−x=h(x+h) - x = h(x+h)−x=h:
f′(x)=limh→0(x+h)−xh(x+h+x)=limh→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)=h→0limh(x+h+x)(x+h)−x=h→0limh(x+h+x)h
分子分母再次同时出现 hhh,约掉:
f′(x)=limh→01x+h+x
f'(x) = \lim_{h \to 0} \frac{1}{\sqrt{x+h} + \sqrt{x}}
f′(x)=h→0limx+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)=limh→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)=h→0limh[x+h+(x+h)2]−[x+x2]
把根号部分和平方部分分别归类:
f′(x)=limh→0x+h−xh+limh→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)=h→0limhx+h−x+h→0limh(x+h)2−x2
这两个极限我们都已经算过了(第一个是上一节刚求出的 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)=nxn−1
现在来推导一个"万能公式",这样以后遇到 xnx^nxn 形式的函数就不用每次都从定义算了。设 f(x)=xnf(x) = x^nf(x)=xn,其中 nnn 是正整数。
f′(x)=limh→0(x+h)n−xnh
f'(x) = \lim_{h \to 0} \frac{(x+h)^n - x^n}{h}
f′(x)=h→0limh(x+h)n−xn
难点在于展开 (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+nhxn−1+h2×(junk)
这里的 “junk”(杂项)就是指所有那些"至少含有两个 hhh"的项打包在一起、再除掉公共的 h2h^2h2 之后剩下的、关于 xxx 和 hhh 的某个多项式——我们不关心它具体长什么样,只关心它在 h→0h\to0h→0 时不会"爆炸"(不会变成无穷大),这一点是成立的,因为它本身只是一个普通的多项式。
把这个展开式代入导数定义:
f′(x)=limh→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)=h→0limhxn+nhxn−1+h2×(junk)−xn
xnx^nxn 这一项和减去的 xnx^nxn 正好抵消:
f′(x)=limh→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)=h→0limhnhxn−1+h2×(junk)
分子的每一项都含有至少一个 hhh,可以把 hhh 从分子中提出来,和分母的 hhh 约掉:
f′(x)=limh→0[nxn−1+h×(junk)]
f'(x) = \lim_{h \to 0} \left[ n x^{n-1} + h \times (\text{junk}) \right]
f′(x)=h→0lim[nxn−1+h×(junk)]
现在已经不存在"除以 hhh"了,可以放心令 h→0h \to 0h→0。这时候第二项 h×(junk)h \times (\text{junk})h×(junk) 因为前面乘了一个趋于 000 的 hhh,而 junk 又不会爆炸,所以整体趋于 000;第一项 nxn−1n x^{n-1}nxn−1 不依赖 hhh,原样保留:
f′(x)=nxn−1
f'(x) = n x^{n-1}
f′(x)=nxn−1
结论(当 nnn 是正整数时已经严格证明,当 aaa 是任意实数时这个公式依然成立,证明会在第9章给出):
ddx(xa)=a xa−1
\frac{d}{dx}\left(x^{a}\right) = a\, x^{a-1}
dxd(xa)=axa−1
用一句话记住这个公式:把指数拿下来放在前面当系数,然后把指数本身减1。
6.6 公式的特殊情形检验
下面用刚推导出的公式 ddx(xa)=axa−1\dfrac{d}{dx}(x^a) = a x^{a-1}dxd(xa)=axa−1 代入几个特殊的 aaa,看看是否和我们已知的结果吻合:
| aaa 的取值 | 对应的函数 f(x)f(x)f(x) | 套用公式得到的导数 | 是否与已知结果一致 |
|---|---|---|---|
| a=0a=0a=0 | f(x)=x0=1f(x)=x^0=1f(x)=x0=1(常数) | 0⋅x−1=00 \cdot x^{-1} = 00⋅x−1=0 | 一致,常数的导数恒为0 |
| a=1a=1a=1 | f(x)=xf(x)=xf(x)=x | 1⋅x0=11 \cdot x^{0} = 11⋅x0=1 | 一致 |
| a=2a=2a=2 | f(x)=x2f(x)=x^2f(x)=x2 | 2⋅x1=2x2 \cdot x^{1} = 2x2⋅x1=2x | 一致 |
| a=−1a=-1a=−1 | f(x)=x−1=1xf(x)=x^{-1}=\dfrac1xf(x)=x−1=x1 | −1⋅x−2=−1x2-1 \cdot x^{-2} = -\dfrac{1}{x^2}−1⋅x−2=−x21 | 一致,和6.2节算出的结果完全相同 |
| a=12a=\dfrac12a=21 | f(x)=x1/2=xf(x)=x^{1/2}=\sqrt xf(x)=x1/2=x | 12x−1/2=12x\dfrac12 x^{-1/2} = \dfrac{1}{2\sqrt x}21x−1/2=2x1 | 一致,和6.3节算出的结果完全相同 |
| a=13a=\dfrac13a=31 | f(x)=x1/3=x3f(x)=x^{1/3}=\sqrt[3]{x}f(x)=x1/3=3x | 13x−2/3=13x23\dfrac13 x^{-2/3} = \dfrac{1}{3\sqrt[3]{x^2}}31x−2/3=33x21 | 一致,是公式更生僻的应用 |
这张表说明了一件很重要的事:幂函数求导公式不只是对正整数次幂成立,对 000、负数、分数次幂都成立——这也是为什么这一条公式如此好用,以后只要看到 xxx 的任意次幂,直接套用就行,不需要再回到定义重新推导。
下面这张图把这几种特殊情形画成了一棵树,方便记忆:
6.7 用代码验证以上所有结论
光靠手算容易出现符号错误或者粗心的代数失误,下面用 C++ 写一段"数值验证"程序:利用差商在 hhh 很小(比如 10−610^{-6}10−6)时去逼近真正的导数,然后和我们手算出来的解析公式做对比,如果两者几乎完全一致,就说明手算的公式大概率是正确的。
// 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)=axa−1(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)=6x2−43x7+x42x5+15x4/3−23x+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-1−1",所以:
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}} + 23x5−2x2+x7+2 关于 xxx 的导数。第一步是把 1x\dfrac{1}{\sqrt x}x1 改写成 x−1/2x^{-1/2}x−1/2,这样整个函数就变成了:
3x5−2x2+7x−1/2+2
3x^5 - 2x^2 + 7x^{-1/2} + 2
3x5−2x2+7x−1/2+2
现在对每一部分单独用上一节的幂函数公式:
- 3x53x^53x5 的导数是 15x415x^415x4;
- −2x2-2x^2−2x2 的导数是 −4x-4x−4x;
- 7x−1/27x^{-1/2}7x−1/2 的导数是 7×(−12)x−3/2=−72x−3/27 \times \left(-\dfrac12\right) x^{-3/2} = -\dfrac72 x^{-3/2}7×(−21)x−3/2=−27x−3/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(3x5−2x2+x7+2)=15x4−4x−27x−3/2
小技巧:x−3/2x^{-3/2}x−3/2 也可以写成 1xx\dfrac{1}{x\sqrt x}xx1,所以上面的答案也可以写成:
15x4−4x−72⋅1xx 15x^4 - 4x - \frac{7}{2}\cdot\frac{1}{x\sqrt x} 15x4−4x−27⋅xx1
类似地,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+2x−1)(3x8−2x7−x4−3x)
的导数,如果直接把两个因子分别求导再相乘,得到的不是正确答案。正确的做法是用乘积法则:
乘积法则(版本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+2x−1,g(x)=3x8−2x7−x4−3xg(x)=3x^8-2x^7-x^4-3xg(x)=3x8−2x7−x4−3x,容易求出:
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)=24x7−14x6−4x3−3
代入乘积法则:
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)(3x8−2x7−x4−3x)+(x5+2x−1)(24x7−14x6−4x3−3)
这个结果可以继续展开,但展开后会比直接展开原来的 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)
这里同样不需要展开化简,保留这个形式即可。乘积法则的重要性在于:有些函数(比如以后会学到的 xsinxx\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)=x5−8x3+22x3−3x+1
的导数,设 f(x)=2x3−3x+1f(x)=2x^3-3x+1f(x)=2x3−3x+1,g(x)=x5−8x3+2g(x)=x^5-8x^3+2g(x)=x5−8x3+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)=6x2−3,g′(x)=5x4−24x2g'(x)=5x^4-24x^2g′(x)=5x4−24x2,代入商法则:
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)=(x5−8x3+2)2(6x2−3)(x5−8x3+2)−(2x3−3x+1)(5x4−24x2)
商法则的另一种写法
商法则(版本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=v2vdxdu−udxdv
比如 y=3x2+12x8−7y=\dfrac{3x^2+1}{2x^8-7}y=2x8−73x2+1,设 u=3x2+1u=3x^2+1u=3x2+1,v=2x8−7v=2x^8-7v=2x8−7,则 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=(2x8−7)2(2x8−7)(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+1 把 xxx 变成 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)98⋅2x=198x(x2+1)98
链式法则的另一种写法(更常用)
设 y=u99y=u^{99}y=u99,其中 u=x2+1u=x^2+1u=x2+1,这样问题转化为:yyy 是 uuu 的函数,uuu 又是 xxx 的函数。
链式法则(版本2):如果 yyy 是 uuu 的函数,uuu 又是 xxx 的函数,那么
dydx=dydu⋅dudx\frac{dy}{dx} = \frac{dy}{du}\cdot\frac{du}{dx}dxdy=dudy⋅dxdu
这一版本用起来更顺手:
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+1⟹dudy=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=dudy⋅dxdu=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=x3−7x。设 u=x3−7xu=x^3-7xu=x3−7x,则 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=3x2−7
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×(3x2−7)=2u3x2−7=2x3−7x3x2−7
为什么叫"链式"法则?
因为整个过程是 x→u→yx \to u \to yx→u→y 这样一条"链条":先经过 ggg(或者说先变成 uuu),再经过 fff(或者说再变成 yyy)。链式法则把这条链上每一步的"变化率"乘起来,得到整体的变化率。
一个常见的疑问:既然 dydx=dydu⋅dudx\dfrac{dy}{dx}=\dfrac{dy}{du}\cdot\dfrac{du}{dx}dxdy=dudy⋅dxdu,看起来好像可以直接把 dududu “约掉”,这不是显然成立吗?其实不能这么想——dydu\dfrac{dy}{du}dudy 和 dudx\dfrac{du}{dx}dxdu 并不是真正的分数,而是"分式的极限",只是它们的表现恰好和分数一样,可以这样约分,但这背后是需要证明的(详见6.2.7节的几何说明),不是一个可以想当然认为"显然"的事实。
链式法则可以连续套用多次
比如 y=((x3−10x)9+22)8y = \left((x^3-10x)^9+22\right)^8y=((x3−10x)9+22)8,这里有"三层嵌套"。设 u=x3−10xu=x^3-10xu=x3−10x,v=u9+22v=u^9+22v=u9+22,y=v8y=v^8y=v8,那么 x→u→v→yx \to u \to v \to yx→u→v→y 是一条更长的链:
dydx=dydv⋅dvdu⋅dudx
\frac{dy}{dx} = \frac{dy}{dv}\cdot\frac{dv}{du}\cdot\frac{du}{dx}
dxdy=dvdy⋅dudv⋅dxdu
分别求出每一段:
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=v8⇒dvdy=8v7,v=u9+22⇒dudv=9u8,u=x3−10x⇒dxdu=3x2−10
乘起来:
dydx=8v7⋅9u8⋅(3x2−10)
\frac{dy}{dx} = 8v^7 \cdot 9u^8 \cdot (3x^2-10)
dxdy=8v7⋅9u8⋅(3x2−10)
再把 v=u9+22v=u^9+22v=u9+22、u=x3−10xu=x^3-10xu=x3−10x 代回去:
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((x3−10x)9+22)7(x3−10x)8(3x2−10)
抽象求值题:只知道函数在某一点的值和导数值
有时候题目不会给出函数的具体表达式,只给出某一点的函数值和导数值,这时候链式法则依然可以用。
例题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)1⋅g′(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)1⋅g′(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
对比这两个例题:同样是 ggg 和 x\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)=6x2−43x7+x42x5+15x4/3−23x+9
思路是先看最外层的结构,再逐层往里拆。下面这棵树展示了完整的拆解过程:
第一层(最外层):商法则。 整个函数是一个分式,设分子为 uuu,分母为 v=6x2−4v=6x^2-4v=6x2−4。分母的导数很容易: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/3−23x+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/3−23x+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/3−23x+9(这部分需要链式法则)。
第四层:链式法则。 设 t=2x5+15x4/3−23x+9t = 2x^5+15x^{4/3}-23x+9t=2x5+15x4/3−23x+9,那么 z=tz=\sqrt tz=t。先求 ttt 的导数:
dtdx=10x4+20x1/3−23
\frac{dt}{dx} = 10x^4 + 20x^{1/3} - 23
dxdt=10x4+20x1/3−23
再用链式法则求 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=dtdz⋅dxdt=2t1×(10x4+20x1/3−23)=22x5+15x4/3−23x+910x4+20x1/3−23
从第四层往第三层回填: 现在知道了 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/3−23x+9(4x3)+x4⋅22x5+15x4/3−23x+910x4+20x1/3−23
从第三层往第二层回填: 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=v2vdxdu−udxdv
把所有部分代入(过程繁琐但每一步都是已经会做的基本操作),最终得到:
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=(6x2−4)2(21x6+22x5+15x4/3−23x+926x8+140x13/3−207x4+72x3)(6x2−4)−(3x7+x42x5+15x4/3−23x+9)(12x)
这个结果一点也不简洁,但它是完全正确、严格推导出来的。这个例子说明了一个重要的道理:面对复杂函数时不需要害怕,只需要识别最外层的结构,套用对应的法则,然后把"剩下没求导的部分"当成一个新的子问题,递归地往下拆,直到每一块都是能直接求导的简单函数为止。
6.2.7 乘积法则和链式法则的几何直观
乘积法则:面积的变化
把 uuu 和 vvv 想象成一个矩形的两条边长,矩形的面积就是 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Δu 和 uΔ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Δx→0(此时上面的"近似等于"也变成了精确的等于),就得到了乘积法则:
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
这正是三变量乘积法则。这个证明思路很有启发性:它告诉我们,只要把"三个数相乘"看成"两个数相乘"(把后两个先打包成一个整体),复杂情形总能用简单情形拼出来。

2371

被折叠的 条评论
为什么被折叠?



