普林斯顿微积分读本 · 第六章

求解微分问题

导数——度量变化率的工具

6.1

用定义求导

导数的定义是一切求导方法的根基。无论多么复杂的求导法则,最终都归结到这个定义:

f'(x) = lim(h → 0) [f(x+h) - f(x)] / h

这个公式度量的是:当自变量 x 发生一个微小变化 h 时,函数值 f(x) 的变化量与 h 的比值在 h 趋近于 0 时的极限。这就是瞬时变化率的精确含义。

导数定义的几何意义

导数 f'(a) 等于函数 y = f(x) 在点 (a, f(a)) 处切线的斜率。割线的斜率 [f(a+h)-f(a)]/h 当 h→0 时趋近于切线的斜率。

用定义求 f(x) = x² 的导数

第一步:写出定义式

f'(x) = lim(h → 0) [f(x+h) - f(x)] / h = lim(h → 0) [(x+h)² - x²] / h

第二步:展开分子

(x+h)² - x² = x² + 2xh + h² - x² = 2xh + h²

第三步:约分并取极限

= lim(h → 0) (2xh + h²) / h = lim(h → 0) (2x + h) = 2x
f'(x) = 2x   ⇒   (x²)' = 2x
观察规律

x² 的导数是 2x,x³ 的导数是 3x²,x⁴ 的导数是 4x³......这个规律就是幂法则:(xn)' = nxn-1。用定义可以严格证明这一法则。

用定义求 f(x) = 1/x 的导数

第一步:写出定义式

f'(x) = lim(h → 0) [1/(x+h) - 1/x] / h

第二步:通分

= lim(h → 0) [x - (x+h)] / [h · x(x+h)] = lim(h → 0) (-h) / [h · x(x+h)]

第三步:约分并取极限

= lim(h → 0) (-1) / [x(x+h)] = -1 / x²
f'(x) = -1/x²   ⇒   (1/x)' = -1/x²
用定义求导的一般步骤

1. 写出 [f(x+h) - f(x)] / h
2. 展开 f(x+h),化简分子
3. 约去 h(或通过有理化、通分等技巧消去 h)
4. 令 h → 0,得到导数表达式

6.2

基本求导法则

虽然用定义可以求出任何可导函数的导数,但每次都回到定义会非常繁琐。以下法则让我们能够高效地求导。

常数倍法则

(cf)' = cf'     (c 为常数)

常数的倍数可以直接提到导数外面。例如 (3x²)' = 3 · (x²)' = 3 · 2x = 6x。

和差法则

(f ± g)' = f' ± g'

导数可以逐项求。例如 (x² + sin(x))' = 2x + cos(x)。

乘积法则

(fg)' = f'g + fg'
记忆方法

"第一个的导乘第二个,加第一个乘第二个的导"

想象两个函数 f 和 g "合作"产生乘积 fg。它们各自都要"贡献"一份——f 要乘 g(自己求导),g 也要乘 f(自己求导),然后把两份加起来。

例如:(x² · ex)' = 2x · ex + x² · ex = ex(2x + x²)。

商法则

(f/g)' = (f'g - fg') / g²     (g ≠ 0)
记忆方法

"低导高减高导低,放在低下真逍遥"

"低"指分母 g,"高"指分子 f。分子是"低乘高的导 减 高乘低的导",整体除以"低的平方"(g²)。注意分子中是 g'f - fg' 的顺序,分母的导数项在前。

例如:(sin(x)/x)' = (cos(x) · x - sin(x) · 1) / x² = (x cos(x) - sin(x)) / x²。

链式法则

[f(g(x))]' = f'(g(x)) · g'(x)

链式法则是求复合函数导数的核心工具。当函数嵌套函数时,我们需要"从外到内"逐层求导,然后把各层的导数相乘

直觉:齿轮传动类比

