不知道你有没有类似的感觉:学完一元函数微分之后,觉得自己已经把“导数”这件事拿捏得差不多了——可导必连续,求导有规则,链式法则也就一个式子的事。结果一进多元函数微分,情况完全变了。偏导数存在,函数可以不连续;两个偏导都存在,函数照样可能不可微;方向导数存在,居然也保证不了什么。那段时间我反复在这些概念之间绕晕,后来才慢慢把每一条“反直觉”的结论都亲手算了一遍,才真正理顺。
这篇内容不打算像教材那样从头讲一遍多元函数微分,而是围绕我当年反复出错、反复纠结的几个具体问题展开:偏导与连续到底是什么关系、可微的几何意义为什么重要、链式法则怎么做不会漏项、方向导数和梯度在说什么、隐函数求导那个负号到底从哪来。每个问题都会配上能亲手验证的例子,适合正在学多元微积分、准备考研数学,或者学了一遍但总觉得概念“虚”的读者。
1. 偏导存在,函数却可能不连续——多元微分里第一条反直觉结论
1.1 偏导数到底在算什么
先回到偏导数的原始定义。二元函数 (z=f(x,y)) 在点 ((x_0,y_0)) 处对 (x) 的偏导数,就是固定 (y=y_0),把函数看成 (x) 的一元函数,然后求导:
[ f_x(x_0,y_0)=\lim_{\Delta x\to 0}\frac{f(x_0+\Delta x,y_0)-f(x_0,y_0)}{\Delta x}. ]
这里的关键在于:求 (f_x) 时,只用到那些 (y=y_0) 的点,也就是过 ((x_0,y_0)) 且平行于 (x) 轴的那一条直线上的函数值。(f_y) 同理,只管平行于 (y) 轴的那条直线。
而函数在 ((x_0,y_0)) 处连续,要求的是:无论点 ((x,y)) 以什么路径趋近 ((x_0,y_0)),(f(x,y)) 的极限都等于 (f(x_0,y_0))。这里要用到的是经过该点的所有路径上的函数值。
一个是“两条直线上的值”,一个是“所有路径上的值”,信息量完全不对等。所以偏导存在推不出连续,从定义层面就应该有所警觉——只不过一元函数“可导必连续”的印象太深刻,很多初学者会下意识地把这个结论平移过来。
1.2 一个让“可导必连续”失效的经典反例
看这个函数:
[ f(x,y)= \begin{cases} \dfrac{xy}{x^2+y^2}, & (x,y)\ne(0,0),\ 0, & (x,y)=(0,0). \end{cases} ]
先算偏导。在原点:
[ f_x(0,0)=\lim_{h\to 0}\frac{f(h,0)-f(0,0)}h=\lim_{h\to 0}\frac{0}{h}=0, ]
同理 (f_y(0,0)=0)。两个偏导都存在,数值都是 0,看起来“可导”了。
再看极限。如果点沿直线 (y=kx) 趋近原点,则
[ f(x,kx)=\frac{x\cdot kx}{x^2+k^2x^2}=\frac{k}{1+k^2}. ]
这个值与 (k) 有关:沿 (y=x) 趋近,极限是 (1/2);沿 (y=2x) 趋近,极限是 (2/5)。不同的直线给出不同的极限,说明二重极限 (\lim_{(x,y)\to(0,0)}f(x,y)) 根本不存在。函数都不连续,偏导数却照样存在。
这个例子可以再多想一步:偏导存在,而且两个偏导还都是 0,等于说沿着两条坐标轴方向函数在原点的“增幅”都是 0。可函数在其他方向上的取值可以很“野”,完全不理会这两条轴。所以以后但凡有人说“偏导都求出来了,函数应该还行吧”,你就可以拿这个例子回应他。
1.3 反过来:连续时偏导也可能不存在
偏导存在推不出连续,那连续能不能推出偏导存在?也推不出。最朴素的例子是
[ f(x,y)=|x|+|y|. ]
这个函数在 ((0,0)) 处连续是显然的,因为 (|x|+|y|\to 0)。但
[ f_x(0,0)=\lim_{h\to 0}\frac{|h|-0}{h} ]
这个极限不存在:从右边趋近是 (1),从左边趋近是 (-1)。所以连续函数完全可能没有偏导。
到这里,“偏导存在”和“连续”这两个概念在多元函数里就是彼此独立的两件事。它们之间没有一元函数里那种“可导必连续”的包含关系。这也是多元微分概念题里最常挖的坑之一。想判断函数在某点是否连续,老老实实算二重极限;想判断偏导是否存在,老老实实套偏导数的极限定义,把两个问题分开处理,不要用其中一件事去推断另一件。
2. 可微的本质是什么——局部线性化的思路与四条性质关系
2.1 从切平面切入:全微分在做什么
一元函数可微,说的是
[ \Delta y=f'(x)\Delta x+o(\Delta x), ]
也就是函数在一点附近可以用一条切线来近似,误差是 (\Delta x) 的高阶无穷小。多元函数把这个思路推广到“切平面”:如果函数 (z=f(x,y)) 在点 ((x_0,y_0)) 处可微,则全增量
[ \Delta z=f(x_0+\Delta x,y_0+\Delta y)-f(x_0,y_0) ]
可以写成
[ \Delta z=f_x(x_0,y_0)\Delta x+f_y(x_0,y_0)\Delta y+o(\rho), \quad \rho=\sqrt{\Delta x^2+\Delta y^2}. ]
那个 (o(\rho)) 的意思是:用线性部分 (f_x\Delta x+f_y\Delta y) 去近似真正的增量 (\Delta z),误差项除以 (\rho) 之后会趋于 0。换句话说,当观察尺度足够小时,曲面几乎就是一张平面,这张平面就是切平面。
我理解可微时喜欢用一个比喻:把地球表面放大到足够小,你会觉得它是平的。可微就是这个“放大到足够小之后变成平的”的性质。对一元函数,可微和可导是等价的;对多元函数,可微比偏导存在的门槛高得多,因为它要求所有方向上的增量都能被同一个线性表达式统一逼近,而不只是坐标轴方向。
2.2 四组概念的蕴含关系:一张表理清
多元函数微分学里围绕“某点”有四组性质:偏导存在、连续、可微、偏导连续。它们之间最常考的蕴含关系是:
| 前提 | 能推出什么 | 不能推出什么 |
|---|---|---|
| 偏导连续 | 可微 | 反过来不行 |
| 可微 | 连续,且偏导存在 | 偏导连续不一定 |
| 偏导存在 | 什么都不保证 | 连续、可微都未必 |
| 连续 | 什么都不保证 | 偏导存在、可微都未必 |
也就是说,最可靠的性质是“偏导连续”,它是可微的充分条件;最弱的是“偏导存在”,它几乎是个“空头支票”。
那有没有函数“连续、偏导存在,但不可微”?有,而且这个例子的计算很能说明问题。取
[ f(x,y)= \begin{cases} \dfrac{xy}{\sqrt{x^2+y^2}}, & (x,y)\ne(0,0),\ 0, & (x,y)=(0,0). \end{cases} ]
这个函数在原点是连续的。沿 (y=kx) 趋近原点时,
[ f(x,kx)=\frac{kx^2}{|x|\sqrt{1+k^2}}=|x|\cdot \frac{k}{\sqrt{1+k^2}}\to 0. ]
而且 (f_x(0,0)=0),(f_y(0,0)=0),偏导都在。但按可微定义检查:
[ \frac{\Delta z-f_x(0,0)\Delta x-f_y(0,0)\Delta y}{\rho} =\frac{\Delta x\Delta y}{\rho^2}. ]
取 (\Delta x=\Delta y=\rho\cos\theta=\rho\sin\theta=\rho/\sqrt{2}),这个比值为 (1/2),根本不趋于 0。所以它连续、偏导存在,却不可微。这个例子值得亲手算一遍,它会让你彻底明白可微的“线性逼近”要求到底有多严格。
2.3 全微分的一个实用场景:近似计算
可微不只是概念题里的考点,它最直接的应用是近似计算。既然
[ \Delta z\approx dz=f_x\Delta x+f_y\Delta y, ]
在 (\Delta x,\Delta y) 足够小的时候,我们可以用全微分估算函数值的微小变化。
举一个我当年算过的例子:估算 ((1.02)^{3.05})。把它看成函数 (z=x^y),在 ((1,3)) 处展开。(x^y) 的两个一阶偏导分别是 (y x^{y-1}) 和 (x^y\ln x),所以
[ f_x(1,3)=3,\quad f_y(1,3)=1^3\ln 1=0. ]
于是
[ (1.02)^{3.05}\approx 1^3+3\times 0.02+0\times 0.05=1.06. ]
实际值大概是 (1.0623) 左右,误差很小。注意这里选展开点 ((1,3)) 是有讲究的:附近的函数值好算、偏导好算,而且增量确实是小量。如果 (\Delta x) 有 0.5 这么大,线性近似就很容易翻车。
2.4 可微但偏导不连续的反例:充分条件不是必要条件
很多教材会直接说“偏导连续则可微”,但不会强调反过来不成立。我补一个例子,帮你把这个边界也扎清楚:
[ f(x,y)= \begin{cases} (x^2+y^2)\sin\dfrac{1}{\sqrt{x^2+y^2}}, & (x,y)\ne(0,0),\ 0, & (x,y)=(0,0). \end{cases} ]
在原点,(|\Delta z|/\rho=\rho|\sin(1/\rho)|\le\rho\to 0),所以可微,且全微分就是 0。但这个函数的偏导数在原点附近是震荡的。比如在 (x) 轴正半轴附近,算 (f_x) 会出现 (\cos(1/|x|)) 这样的震荡项,极限不存在,所以偏导在原点不连续。
这个例子想说明一件事:“偏导连续”是可微的充分条件,不是必要条件。考试里如果有人把“可微”和“偏导连续”划等号,那一定是错的。
3. 链式法则的符号地狱:变量依赖图、路径求和与高阶偏导
3.1 为什么多元链式法则容易错
一元链式法则只有一个式子:(\frac{dz}{dx}=\frac{dz}{du}\frac{du}{dx})。多元就麻烦了,因为中间变量通常不止一个,而且每个中间变量又依赖多个自变量。很多同学出错不是因为原理不懂,而是因为符号表示不严谨。
我见过的最常见错误写法是:(z=f(u,v)),其中 (u=u(x,y),v=v(x,y)),求 (\partial z/\partial x) 时写成一串 (\frac{\partial f}{\partial u}\frac{\partial u}{\partial x}+\frac{\partial f}{\partial v}\frac{\partial v}{\partial x}),但书写时不区分 (f_u) 和 (f_x),写着写着就把符号弄混了。
我的建议很简单:用 (f_u)、(f_v) 表示对中间变量的偏导,不要写 (\partial f/\partial u)。因为 (u,v) 本身是 (x,y) 的函数,(\partial f/\partial u) 和 (\partial f/\partial x) 在记号上很容易混淆,而 (f_u) 这种下标符号清楚得多。
3.2 变量依赖图法:从 z 到 x 的每一条路径都是一项
链式法则的本质可以用一张依赖关系图画出来:(z) 依赖 (u,v),(u,v) 又分别依赖 (x,y)。求 (\partial z/\partial x) 时,就是找所有从 (z) 到 (x) 的路径,每条路径上的导数相乘,然后把所有路径加起来。
[ \frac{\partial z}{\partial x}=f_u\cdot u_x+f_v\cdot v_x. ]
这里的“项数 = 路径条数”是一个非常实用的核对方式。如果画出依赖图后发现某个变量间接依赖自变量的方式多于一条,那公式里就一定不止一项。
举个例子。设
[ z=u^2v+\sin u,\quad u=x^2y,\quad v=\ln(x+y). ]
求 (\partial z/\partial x):
[ \frac{\partial z}{\partial x}=(2uv+\cos u)\cdot u_x+u^2\cdot v_x. ]
代入:
[ \frac{\partial z}{\partial x} =\bigl(2x^2y\ln(x+y)+\cos(x^2y)\bigr)\cdot 2xy +\frac{x^4y^2}{x+y}. ]
这个式子看起来长,但每一步都是机械的“路径相乘后相加”。画图之后再写公式,基本不会漏项。
3.3 二阶混合偏导的漏项重灾区
比一阶更折磨人的是二阶偏导,尤其是混合偏导。拿一个经典题来说:
[ z=f(x+y,xy). ]
记 (s=x+y),(t=xy)。先求一阶:
[ \frac{\partial z}{\partial x}=f_s+y f_t. ]
再对 (y) 求偏导,这时小心,(f_s) 和 (f_t) 都还是 (s,t) 的函数,而 (s,t) 又都依赖 (y):
[ \frac{\partial^2 z}{\partial x\partial y} =f_{ss}\cdot s_y+f_{st}\cdot t_y +\frac{\partial}{\partial y}(y f_t). ]
最后一项用乘法法则:
[ \frac{\partial}{\partial y}(y f_t) =f_t+y(f_{ts}\cdot s_y+f_{tt}\cdot t_y). ]
算出来
[ \frac{\partial^2 z}{\partial x\partial y} =f_{ss}+x f_{st}+f_t+y(f_{ts}+x f_{tt}). ]
如果混合偏导连续,(f_{st}=f_{ts}),可以合并成
[ \frac{\partial^2 z}{\partial x\partial y} =f_{ss}+(x+y)f_{st}+xy f_{tt}+f_t. ]
注意,很多同学做这题时会漏掉最后那个孤零零的 (f_t)。它来自 (y f_t) 这个乘积项本身,不画依赖图、不写乘法法则,很容易就丢了。我第一次做这题时也漏了,后来用“每一项都必须写清楚对谁求导”的方式重算,才把这个坑填上。
3.4 我总结的链式求导三段式
现在我做链式法则题,基本按这三个步骤走,基本再没出过错:
- 先画变量依赖图,标清楚每个中间变量依赖哪些自变量;
- 公式按“路径条数=项数”书写,每个因子都用下标符号标明是对哪个变量求导;
- 求二阶导时,先对一阶导表达式整体求导,遇到乘积就老老实实用乘法法则,不要跳步。
整个过程像是填表,虽然慢,但正确率极高。特别是复习备考阶段,慢一点换稳定得分,很划算。
4. 方向导数与梯度:为什么沿着梯度方向函数上升最快
4.1 方向导数的定义与公式
偏导数只刻画了函数沿坐标轴方向的变化率,方向导数则更一般:考察从一点出发、沿任意单位方向向量 (\mathbf l=(\cos\alpha,\cos\beta)) 的变化率。
[ \frac{\partial f}{\partial \mathbf l} =\lim_{t\to0^+}\frac{f(x_0+t\cos\alpha,y_0+t\sin\alpha)-f(x_0,y_0)}t. ]
如果函数在这一点可微,方向导数有一个非常漂亮的公式:
[ \frac{\partial f}{\partial \mathbf l} =f_x\cos\alpha+f_y\cos\beta. ]
也就是说,方向导数等于偏导数向量与单位方向的内积。这个公式把“无穷多个方向”压缩成了一个简洁的表达式,也是理解梯度的钥匙。
4.2 从公式看最速上升方向
记梯度向量
[ \nabla f=(f_x,f_y), ]
那么方向导数就是 (\nabla f\cdot \mathbf l)。设 (\theta) 为梯度与方向 (\mathbf l) 的夹角,因为 (\mathbf l) 是单位向量,有
[ \frac{\partial f}{\partial \mathbf l}=|\nabla f|\cos\theta. ]
这个式子太直白了:方向导数的最大值是 (|\nabla f|),当 (\theta=0),也就是沿着梯度方向时取得;最小值是 (-|\nabla f|),当方向与梯度相反时取得;方向与梯度垂直时,方向导数为 0。
所以“梯度方向是函数增长最快的方向”不是一句鸡汤,而是这个公式的直接推论。爬山同理:沿着山坡最陡的方向走,海拔升得最快;沿着等高线走,高度不变。而梯度的方向恰好与等高线的切线方向垂直,这一点可以这样看:在等高线 (f(x,y)=c) 上,沿曲线的切线方向 ((dx,dy)) 有 (df=f_x dx+f_y dy=0),也就是 (\nabla f\cdot(dx,dy)=0),梯度垂直于等高线。
4.3 一个更狠的反例:所有直线方向导数都存在,函数仍可能不连续
前面已经说过偏导存在不保证连续,这里可以再进一步。
考虑
[ f(x,y)= \begin{cases} \dfrac{x^2y}{x^4+y^2}, & (x,y)\ne(0,0),\ 0, & (x,y)=(0,0). \end{cases} ]
在原点沿任意直线方向 ((t\cos\theta,t\sin\theta)) 求方向导数:
[ \frac{f(t\cos\theta,t\sin\theta)-f(0,0)}{t} =\frac{t^3\cos^2\theta\sin\theta}{t(t^4\cos^4\theta+t^2\sin^2\theta)} =\frac{\cos^2\theta\sin\theta}{t^2\cos^4\theta+\sin^2\theta}. ]
当 (\sin\theta=0) 时,这个比值为 0;当 (\sin\theta\ne0) 时,分母趋于 (\sin^2\theta),比值趋于 (\cos^2\theta/\sin\theta)。所以对任意固定的直线方向,方向导数都存在——尽管数值随方向变化。
但函数在原点根本不连续:沿 (y=x^2) 这条抛物线趋近时,
[ f(x,x^2)=\frac{x^4}{x^4+x^4}=\frac12, ]
沿 (x) 轴趋近时却是 0。二重极限不存在,函数不连续。
这个例子比“偏导存在但不连续”更极端:方向导数在所有直线方向上都存在,函数照样可以很不连续。它说明方向导数是相当“局部、限定路径”的概念,和整体的极限行为之间没有必然联系。
顺便提一句,这个函数在原点对 (x,y) 的偏导也都是存在的,而且都是 0。如果你做题时碰到“方向导数都存在”这样的条件,千万别把它当成“函数很好”的信号。
5. 隐函数求导的负号陷阱:单方程、方程组与二阶导
5.1 负号从哪来:一次全微分直接推
一元隐函数 (F(x,y)=0) 确定 (y=y(x)),求导公式是
[ \frac{dy}{dx}=-\frac{F_x}{F_y}. ]
很多人会背这个公式,但记不清负号该放在分子还是分母。其实不必硬背,用全微分推一遍就清楚了。
对 (F(x,y)=0) 两边取全微分:
[ F_x,dx+F_y,dy=0. ]
如果 (F_y\ne0),就得到
[ \frac{dy}{dx}=-\frac{F_x}{F_y}. ]
负号来自移项。用这个方法现场推,比记忆要可靠得多。
5.2 多元隐函数:(\partial z/\partial x=-F_x/F_z) 的使用条件
三元情形:方程 (F(x,y,z)=0) 在某点附近能确定隐函数 (z=z(x,y)) 的前提是 (F_z\ne0)。在这个条件下,把等号两边对 (x) 求偏导,注意 (z) 是 (x,y) 的函数:
[ F_x+F_z\cdot\frac{\partial z}{\partial x}=0, ]
所以
[ \frac{\partial z}{\partial x}=-\frac{F_x}{F_z}. ]
用 (y) 求时同理,(\partial z/\partial y=-F_y/F_z)。
举个例子。(F(x,y,z)=x^2+y^2+z^2-1=0),在满足 (z\ne0) 的点附近,可以解出 (z=z(x,y)),并且
[ \frac{\partial z}{\partial x}=-\frac{2x}{2z}=-\frac{x}{z}. ]
如果哪道题给的点的 (z=0),那这个公式直接不能用——从几何上看,球面上 (z=0) 的那条大圆上,你没法在某个小邻域内把 (z) 表示成 (x,y) 的连续单值函数。这个“使用条件”在考概念时很爱考。
5.3 二阶导:别忘了 z 是 x,y 的函数
求二阶导是隐函数求导的另一处失分高发地。接着上面的例子求 (\partial^2 z/\partial x^2)。
已知 (\frac{\partial z}{\partial x}=-\frac{x}{z}),继续对 (x) 求偏导时,右边分母里的 (z) 本身是 (x) 的函数,所以要用法则:
[ \frac{\partial^2 z}{\partial x^2} =-\frac{z-x\cdot\frac{\partial z}{\partial x}}{z^2} =-\frac{z+\dfrac{x^2}{z}}{z^2} =-\frac{z^2+x^2}{z^3}. ]
如果你求隐函数一阶导之后,把 (z) 当成常数直接再求一次,那一定会错。写到这里我想到一个检查方法:做完二阶导后,选一个具体点代入,看数值合不合理。比如在球面 (x^2+y^2+z^2=1) 上取点 ((1/\sqrt{2},0,1/\sqrt{2})),代入二阶导公式得 (-\frac{1/2+1/2}{(1/\sqrt{2})^3}=-2),再和几何直觉对一下,方向合理就不会太离谱。
5.4 方程组情形:两边求偏导后解线性方程组
当隐函数不止一个时,比如方程组
[ F(x,y,u,v)=0,\quad G(x,y,u,v)=0 ]
确定 (u=u(x,y),v=v(x,y)),就不太适合硬背公式了。做法很机械:方程组两边同时对 (x) 求偏导,得到
[ F_x+F_u u_x+F_v v_x=0, ] [ G_x+G_u u_x+G_v v_x=0. ]
这是关于未知量 (u_x,v_x) 的二元线性方程组。只要系数行列式不为 0,就能解出 (u_x,v_x)。对 (y) 求偏导时同理。
这个做法看起来步骤多,但它每一步都是“方程 = 方程”的线性运算,不容易出错,而且一旦遇到复杂的隐函数组,它就是最可靠的通用解法。
6. 做题自查清单:我从这些“问题”里沉淀下来的操作习惯
6.1 概念判断题的先做哪一步
如果你是准备考试,概念辨析题一定绕不开。我的流程是固定的:
先判断连续:算二重极限是否等于函数值。二重极限常用方法有沿直线 (y=kx) 试探、沿抛物线试探、极坐标代换等,但要注意,用几条路径只能证明“不连续”,要证明连续必须说明所有路径的极限都一致,通常需要放缩逼近。
再判断偏导是否在:用定义算两个单侧极限,左右一致才算存在。这一步和“连续”完全无关,把它当成独立小题处理。
然后判断可微:先看偏导存在;若存在,再验证 (\Delta z-f_x\Delta x-f_y\Delta y) 除以 (\rho) 是否趋于 0。不想每次都算具体增量时,可以用“取特殊路径否定它”的技巧:令 (\Delta y=k\Delta x),看比值是否在某些 (k) 下不为 0。只要发现一条路径不对,就判定不可微。
最后判断偏导连续:求出分段函数在非该点的偏导表达式,再验证极限是否等于该点的偏导值。
这四步每一步都有明确工具,比凭感觉“这函数挺光滑应该没问题”靠谱得多。
6.2 计算题的三个验算手段
计算题做完,很多人不知道该怎么检查。我自己常用三个方法:
第一,用变量依赖图核对项数。如果链式公式里的项数比依赖图中的路径条数少,那肯定漏项了。
第二,做对称性检查。如果函数对 (x,y) 是对称的,比如 (f(x,y)=f(y,x)),那么在点 ((x_0,y_0)) 处把 (x,y) 互换,(f_x) 和 (f_y) 的表达式也应该能互换。二阶混合导同理,满足连续性条件时应有 (f_{xy}=f_{yx}),如果算出来两边不一致,大概率是求导或符号出了问题。
第三,特殊点代入。把 (y=0)、(x=y)、或者让中间变量相等,把多元问题退化成接近一元的情形,看看结果是否符合直觉。这个方法在考场上是很好的快速纠错手段。
6.3 不同基础的读者怎么分配精力
如果你是刚学多元微积分,我建议把精力重点放在概念辨析上:把第 1、2 节里的反例亲手算一遍,理解“偏导存在”“连续”“可微”三者的独立性。这几个例子不大,算一遍收获却很大。
如果你在备考,需要的是计算稳定性:链式法则、隐函数求导、全微分近似这三块必须练到条件反射。把这些题的正确率提上去,数学一、数学二里相关小题基本就是送分。
如果你是学过之后回来查漏补缺,重点可以放在方向导数与梯度、等高线的关系上,这两个概念和实际问题(比如最优化、梯度下降)联系最紧,理解到位了后面学起来会顺很多。
我个人的习惯是:无论题目多简单,都先画变量依赖图,写完公式再回头数一遍路径条数。这个习惯帮我绕过了绝大多数漏项和符号错误。也把偏导数定义里的极限“两条坐标轴上的信息”与连续性要求的“所有路径上的信息”分开记忆——这两者一旦混淆,后面一路都会出错。