当你解不出 y 的时候
到目前为止,每个函数都来得很整齐:y 被显式地写成 x 的式子,比如 y = x^2 或 y = sin(x),你对右边求导就行。但有很多曲线不肯长成这个样子。圆 x^2 + y^2 = 25 就是经典例子:你想解出 y,得到的是 y = +sqrt(25 - x^2) 或 y = -sqrt(25 - x^2)——两个半圆,而不是一个干净的函数。更糟的曲线,比如 x^3 + y^3 = 6xy,根本就解不开。可这些曲线在每一点上显然都有切线,所以理应有斜率。我们怎样不解出 y 就把它求出来?
关键的想法只是态度上的一点转变。尽管我们从没把 y 写成 x 的公式,但在大多数点附近,曲线确实表现得像某个函数 y(x)——在圆的上半部分取一个点,在局部 y 真的就是 x 的函数。于是我们把 y 当成「y,它暗地里依赖于 x」,再对整个方程求导。让这一切行得通的那一条法则,正是上一阶的链式法则:每当你对一个由 y 搭成的东西求导,都必须乘上 dy/dx,因为 y 本身会随着 x 变化而变化。
隐函数求导的步骤,用圆来演示
我们来求圆 x^2 + y^2 = 25 在点 (3, 4) 处的斜率——这个点确实在圆上,因为 9 + 16 = 25。计划是:对两边都关于 x 求导,记得 y 带着一个隐藏的 dy/dx,然后从得到的方程里解出 dy/dx。
- 把每一项都关于 x 求导。x^2 得到 2x;y^2 得到 2y dy/dx(链式法则);常数 25 得到 0。结果是:2x + 2y dy/dx = 0。
- 用代数解出 dy/dx:把 2x 移过去,再除以 2y,得到 dy/dx = -2x / (2y) = -x / y。注意斜率同时依赖于 x 和 y——这很自然,因为曲线上每个点都有它自己的切线。
- 代入点 (3, 4):dy/dx = -3 / 4。在 (3, 4) 处的切线缓缓地向下倾斜,这与圆的右上方那段图像正好吻合。
x^2 + y^2 = 25
d/dx : 2x + 2y (dy/dx) = 0
dy/dx = -x / y
at (3, 4): dy/dx = -3/4相关变化率:关于时间求导
隐函数求导在现实世界里大显身手,就在这里。常常有两个或更多的量被一个方程绑在一起,而且它们全都随着时间流逝在变化。相关变化率问题问的是:已知一个量变化得有多快,另一个量变化得有多快?技巧和之前一模一样——对那个关系式求导——只不过现在所有东西暗地里依赖的变量是时间 t,于是每一项都带上一个 d/dt 和一个链式法则因子。
拿最受欢迎的例子:一架 10 英尺长的梯子靠在墙上,它的底端以 2 英尺/秒被往外拉离墙。当底端离墙 6 英尺时,顶端正以多快向下滑?墙、地面和梯子组成一个直角三角形,所以由勾股定理 x^2 + y^2 = 10^2,其中 x 是底端距离,y 是顶端高度。x 和 y 都依赖于时间。关于 t 求导得到 2x (dx/dt) + 2y (dy/dt) = 0——和圆是一样的形状,只不过现在 dy/dx 变成了 dy/dt,而且我们还多出一个 dx/dt。
- 写出关系式并关于 t 求导:由 x^2 + y^2 = 100 得到 2x (dx/dt) + 2y (dy/dt) = 0,即 x (dx/dt) + y (dy/dt) = 0。
- 在被问到的那一刻把数字代进去。当 x = 6 时,高度 y = sqrt(100 - 36) = 8,而题目告诉我们 dx/dt = +2(底端向外移动)。代入:6(2) + 8 (dy/dt) = 0。
- 解出那个未知的变化率:8 (dy/dt) = -12,所以 dy/dt = -1.5 英尺/秒。负号表示顶端正以 1.5 英尺/秒向下滑——比底端向外移动得慢,正如直觉所料。
第二个例子,与它们共有的形状
一只正在充气的球形气球用的是同一套机制。它的体积是 V = (4/3) pi r^3,其中 V 和 r 都随时间增长。关于 t 求导——链式法则把 r^3 变成 3r^2 (dr/dt)——得到 dV/dt = 4 pi r^2 (dr/dt)。如果空气以 dV/dt = 100 立方厘米每秒被打进去,那么当半径 r = 5 厘米时,我们可以解 100 = 4 pi (25)(dr/dt),得到 dr/dt = 1 / pi 厘米/秒。气球的表皮在稳定地向外推,但随着球体变大,半径增长得越来越慢,因为同样多的空气现在得去铺一个更大的表面。
退一步就会发现,这两个世界演的是同一出戏。隐函数求导是把一个含 x 和 y 的关系式关于 x 求导,给含 y 的部分附上 dy/dx。相关变化率是把一个含若干个量的关系式关于时间 t 求导,给每个在变化的量附上像 dx/dt 或 dr/dt 这样的变化率。两者的引擎都是老老实实地用链式法则,而最后一步都是纯代数:把你想要的那个导数孤立出来。