想象两个齿轮咬合在一起。大齿轮(外层函数 f)的转速取决于小齿轮(内层函数 g)的转速。如果小齿轮转得快(g'(x) 大),大齿轮也会转得快。总的效果是两个传动比的乘积——这就是链式法则 f'(g(x)) · g'(x)。

链式法则的"剥洋葱"思维

求复合函数的导数就像剥洋葱——从最外层开始,逐层向内。每剥一层就乘上该层的导数,直到最内层。例如 d/dx[sin(x²)]:先对外层 sin 求导得 cos(x²),再对内层 x² 求导得 2x,最终结果为 cos(x²) · 2x。

链式法则示例

d/dx sin(x²)

第一步:识别复合结构

外层函数 f(u) = sin(u),内层函数 g(x) = x²

第二步:分别求导

f'(u) = cos(u),g'(x) = 2x

第三步:应用链式法则

d/dx sin(x²) = cos(x²) · 2x = 2x cos(x²)
法则名称公式记忆口诀
常数倍法则(cf)' = cf'常数直接提出来
和差法则(f ± g)' = f' ± g'逐项求导
乘积法则(fg)' = f'g + fg'第一个的导乘第二个,加第一个乘第二个的导
商法则(f/g)' = (f'g - fg')/g²低导高减高导低,放在低下真逍遥
链式法则[f(g(x))]' = f'(g(x)) · g'(x)从外到内,逐层相乘
6.3

常见函数的导数表

以下表格汇集了微积分中最常用的导数公式,建议熟记。这些公式都可以通过导数定义严格证明。

函数 f(x)导数 f'(x)备注
xnnxn-1幂法则,n 为任意实数
exex唯一导数等于自身的函数
ln(x)1/x自然对数,x > 0
sin(x)cos(x)弧度制下成立
cos(x)-sin(x)注意负号
tan(x)sec²(x) = 1/cos²(x)利用商法则推导
axax ln(a)换底为 ex ln(a)
loga(x)1 / (x ln(a))换底为 ln(x)/ln(a)
arcsin(x)1 / √(1 - x²)|x| < 1
arctan(x)1 / (1 + x²)对所有实数 x
记忆技巧

三角函数的导数:sin 和 cos 是一对"舞伴"——sin 的导数是 cos,cos 的导数是 -sin。每次求导就像跳一步舞,sin→cos→-sin→-cos→sin,每四步循环一次。

指数函数的导数:ex 的导数就是自身,这是它最独特的性质。ax 的导数多了一个 ln(a) 的因子。

反三角函数的导数:arcsin 和 arctan 的导数分母都含有 1 - x² 或 1 + x²,区别在于 arcsin 是开根号(只取正值),arctan 不开根号。

为什么弧度制如此重要?

如果使用角度制而非弧度制,(sin x)' = (π/180) cos x,公式会多出一个常数因子。只有弧度制才能让 (sin x)' = cos x 成立,这也是数学和物理中统一使用弧度制的原因。

6.4

求切线方程

导数最直接的几何应用就是求切线方程。如果已知函数 f(x) 和切点 x = a,那么:

切线方程

y - f(a) = f'(a)(x - a)

这就是点斜式:已知切点 (a, f(a)) 和斜率 f'(a),直接代入即可。

法线方程

法线是过切点且与切线垂直的直线。由于两条垂直直线的斜率乘积为 -1,法线的斜率为 -1/f'(a):

y - f(a) = -1/f'(a) · (x - a)     (f'(a) ≠ 0)
求切线方程的步骤

1. 求出 f(a)——切点的 y 坐标
2. 求出 f'(x),再代入 x = a 得到 f'(a)——切线的斜率
3. 代入点斜式 y - f(a) = f'(a)(x - a)
4. 化简为 y = kx + b 的形式(如果需要)

图 6-2:函数 f(x) = x² 在多个点处的切线
6.5

速度和加速度

导数在物理学中最经典的应用就是描述运动。位移、速度和加速度之间的关系完全由导数建立:

物理量数学表达含义
位移s(t)物体在时刻 t 的位置
速度v(t) = s'(t)位移的变化率(一阶导数)
加速度a(t) = v'(t) = s''(t)速度的变化率(二阶导数)
物理直觉

速度告诉你"现在移动得多快",加速度告诉你"速度变化得多快"。速度为正表示前进,为负表示后退。速度为零的瞬间,物体处于瞬时静止——这正是函数的驻点

示例

一个物体的位移为 s(t) = t³ - 6t² + 9t(单位:米,t 的单位:秒)。

求速度

v(t) = s'(t) = 3t² - 12t + 9 = 3(t² - 4t + 3) = 3(t - 1)(t - 3)

求加速度

a(t) = v'(t) = s''(t) = 6t - 12 = 6(t - 2)

分析运动

