多变量链式法则与隐函数求导
上一章用切平面和全微分描述了函数在一点附近怎样变化。本章处理更常见的一种情况:变量不是独立站在原地,而是互相牵连。时间一变,位置变;位置一变,温度、高度、成本或约束量也跟着变。多变量链式法则回答的就是这个问题:变化沿着依赖关系传到最后,应该怎样相加。
这里有两条主线。第一条是显式复合,例如 z=f(x(t),y(t)) 或 z=f(x(u,v),y(u,v))。第二条是隐式关系,例如 F(x,y)=0 或 F(x,y,z)=0,其中某个变量并没有被直接写成函数,但它仍然被方程约束着变化。

参数变化沿路径传递,并通过偏导数组合成 z 对 t 的变化率。
本章的核心习惯是先画清变量依赖,再写导数公式。公式里的每一项都对应一条从起点变量走到目标变量的路径;如果图上有两条路径,结果通常就有两项,不能凭感觉省略。
一条路径上的复合函数
先看最容易抓住的一种复合关系:
z=f(x,y),x=x(t),y=y(t)
这时 t 不是直接进入 f,而是先改变 x 和 y,再通过 f 改变 z。如果 t 增加一点点,x 的小变化约为 dx=x′(t)dt,y 的小变化约为 dy=y′(t)dt。上一章的全微分告诉我们:
dz≈fx(x,y)dx+fy(x,y)dy
把 dx 和 dy 换成由 t 引起的变化,就得到一条路径上的链式法则:
dtdz=∂x∂fdtdx+∂y∂fdtdy
右边的两个部分含义不同。fx 和 fy 描述外层函数对坐标变化的敏感程度;dx/dt 和 dy/dt 描述路径本身怎样移动。链式法则把“外层敏感程度”和“内层移动速度”配对相乘,再把不同通道的贡献相加。
例题:沿圆形路径测高度变化
设
z=f(x,y)=x2+3xy−y2
而
x(t)=cost,y(t)=sint
求 t=π/3 时 dz/dt。
先计算外层偏导数。因为 f(x,y)=x2+3xy−y2,所以 fx=2x+3y,fy=3x−2y。
再计算内层导数。由 x(t)=cost 得 dx/dt=−sint,由 y(t)=sint 得 dy/dt=cost。
在 t=π/3 处,x=1/2,y=3/2,所以 fx=1+33/2,fy=3/2−3。
代入链式法则:
dtdz=(1+233)(−23)+(23−3)(21)=−23−3这就是沿这条路径经过该点时,高度对时间的瞬时变化率。
这里求的是 dz/dt,不是 fx 或 fy。偏导数把另一个坐标暂时固定;沿路径运动时,x 和 y 通常同时变,所以必须把两个通道都算进去。
用依赖图写出所有路径
当变量依赖关系变多时,最容易犯的错不是算错偏导,而是漏掉路径。依赖图能把链式法则变成一件机械但可靠的事。

依赖图就是链式法则的路线图:沿所有从 u 到 z 的路径贡献相加。
如果
z=f(x,y),x=x(u,v),y=y(u,v)
那么 u 可以通过两条路线影响 z:
u→x→z,u→y→z
所以
∂u∂z=∂x∂z∂u∂x+∂y∂z∂u∂y
同理,v 对 z 的影响也沿两条路线相加:
∂v∂z=∂x∂z∂v∂x+∂y∂z∂v∂y
路径法的写法
写复杂链式法则时,可以按下面的顺序做:
把目标变量放在图的上方,把最底层自变量放在图的下方,中间变量放在中间。
只要一个变量直接依赖另一个变量,就画一条箭头。例如 x=x(u,v) 意味着从 u 到 x、从 v 到 x 各有一条箭头。
要求某个底层变量对目标变量的导数时,列出从这个底层变量到目标变量的所有路径。
每条路径上把箭头对应的导数相乘,不同路径之间相加。
路径法的好处是它不依赖记忆。你可以先不急着写公式,只沿图走路:一条路给一项,路上的箭头相乘,几条路相加。
例题:两个底层变量同时进入
设
z=x2y+siny,x=u2+v,y=eu−v2
求 ∂z/∂u。
先写出依赖关系。u 影响 x,也影响 y;x 和 y 又一起影响 z。所以 ∂z/∂u 有两条路径。
计算外层偏导:
zx=2xy,zy=x2+cosy计算内层偏导:
xu=2u,yu=eu按路径相加:
∂u∂z=zxxu+zyyu=2xy(2u)+(x2+cosy)eu最后如有需要,再把 x=u2+v、y=eu−v2 代回去。
矩阵形式:Jacobian 的乘法顺序
依赖图适合看清路径。变量很多时,Jacobian 矩阵更紧凑。设
g(s,t)=(x(s,t),y(s,t),z(s,t))
又设
F(x,y,z)=(p(x,y,z),q(x,y,z))
复合函数是 F(g(s,t))。它的导数矩阵满足:
D(F∘g)(s,t)=DF(g(s,t))Dg(s,t)
注意顺序:外层函数的导数矩阵在左,内层函数的导数矩阵在右。维度也会提醒我们这一点:
[psqsptqt]=[pxqxpyqypzqz]xsyszsxtytzt

