多元函数微分学核心概念:偏导、连续、可微与梯度详解
不知道你有没有类似的感觉学完一元函数微分之后觉得自己已经把“导数”这件事拿捏得差不多了——可导必连续求导有规则链式法则也就一个式子的事。结果一进多元函数微分情况完全变了。偏导数存在函数可以不连续两个偏导都存在函数照样可能不可微方向导数存在居然也保证不了什么。那段时间我反复在这些概念之间绕晕后来才慢慢把每一条“反直觉”的结论都亲手算了一遍才真正理顺。这篇内容不打算像教材那样从头讲一遍多元函数微分而是围绕我当年反复出错、反复纠结的几个具体问题展开偏导与连续到底是什么关系、可微的几何意义为什么重要、链式法则怎么做不会漏项、方向导数和梯度在说什么、隐函数求导那个负号到底从哪来。每个问题都会配上能亲手验证的例子适合正在学多元微积分、准备考研数学或者学了一遍但总觉得概念“虚”的读者。1. 偏导存在函数却可能不连续——多元微分里第一条反直觉结论1.1 偏导数到底在算什么先回到偏导数的原始定义。二元函数 (zf(x,y)) 在点 ((x_0,y_0)) 处对 (x) 的偏导数就是固定 (yy_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) 时只用到那些 (yy_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^2y^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看起来“可导”了。再看极限。如果点沿直线 (ykx) 趋近原点则[ f(x,kx)\frac{x\cdot kx}{x^2k^2x^2}\frac{k}{1k^2}. ]这个值与 (k) 有关沿 (yx) 趋近极限是 (1/2)沿 (y2x) 趋近极限是 (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 yf(x)\Delta xo(\Delta x), ]也就是函数在一点附近可以用一条切线来近似误差是 (\Delta x) 的高阶无穷小。多元函数把这个思路推广到“切平面”如果函数 (zf(x,y)) 在点 ((x_0,y_0)) 处可微则全增量[ \Delta zf(x_0\Delta x,y_0\Delta y)-f(x_0,y_0) ]可以写成[ \Delta zf_x(x_0,y_0)\Delta xf_y(x_0,y_0)\Delta yo(\rho), \quad \rho\sqrt{\Delta x^2\Delta y^2}. ]那个 (o(\rho)) 的意思是用线性部分 (f_x\Delta xf_y\Delta y) 去近似真正的增量 (\Delta z)误差项除以 (\rho) 之后会趋于 0。换句话说当观察尺度足够小时曲面几乎就是一张平面这张平面就是切平面。我理解可微时喜欢用一个比喻把地球表面放大到足够小你会觉得它是平的。可微就是这个“放大到足够小之后变成平的”的性质。对一元函数可微和可导是等价的对多元函数可微比偏导存在的门槛高得多因为它要求所有方向上的增量都能被同一个线性表达式统一逼近而不只是坐标轴方向。2.2 四组概念的蕴含关系一张表理清多元函数微分学里围绕“某点”有四组性质偏导存在、连续、可微、偏导连续。它们之间最常考的蕴含关系是前提能推出什么不能推出什么偏导连续可微反过来不行可微连续且偏导存在偏导连续不一定偏导存在什么都不保证连续、可微都未必连续什么都不保证偏导存在、可微都未必也就是说最可靠的性质是“偏导连续”它是可微的充分条件最弱的是“偏导存在”它几乎是个“空头支票”。那有没有函数“连续、偏导存在但不可微”有而且这个例子的计算很能说明问题。取[ f(x,y) \begin{cases} \dfrac{xy}{\sqrt{x^2y^2}}, (x,y)\ne(0,0),\ 0, (x,y)(0,0). \end{cases} ]这个函数在原点是连续的。沿 (ykx) 趋近原点时[ f(x,kx)\frac{kx^2}{|x|\sqrt{1k^2}}|x|\cdot \frac{k}{\sqrt{1k^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 dzf_x\Delta xf_y\Delta y, ]在 (\Delta x,\Delta y) 足够小的时候我们可以用全微分估算函数值的微小变化。举一个我当年算过的例子估算 ((1.02)^{3.05})。把它看成函数 (zx^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 10. ]于是[ (1.02)^{3.05}\approx 1^33\times 0.020\times 0.051.06. ]实际值大概是 (1.0623) 左右误差很小。注意这里选展开点 ((1,3)) 是有讲究的附近的函数值好算、偏导好算而且增量确实是小量。如果 (\Delta x) 有 0.5 这么大线性近似就很容易翻车。2.4 可微但偏导不连续的反例充分条件不是必要条件很多教材会直接说“偏导连续则可微”但不会强调反过来不成立。我补一个例子帮你把这个边界也扎清楚[ f(x,y) \begin{cases} (x^2y^2)\sin\dfrac{1}{\sqrt{x^2y^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})。多元就麻烦了因为中间变量通常不止一个而且每个中间变量又依赖多个自变量。很多同学出错不是因为原理不懂而是因为符号表示不严谨。我见过的最常见错误写法是(zf(u,v))其中 (uu(x,y),vv(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_xf_v\cdot v_x. ]这里的“项数 路径条数”是一个非常实用的核对方式。如果画出依赖图后发现某个变量间接依赖自变量的方式多于一条那公式里就一定不止一项。举个例子。设[ zu^2v\sin u,\quad ux^2y,\quad v\ln(xy). ]求 (\partial z/\partial x)[ \frac{\partial z}{\partial x}(2uv\cos u)\cdot u_xu^2\cdot v_x. ]代入[ \frac{\partial z}{\partial x} \bigl(2x^2y\ln(xy)\cos(x^2y)\bigr)\cdot 2xy \frac{x^4y^2}{xy}. ]这个式子看起来长但每一步都是机械的“路径相乘后相加”。画图之后再写公式基本不会漏项。3.3 二阶混合偏导的漏项重灾区比一阶更折磨人的是二阶偏导尤其是混合偏导。拿一个经典题来说[ zf(xy,xy). ]记 (sxy)(txy)。先求一阶[ \frac{\partial z}{\partial x}f_sy f_t. ]再对 (y) 求偏导这时小心(f_s) 和 (f_t) 都还是 (s,t) 的函数而 (s,t) 又都依赖 (y)[ \frac{\partial^2 z}{\partial x\partial y} f_{ss}\cdot s_yf_{st}\cdot t_y \frac{\partial}{\partial y}(y f_t). ]最后一项用乘法法则[ \frac{\partial}{\partial y}(y f_t) f_ty(f_{ts}\cdot s_yf_{tt}\cdot t_y). ]算出来[ \frac{\partial^2 z}{\partial x\partial y} f_{ss}x f_{st}f_ty(f_{ts}x f_{tt}). ]如果混合偏导连续(f_{st}f_{ts})可以合并成[ \frac{\partial^2 z}{\partial x\partial y} f_{ss}(xy)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_0t\cos\alpha,y_0t\sin\alpha)-f(x_0,y_0)}t. ]如果函数在这一点可微方向导数有一个非常漂亮的公式[ \frac{\partial f}{\partial \mathbf l} f_x\cos\alphaf_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|)当 (\theta0)也就是沿着梯度方向时取得最小值是 (-|\nabla f|)当方向与梯度相反时取得方向与梯度垂直时方向导数为 0。所以“梯度方向是函数增长最快的方向”不是一句鸡汤而是这个公式的直接推论。爬山同理沿着山坡最陡的方向走海拔升得最快沿着等高线走高度不变。而梯度的方向恰好与等高线的切线方向垂直这一点可以这样看在等高线 (f(x,y)c) 上沿曲线的切线方向 ((dx,dy)) 有 (dff_x dxf_y dy0)也就是 (\nabla f\cdot(dx,dy)0)梯度垂直于等高线。4.3 一个更狠的反例所有直线方向导数都存在函数仍可能不连续前面已经说过偏导存在不保证连续这里可以再进一步。考虑[ f(x,y) \begin{cases} \dfrac{x^2y}{x^4y^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\thetat^2\sin^2\theta)} \frac{\cos^2\theta\sin\theta}{t^2\cos^4\theta\sin^2\theta}. ]当 (\sin\theta0) 时这个比值为 0当 (\sin\theta\ne0) 时分母趋于 (\sin^2\theta)比值趋于 (\cos^2\theta/\sin\theta)。所以对任意固定的直线方向方向导数都存在——尽管数值随方向变化。但函数在原点根本不连续沿 (yx^2) 这条抛物线趋近时[ f(x,x^2)\frac{x^4}{x^4x^4}\frac12, ]沿 (x) 轴趋近时却是 0。二重极限不存在函数不连续。这个例子比“偏导存在但不连续”更极端方向导数在所有直线方向上都存在函数照样可以很不连续。它说明方向导数是相当“局部、限定路径”的概念和整体的极限行为之间没有必然联系。顺便提一句这个函数在原点对 (x,y) 的偏导也都是存在的而且都是 0。如果你做题时碰到“方向导数都存在”这样的条件千万别把它当成“函数很好”的信号。5. 隐函数求导的负号陷阱单方程、方程组与二阶导5.1 负号从哪来一次全微分直接推一元隐函数 (F(x,y)0) 确定 (yy(x))求导公式是[ \frac{dy}{dx}-\frac{F_x}{F_y}. ]很多人会背这个公式但记不清负号该放在分子还是分母。其实不必硬背用全微分推一遍就清楚了。对 (F(x,y)0) 两边取全微分[ F_x,dxF_y,dy0. ]如果 (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) 在某点附近能确定隐函数 (zz(x,y)) 的前提是 (F_z\ne0)。在这个条件下把等号两边对 (x) 求偏导注意 (z) 是 (x,y) 的函数[ F_xF_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^2y^2z^2-10)在满足 (z\ne0) 的点附近可以解出 (zz(x,y))并且[ \frac{\partial z}{\partial x}-\frac{2x}{2z}-\frac{x}{z}. ]如果哪道题给的点的 (z0)那这个公式直接不能用——从几何上看球面上 (z0) 的那条大圆上你没法在某个小邻域内把 (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^2x^2}{z^3}. ]如果你求隐函数一阶导之后把 (z) 当成常数直接再求一次那一定会错。写到这里我想到一个检查方法做完二阶导后选一个具体点代入看数值合不合理。比如在球面 (x^2y^2z^21) 上取点 ((1/\sqrt{2},0,1/\sqrt{2}))代入二阶导公式得 (-\frac{1/21/2}{(1/\sqrt{2})^3}-2)再和几何直觉对一下方向合理就不会太离谱。5.4 方程组情形两边求偏导后解线性方程组当隐函数不止一个时比如方程组[ F(x,y,u,v)0,\quad G(x,y,u,v)0 ]确定 (uu(x,y),vv(x,y))就不太适合硬背公式了。做法很机械方程组两边同时对 (x) 求偏导得到[ F_xF_u u_xF_v v_x0, ] [ G_xG_u u_xG_v v_x0. ]这是关于未知量 (u_x,v_x) 的二元线性方程组。只要系数行列式不为 0就能解出 (u_x,v_x)。对 (y) 求偏导时同理。这个做法看起来步骤多但它每一步都是“方程 方程”的线性运算不容易出错而且一旦遇到复杂的隐函数组它就是最可靠的通用解法。6. 做题自查清单我从这些“问题”里沉淀下来的操作习惯6.1 概念判断题的先做哪一步如果你是准备考试概念辨析题一定绕不开。我的流程是固定的先判断连续算二重极限是否等于函数值。二重极限常用方法有沿直线 (ykx) 试探、沿抛物线试探、极坐标代换等但要注意用几条路径只能证明“不连续”要证明连续必须说明所有路径的极限都一致通常需要放缩逼近。再判断偏导是否在用定义算两个单侧极限左右一致才算存在。这一步和“连续”完全无关把它当成独立小题处理。然后判断可微先看偏导存在若存在再验证 (\Delta z-f_x\Delta x-f_y\Delta y) 除以 (\rho) 是否趋于 0。不想每次都算具体增量时可以用“取特殊路径否定它”的技巧令 (\Delta yk\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})如果算出来两边不一致大概率是求导或符号出了问题。第三特殊点代入。把 (y0)、(xy)、或者让中间变量相等把多元问题退化成接近一元的情形看看结果是否符合直觉。这个方法在考场上是很好的快速纠错手段。6.3 不同基础的读者怎么分配精力如果你是刚学多元微积分我建议把精力重点放在概念辨析上把第 1、2 节里的反例亲手算一遍理解“偏导存在”“连续”“可微”三者的独立性。这几个例子不大算一遍收获却很大。如果你在备考需要的是计算稳定性链式法则、隐函数求导、全微分近似这三块必须练到条件反射。把这些题的正确率提上去数学一、数学二里相关小题基本就是送分。如果你是学过之后回来查漏补缺重点可以放在方向导数与梯度、等高线的关系上这两个概念和实际问题比如最优化、梯度下降联系最紧理解到位了后面学起来会顺很多。我个人的习惯是无论题目多简单都先画变量依赖图写完公式再回头数一遍路径条数。这个习惯帮我绕过了绝大多数漏项和符号错误。也把偏导数定义里的极限“两条坐标轴上的信息”与连续性要求的“所有路径上的信息”分开记忆——这两者一旦混淆后面一路都会出错。