v(t) = 0 时 t = 1 或 t = 3,即物体在 t = 1s 和 t = 3s 时瞬时静止。
当 0 < t < 1 时 v > 0(前进),1 < t < 3 时 v < 0(后退),t > 3 时 v > 0(再次前进)。
a(t) = 0 时 t = 2,即 t = 2s 时加速度为零(速度达到极小值)。

二阶导数的物理意义

二阶导数 s''(t) 就是加速度。在数学上,二阶导数告诉我们一阶导数(斜率)的变化趋势:s'' > 0 意味着函数"加速上升"(凹向上),s'' < 0 意味着函数"减速上升"(凹向下)。这将在后续章节的函数图像分析中发挥关键作用。

6.6

分段函数的导数

分段函数在每一段内部可以正常求导,但在分段点处需要特别小心。分段点处的导数是否存在,取决于左右导数是否都存在且相等。

f'+(a) = lim(h → 0+) [f(a+h) - f(a)] / h   (右导数)
f'-(a) = lim(h → 0-) [f(a+h) - f(a)] / h   (左导数)
分段点处导数存在的条件

f'(a) 存在   ⇔   f'+(a) 和 f'-(a) 都存在,且 f'+(a) = f'-(a)

注意:即使函数在分段点处连续,导数也未必存在。连续是可导的必要条件,但不是充分条件。

示例

考虑分段函数 f(x) = { x²,当 x ≤ 1;2x - 1,当 x > 1 },求 f'(1)。

第一步:验证连续性

f(1) = 1² = 1,lim(x→1+) f(x) = 2(1) - 1 = 1。左右极限相等且等于函数值,函数在 x = 1 处连续。

第二步:求左导数

f'-(1) = lim(h→0-) [f(1+h) - f(1)] / h = lim(h→0-) [(1+h)² - 1] / h = lim(h→0-) (2h + h²) / h = lim(h→0-) (2 + h) = 2

第三步:求右导数

f'+(1) = lim(h→0+) [f(1+h) - f(1)] / h = lim(h→0+) [2(1+h) - 1 - 1] / h = lim(h→0+) 2h / h = 2

第四步:判断

因为 f'-(1) = f'+(1) = 2,所以 f'(1) = 2 存在。

经典反例:|x| 在 x = 0 处不可导

f(x) = |x| 在 x = 0 处连续,但 f'-(0) = -1,f'+(0) = 1,左右导数不相等,因此 f'(0) 不存在。函数图像在原点处有一个"尖角"——没有唯一的切线。这再次说明:连续不保证可导。

实际应用:导数在工程、经济与人工智能中的应用

电路中电流是电荷的导数:电流 I = dQ/dt 表示单位时间内通过导体截面的电荷量。在电路设计中,通过分析电流的变化率(电荷的二阶导数),工程师可以预测电路的瞬态响应和稳定性。

热传导中的温度梯度:傅里叶热传导定律 q = -k dT/dx 中,热流密度与温度梯度(温度的空间导数)成正比。导热系数 k 决定了热量传递的效率,是建筑保温和散热器设计的核心参数。

经济学中的边际成本与边际收益:边际成本 MC = dC/dq 表示增加一单位产量所增加的成本。企业通过令边际成本等于边际收益(MC = MR)来确定利润最大化的最优产量,这是微观经济学的核心结论。

机器学习中的梯度下降:在训练神经网络时,损失函数 L(θ) 对参数 θ 的导数(梯度)指示了参数更新的方向。梯度下降算法沿着负梯度方向迭代更新参数,使损失函数最小化,这是深度学习的基础优化方法。

EX

例题精讲

例1:求 f(x) = x³ · sin(x) 的导数(乘积法则)

f'(x),其中 f(x) = x³ · sin(x)

第一步:识别两个因子

令 u = x³,v = sin(x)

第二步:分别求导

u' = 3x²,v' = cos(x)

第三步:应用乘积法则

f'(x) = u'v + uv' = 3x² · sin(x) + x³ · cos(x)
f'(x) = 3x² sin(x) + x³ cos(x)
例2:求 f(x) = sin(x)/x 的导数(商法则)

f'(x),其中 f(x) = sin(x)/x(x ≠ 0)

第一步:识别分子和分母

令 u = sin(x)(高),v = x(低)

第二步:分别求导

u' = cos(x),v' = 1

第三步:应用商法则