维度对齐决定雅可比矩阵的相乘顺序:外层导数矩阵乘以内层导数矩阵,顺序不能反。
矩阵乘法中的每个元素,其实仍然是“路径贡献相加”。例如第一行第一列是
ps=pxxs+pyys+pzzs
这和依赖图里从 s 到 p 的所有路径完全一致。
Jacobian 形式不是新的法则,而是把许多链式法则同时写在一个矩阵里。检查它时先看维度:如果矩阵尺寸无法相乘,变量顺序或外内层顺序一定有问题。
隐函数求导:方程保持不变
有些关系不是 y=f(x),而是写成一个方程:
F(x,y)=0
如果在某个区域内可以把 y 看成 x 的函数,也就是 y=y(x),那么方程沿曲线恒成立:
F(x,y(x))=0
两边对 x 求导,右边仍是 0。左边用链式法则:
Fx+Fydxdy=0
当 Fy=0 时,
dxdy=−FyFx

隐函数曲线 F(x,y)=0 上,梯度 ∇F 与等值线垂直,由 Fx+Fyy′=0 得到局部斜率关系。
这个公式可以用等值线理解。F(x,y)=0 是一条等值线,梯度 ∇F=(Fx,Fy) 垂直于等值线。曲线切向量可以写成 (1,y′),它必须和梯度垂直,所以
Fx+Fyy′=0
这正是上面的隐函数求导公式。
例题:由圆锥曲线求斜率
设曲线由
F(x,y)=x2+xy+y2−3=0
确定。求点 (1,1) 处的 dy/dx。
先确认点在曲线上:12+1⋅1+12−3=0,所以可以在该点讨论曲线斜率。
计算偏导数:
Fx=2x+y,Fy=x+2y在 (1,1) 处,Fx=3,Fy=3。由于 Fy=0,可以把附近曲线看成 y 关于 x 的函数。
代入隐函数求导公式:
dxdy=−FyFx=−1因此曲线在 (1,1) 处的切线斜率是 −1。
公式 dy/dx=−Fx/Fy 有条件。若 Fy=0,不能直接把 y 看成 x 的普通函数;此时可能要改求 dx/dy,或者单独分析局部形状。
三维约束中的偏导数
隐函数求导在三维中同样常见。设
F(x,y,z)=0
如果在某点附近可以把 z 看成 x,y 的函数,即 z=z(x,y),那么
F(x,y,z(x,y))=0
对 x 求偏导时,y 固定,z 会随 x 变:
Fx+Fzzx=0
所以
zx=−FzFx
同理,对 y 求偏导时,x 固定:
zy=−FzFy

由隐式约束 F(x,y,z)=0 推导 z=z(x,y) 的偏导数示意图。
例题:由约束曲面求偏导
设
F(x,y,z)=x2+y2+z2+xyz−8=0
在点 (1,2,1) 附近把 z 看成 x,y 的函数,求 zx 和 zy。
先检查点是否在曲面上:12+22+12+1⋅2⋅1−8=0,所以这个点确实在约束曲面上。
计算三个偏导数:
Fx=2x+yz,Fy=2y+xz,Fz=2z+xy在 (1,2,1) 处,Fx=4,Fy=5,Fz=4。由于 Fz=0,可以在该点附近把 z 看成 x,y 的函数。
代入三维隐函数求导公式:
zx=−44=−1,zy=−45
这个例题先检查了点是否在约束上。隐函数题最容易把“给了一个点”直接当成“点在曲面上”,但导数是在曲面或曲线上讨论的;点若不满足约束,后面的切线、切平面和偏导数都没有落脚处。
在 F(x,y,z)=0 中求 zx 时,不能只写 −Fx。因为 z 对 x 的变化还要乘上 Fz,正确公式是 zx=−Fx/Fz,并且需要 Fz=0。
参数曲面和约束曲线中的导数
链式法则也常出现在参数化对象中。假设空间曲线由
r(t)=(x(t),y(t),z(t))
给出,而温度场是
T=T(x,y,z)
沿曲线运动时,温度变化率为
dtdT=Txdtdx+Tydtdy+Tzdtdz
这可以看成三维版本的一条路径链式法则。以后学习方向导数和梯度时,会把它写得更紧凑:
dtdT=∇T⋅r′(t)
本章先保留展开形式,因为展开形式更容易看出每个坐标通道的贡献。
如果曲线同时受约束,例如 F(x,y,z)=0,那么 r(t) 沿曲面运动时还满足
F(x(t),y(t),z(t))=0
对 t 求导得到
Fxx′(t)+Fyy′(t)+Fzz′(t)=0
这说明曲线的速度向量 (x′(t),y′(t),z′(t)) 与梯度 (Fx,Fy,Fz) 垂直。也就是说,梯度是约束曲面的法向量,沿曲面运动的速度必须落在切平面里。
常见误区和检查方法

常见误区:漏掉依赖路径、混用偏导与全导,以及隐函数求导时忘记除以 Fz。
误区一:只看见一条路径
在 z=f(x(u,v),y(u,v)) 中,u 同时影响 x 和 y。如果只写 zxxu,就默认 u 不影响 y;这通常和题意矛盾。
误区二:把偏导和全导混在一起
∂z/∂x 的意思是只让 x 变、暂时固定其他独立变量。dz/dt 的意思是沿着一条路径,让所有依赖于 t 的量一起变。符号不同,问题也不同。
误区三:隐函数求导前不检查条件
用 dy/dx=−Fx/Fy 前,需要曲线点满足 F(x,y)=0,还需要 Fy=0。用 zx=−Fx/Fz 前,需要点满足 F(x,y,z)=0,还需要 Fz=0。
做题时可以用三问自检:目标变量是谁?起点变量是谁?从起点到目标一共有几条路径?这三问回答清楚,链式法则通常已经写出大半。
练习
练习一
设 z=x2+y2,x=t2,y=sint。求 dz/dt。
由链式法则,
dtdz=2xdtdx+2ydtdy其中 dx/dt=2t,dy/dt=cost,所以
dtdz=2(t2)(2t)+2sintcost=4t3+2sintcost
练习二
设 w=exy,x=u+v,y=u−v。求 ∂w/∂u。
wx=yexy,wy=xexy,且 xu=1,yu=1。因此
∂u∂w=wxxu+wyyu=(x+y)exy代回 x=u+v、y=u−v,得到
∂u∂w=2ueu2−v2
练习三
设 z=f(x,y),x=rcosθ,y=rsinθ。写出 ∂z/∂r 和 ∂z/∂θ。
按两条路径相加:
∂r∂z=fxcosθ+fysinθ并且
∂θ∂z=fx(−rsinθ)+fy(rcosθ)这里的 fx、fy 要在 (x,y)=(rcosθ,rsinθ) 处取值。
练习四
曲线由 F(x,y)=x3+y3−6xy=0 给出。求 dy/dx 的一般表达式。
先求偏导:
Fx=3x2−6y,Fy=3y2−6x若 Fy=0,则
dxdy=−FyFx=−3y2−6x3x2−6y=y2−2x2y−x2
练习五
设 F(x,y,z)=x2+y2+z2−3xyz=0。在满足 Fz=0 的点附近,把 z 看成 x,y 的函数。写出 zx 和 zy。
有
Fx=2x−3yz,Fy=2y−3xz,Fz=2z−3xy所以
zx=−2z−3xy2x−3yz,zy=−2z−3xy2y−3xz这些表达式只在 Fz=0 且点在约束曲面上时可用。
练习六
设 q=f(a,b,c),其中 a=a(s,t),b=b(t),c=c(s)。写出 ∂q/∂s 和 ∂q/∂t。
s 通过 a 和 c 影响 q,不通过 b 影响 q,所以
∂s∂q=faas+fccst 通过 a 和 b 影响 q,不通过 c 影响 q,所以
∂t∂q=faat+fbbt
练习七
设 T(x,y,z)=x2+yz,曲线 r(t)=(t,cost,sint)。求沿曲线的 dT/dt。
Tx=2x,Ty=z,Tz=y。又 x′=1,y′=−sint,z′=cost。因此
dtdT=2x⋅1+z(−sint)+y(cost)代入 x=t,y=cost,z=sint:
dtdT=2t−sin2t+cos2t=2t+cos(2t)
练习八
有人在 F(x,y,z)=0 中求 zx,写出 zx=−Fx。请指出少了什么,并写出正确条件和公式。
少了 Fz 这一项。因为对 x 求偏导时 z=z(x,y) 也随 x 变,所以
Fx+Fzzx=0若点满足 F(x,y,z)=0 且 Fz=0,则
zx=−FzFx