f'(x) = (u'v - uv') / v² = (cos(x) · x - sin(x) · 1) / x²
f'(x) = (x cos(x) - sin(x)) / x²
例3:求 f(x) = e(3x²) 的导数(链式法则)

f'(x),其中 f(x) = e(3x²)

第一步:识别复合结构

外层函数 f(u) = eu,内层函数 g(x) = 3x²

第二步:分别求导

f'(u) = eu,g'(x) = 6x

第三步:应用链式法则

f'(x) = f'(g(x)) · g'(x) = e(3x²) · 6x
f'(x) = 6x · e(3x²)
例4:求 f(x) = x² - 3x + 1 在 x = 2 处的切线方程

y = f(x) = x² - 3x + 1 在 x = 2 处的切线方程

第一步:求切点坐标

f(2) = 2² - 3(2) + 1 = 4 - 6 + 1 = -1
切点为 (2, -1)

第二步:求导数(斜率)

f'(x) = 2x - 3
f'(2) = 2(2) - 3 = 1
切线斜率 k = 1

第三步:代入点斜式

y - (-1) = 1 · (x - 2)
y + 1 = x - 2
切线方程:y = x - 3
例5:求 f(x) = √(sin(x² + 1)) 的导数(链式法则嵌套)

f'(x),其中 f(x) = √(sin(x² + 1))

第一步:识别多层复合结构

最外层:f(u) = √u = u1/2
中间层:g(v) = sin(v)
最内层:h(x) = x² + 1

第二步:逐层求导

f'(u) = (1/2)u-1/2 = 1/(2√u)
g'(v) = cos(v)
h'(x) = 2x

第三步:链式法则逐层相乘

f'(x) = f'(g(h(x))) · g'(h(x)) · h'(x)
= 1 / (2√(sin(x²+1))) · cos(x²+1) · 2x

第四步:化简

= x · cos(x² + 1) / √(sin(x² + 1))
f'(x) = x cos(x² + 1) / √(sin(x² + 1))
ML

MATLAB 可视化代码

以下 MATLAB 代码帮助你可视化导数的核心概念。运行这些代码,直观感受函数与导数之间的关系。

function_derivative.m — 函数与导数对比图
% 函数与导数对比图:f(x) = x^3 - 3x 与 f'(x) = 3x^2 - 3 % 极值点标注:f'(x) = 0 处对应 f(x) 的极值 x = linspace(-2.5, 2.5, 500); f = x.^3 - 3*x; fp = 3*x.^2 - 3; figure('Position', [100 100 900 550]); % 绘制函数 plot(x, f, 'LineWidth', 2.5, 'Color', [0.77 0.36 0.24]); hold on; % 绘制导数 plot(x, fp, 'LineWidth', 2.5, 'Color', [0.18 0.49 0.43]); % 标注极值点 % f'(x) = 0 => x = -1, x = 1 scatter([-1 1], [2 -2], 100, [0.77 0.36 0.24], 'filled', ... 'MarkerEdgeColor', 'k', 'LineWidth', 1.5); scatter([-1 1], [0 0], 80, [0.18 0.49 0.43], 'filled', ... 'MarkerEdgeColor', 'k', 'LineWidth', 1.5); % 虚线连接极值点 plot([-1 -1], [0 2], 'k--', 'LineWidth', 1); plot([1 1], [0 -2], 'k--', 'LineWidth', 1); % 标注文字 text(-1.4, 2.3, '局部极大值', 'FontSize', 11, 'Color', [0.77 0.36 0.24]); text(0.4, -2.5, '局部极小值', 'FontSize', 11, 'Color', [0.77 0.36 0.24]); text(-1.5, 0.3, "f'(x)=0", 'FontSize', 10, 'Color', [0.18 0.49 0.43]); plot([0 0], [-5 5], 'k:', 'LineWidth', 0.8); xlabel('x'); ylabel('y'); title('f(x) = x^3 - 3x 与 f''(x) = 3x^2 - 3'); legend('f(x) = x^3 - 3x', 'f''(x) = 3x^2 - 3', 'Location', 'best'); grid on; ylim([-5 5]); saveas(gcf, 'ch6_function_derivative.png');
tangent_visualization.m — 切线可视化
% 切线可视化:在 f(x) = x^2 的多个点处画切线 x = linspace(-1, 3, 500); f = x.^2; figure('Position', [100 100 900 550]); % 绘制函数曲线 plot(x, f, 'LineWidth', 3, 'Color', [0.77 0.36 0.24]); hold on; % 在多个点处画切线 tangent_points = [-0.5; 0.5; 1.0; 1.5; 2.0]; colors = [0.18 0.49 0.43; 0.48 0.43 0.41; 0.4 0.4 0.8; 0.8 0.6 0.2; 0.6 0.2 0.6]; for i = 1:length(tangent_points) a = tangent_points(i); fa = a^2; % f(a) fpa = 2*a; % f'(a) = 2x % 切线方程:y = f'(a)(x-a) + f(a) tx = linspace(a-1, a+1, 100); ty = fpa*(tx - a) + fa; plot(tx, ty, '--', 'LineWidth', 1.8, 'Color', colors(i,:)); scatter(a, fa, 80, colors(i,:), 'filled', ... 'MarkerEdgeColor', 'k', 'LineWidth', 1); end xlabel('x'); ylabel('y'); title('f(x) = x^2 在不同点处的切线'); legend('f(x) = x^2', 'Location', 'best'); grid on; ylim([-1 9]); saveas(gcf, 'ch6_tangent_lines.png');
chain_rule_gears.m — 链式法则的齿轮类比图
% 链式法则齿轮类比可视化 % 外层函数 f(u) = sin(u),内层函数 g(x) = x^2 % 复合函数:f(g(x)) = sin(x^2) figure('Position', [100 100 1200 500]); % === 子图1:内层函数 g(x) = x^2 === subplot(1,3,1); x = linspace(-2, 2, 300); g = x.^2; plot(x, g, 'LineWidth', 2.5, 'Color', [0.18 0.49 0.43]); hold on; % 标注 x=1 处的切线斜率 scatter(1, 1, 80, [0.18 0.49 0.43], 'filled', 'MarkerEdgeColor', 'k'); tx = linspace(0, 2, 100); plot(tx, 2*(tx-1)+1, '--', 'Color', 'k', 'LineWidth', 1.5); title('内层: g(x) = x^2'); xlabel('x'); ylabel('u = g(x)'); text(1.2, 0.3, "g'(1)=2", 'FontSize', 11, 'FontWeight', 'bold'); grid on; % === 子图2:外层函数 f(u) = sin(u) === subplot(1,3,2); u = linspace(-1, 4, 300); f = sin(u); plot(u, f, 'LineWidth', 2.5, 'Color', [0.77 0.36 0.24]); hold on; % 标注 u=1 处的切线斜率 scatter(1, sin(1), 80, [0.77 0.36 0.24], 'filled', 'MarkerEdgeColor', 'k'); tu = linspace(0, 2, 100); plot(tu, cos(1)*(tu-1)+sin(1), '--', 'Color', 'k', 'LineWidth', 1.5); title('外层: f(u) = sin(u)'); xlabel('u'); ylabel('y = f(u)'); text(1.3, 0.6, "f'(1)=cos(1)", 'FontSize', 11, 'FontWeight', 'bold'); grid on; % === 子图3:复合函数 f(g(x)) = sin(x^2) === subplot(1,3,3); x = linspace(-2, 2, 300); fg = sin(x.^2); plot(x, fg, 'LineWidth', 2.5, 'Color', [0.4 0.4 0.8]); hold on; % 标注 x=1 处的切线斜率 = f'(g(1)) * g'(1) = cos(1) * 2 scatter(1, sin(1), 80, [0.4 0.4 0.8], 'filled', 'MarkerEdgeColor', 'k'); tx = linspace(0, 2, 100); slope = cos(1)*2; plot(tx, slope*(tx-1)+sin(1), '--', 'Color', 'k', 'LineWidth', 1.5); title('复合: f(g(x)) = sin(x^2)'); xlabel('x'); ylabel('y'); text(0.2, 0.8, "f'(g(1))·g'(1)", 'FontSize', 11, 'FontWeight', 'bold'); text(0.2, 0.5, "= cos(1)·2", 'FontSize', 10); grid on; saveas(gcf, 'ch6_chain_rule_gears.png');
CH

交互式图表

图 6-1:f(x) = x³ - 3x 与其导数 f'(x) = 3x² - 3 — 极值点标注
图 6-3:链式法则 — 复合函数分解示意