ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

全微分、偏导数与导数:可微性判定、梯度与误差传播解析

全微分、偏导数与导数:可微性判定、梯度与误差传播解析 1. 先把三个概念摆到同一张桌子上很多人在学高等数学或者工程数学的时候都会在“全微分、导数、偏导数”这几个词上卡住。卡住的原因往往不是公式难而是这几个词长得太像老师讲的时候又习惯性地一带而过导致脑子里始终是糊的。我自己当年也是这样书本上写得明明白白合上书就分不清谁是谁。我后来发现想要真正把这三个概念区分开最有效的办法不是死记定义而是先把它们各自“回答什么问题”想清楚。导数回答的是“一个变量变化时结果变化得有多快”偏导数回答的是“在好几个变量里只让其中一个动结果变化得有多快”全微分回答的是“所有变量一起动一点点结果总共变了多少”。三个问题层层递进从单变量到多变量从局部到整体。这套内容最适合两类人看一类是正在学高数、被这几个概念绕晕的在校学生另一类是做工程计算、数据分析、物理建模需要用到多元函数近似和误差估计的从业者。前者需要把概念理清后者需要把它用起来。这篇文章我打算把定义、几何意义、判定方法、易错点、实际应用场景全部串一遍尽量用生活化的场景去解释让你看完能自己动手算也能在别人问起的时候讲得清楚。关键词我在开头就点一下全微分、导数、偏导数、方向导数、梯度、可微性判定。这些词在后面的章节里会反复出现但不会堆砌而是跟着具体例子走。下面我按“从一到多、从局部到整体”的顺序来拆。2. 导数一切概念的起点2.1 导数的定义长什么样一元函数的导数定义大家应该都背过。函数 y f(x) 在点 x₀ 处的导数是这么一个极限f(x₀) lim [f(x₀ Δx) - f(x₀)] / Δx (Δx → 0)这个式子在做的事情很简单给自变量加一点点增量 Δx看看函数值变了多少然后把“变化量之比”取极限。这个极限存在就说 f 在 x₀ 处可导极限值就是导数值。几何上它对应曲线在这一点处切线的斜率。物理上如果 f 是位移关于时间的函数导数就是瞬时速度如果 f 是电量关于时间的函数导数就是瞬时电流。这些例子都指向同一个内核——导数衡量的是“一个量相对于另一个量的瞬时变化率”。但这里有一个经常被忽略的点导数的本质不是“斜率”这个几何图像也不是“速度”这个物理量而是一个线性逼近。什么意思当 Δx 很小时函数值的变化可以近似写成f(x₀ Δx) - f(x₀) ≈ f(x₀) · Δx误差是 Δx 的高阶无穷小。也就是说在局部范围内任何可导函数都可以用一条直线去近似。这条直线就是切线。这才是导数真正的身份它是把非线性问题在局部“线性化”的工具。把这个认识建立起来后面理解偏导数和全微分会顺很多。2.2 为什么要把导数看成线性映射我建议你在心里把导数的定义重新翻译一遍导数 f(x₀) 是一个数它把“自变量的小增量 Δx”映射成“函数值的小增量”。写成映射的形式就是 Δx ↦ f(x₀)·Δx。这是一维情形下的线性映射只不过一维的线性映射就是一个乘法。为什么要强调这一点因为到了多元函数导数的角色会被拆成两部分偏导数负责描述“各个方向的单独变化率”全微分负责描述“整体上的线性映射”。如果你在一元阶段就把导数理解成“线性逼近的系数”那到多元阶段你会发现全微分就是导数概念的自然推广而不是一个凭空冒出来的新东西。我在教别人的时候经常举一个例子。假设你手里有一台机器输入一个数 x输出一个数 f(x)。现在输入从 x₀ 变成 x₀ Δx你想知道输出大概变成多少。最快的方法就是查“这台机器在 x₀ 附近的灵敏度”这个灵敏度就是 f(x₀)。乘一下就得到了输出变化量的估计值。这个“灵敏度”的说法在多变量情形下会变得更丰富因为每个输入变量的灵敏度可能都不一样。提示导数的线性逼近观点是理解全微分的钥匙。如果你在多元部分觉得全微分的定义很突兀多半是因为一元的这一层没打通建议回头把“Δy ≈ f(x)·Δx”这个式子多琢磨几遍。3. 偏导数把多维问题拆成一维3.1 偏导数的定义与操作进入多元函数后麻烦来了。比如 z f(x, y)现在有两个自变量。如果我想问“变化率”得先问清楚是“谁相对于谁的变化率”。因为 x 和 y 都可能动笼统地问“函数变化多快”是没有意义的。偏导数就是在这个背景下被定义出来的。它的做法很“粗暴”把其他变量全部当成常数只留一个变量在动然后套用一元导数的定义。函数 f(x, y) 对 x 的偏导数记作 ∂f/∂x 或 f_x定义是∂f/∂x (x₀, y₀) lim [f(x₀ Δx, y₀) - f(x₀, y₀)] / Δx (Δx → 0)对 y 的偏导数完全对称把 x 固定住只让 y 动。实际操作上求 ∂f/∂x 的时候你就把 y 当作一个普通的常数正常求导就行。比如 f(x, y) x²y 3xy²那么∂f/∂x 2xy 3y² ∂f/∂y x² 6xy第一项里 y 被当常数x² 求导得 2x所以是 2xy第二项 3xy² 对 x 求导y² 当常数得 3y²。对 y 求偏导时同理x 当常数。几何上偏导数 ∂f/∂x 描述的是在曲面 z f(x, y) 上沿着平行于 x 轴的方向切开切出来的那条曲线在这一点处的斜率。你可以想象一块起伏的地形∂f/∂x 就是“站在某个点面朝正东方向脚下坡的陡峭程度”而 ∂f/∂y 是“面朝正北方向的陡峭程度”。注意这两个方向是人为指定的换一个方向陡峭程度就变了这就引出了后面的方向导数。3.2 偏导数存在不代表函数连续这是多元微积分里最反直觉的一件事也是最容易考、最容易错的地方。在一元函数里可导一定连续这是铁律。但在多元函数里偏导数存在推不出连续。为什么会这样因为偏导数只考察了两个特定方向上的行为——沿 x 轴方向和沿 y 轴方向。函数在这两个方向上都表现良好不代表它在其他方向上也好。它可以在这两个方向上平滑却在斜方向上“炸掉”。举个经典例子f(x, y) xy / (x² y²)当 (x, y) ≠ (0, 0) f(0, 0) 0先算偏导数。在原点处∂f/∂x (0, 0) lim [f(Δx, 0) - f(0, 0)] / Δx而 f(Δx, 0) 0因为分子里有 y 0所以极限是 0。同理 ∂f/∂y (0, 0) 0。两个偏导数都存在而且是 0。但这个函数在原点连续吗沿 y x 这条路径趋近原点f(x, x) x² / (2x²) 1/2。沿 y 0 趋近f 0。不同路径极限不同所以在原点根本不连续。这个例子说明偏导数只是两个切片的斜率它管不了整个邻域的行为。我在第一次遇到这个例子的时候很不适应觉得“都算出来导数了怎么还能不连续”。后来才想明白偏导数的“偏”字本身就暗示了它的局限——它只看偏了的一个方向视野是窄的。注意做题或者建模时如果你只用偏导数去判断函数的局部行为一定要意识到这只覆盖了两个坐标轴方向。斜方向、曲线路径上的行为必须另外验证。这是多元函数里最常见的思维陷阱之一。3.3 高阶偏导数与混合偏导相等的条件偏导数自己也可以再求偏导这就得到高阶偏导数。记号是∂²f/∂x²、∂²f/∂y²、∂²f/∂x∂y、∂²f/∂y∂x其中 ∂²f/∂x∂y 意思是先对 x 求偏导再对 y 求偏导∂²f/∂y∂x 顺序反过来。一个很自然的疑问是这两个混合偏导数一定相等吗答案是不一定但在大多数常见条件下相等。这个条件写出来是如果 f 的二阶混合偏导数在某点附近存在并且在该点连续那么 ∂²f/∂x∂y ∂²f/∂y∂x。这就是教材上说的“混合偏导数相等定理”。为什么需要连续性因为混合偏导本质上是在比较“先沿 x 再沿 y”和“先沿 y 再沿 x”两种路径的差异。如果函数足够光滑两种路径的差异会消失如果函数不够光滑差异就会留下来。工程里遇到的函数基本都是初等函数在定义域内部连续所以可以直接认为混合偏导相等不用每次验证。但在数学分析的严格计算里这个条件该提还是要提。4. 全微分衡量整体变化的那把尺4.1 可微的真正定义现在到了核心部分。偏导数回答的是“单个方向的变化率”但如果所有变量同时动一点点函数总共变了多少这个问题的答案不是简单把各个偏导数相加而是要引出全微分。先看定义。函数 z f(x, y) 在点 (x, y₀) 处可微意思是存在两个常数 A 和 B使得Δz f(x Δx, y₀ Δy) - f(x₀, y₀) A·Δx B·Δy o(√(Δx² Δy²))这里的 o(·) 表示高阶无穷小也就是当 (Δx, Δy) 趋向原点时它比 √(Δx² Δy²) 缩得更快。如果这样的 A、B 存在就称 f 在该点可微并把 A·Δx B·Δy 称为全微分记作 dz。可以证明此时 A 就是 ∂f/∂xB 就是 ∂f/∂y所以dz ∂f/∂x · dx ∂f/∂y · dy这个式子就是全微分的计算公式。它看起来像是把两个偏导数“拼”在一起而且用的还是加号很多人第一眼会觉得这是不是太草率了。但只要你回到上面那个定义就会发现这不是拼凑而是可微性要求的全部内容。关键在于那个 o 项。它保证了用线性部分去近似函数值变化时误差相对于自变量的位移是“二阶小”的。用大白话说就是在局部足够小的范围内曲面 z f(x, y) 可以用一个平面去近似这个平面就是切平面。全微分 dz 是切平面上的增量Δz 是真实曲面上的增量两者的差随着 (Δx, Δy) 变小而迅速消失。4.2 判定可微的实用路径教材上判定可微的标准流程一般是这样先求两个偏导数 ∂f/∂x 和 ∂f/∂y确认它们在该点存在。写出全微分的线性部分fx·Δx fy·Δy。检查差值 Δz − (fx·Δx fy·Δy) 是否是关于 ρ √(Δx² Δy²) 的高阶无穷小。如果是则可微如果不是则不可微。第 3 步的检验可以写成[f(x₀Δx, y₀Δy) - f(x₀,y₀) - fx·Δx - fy·Δy] / ρ → 0这个极限等于 0就可微。我再给一个偏导数存在但不可微的例子帮助你建立直观f(x, y) √|xy|在原点f(h, 0) 0所以 ∂f/∂x(0,0) 0同理 ∂f/∂y(0,0) 0。两个偏导数都是 0。现在检查可微性取 Δx Δy h则 f(h, h) √(h²) |h|。代入检验式子[|h| - 0 - 0 - 0] / √(2h²) |h| / (√2 |h|) 1/√2极限是 1/√2不等于 0所以不可微。问题出在哪儿出在沿 y x 这条对角线上函数表现得像 |h|是“一阶”的而可微要求它必须是“优于一阶”的。偏导数只看两个坐标轴方向那里函数恰好平得像个常数所以检测不出来但斜方向把它出卖了。4.3 连续、偏导存在、可微三者的关系这三个概念之间的关系是考试和建模中反复出现的核心考点我把它整理成一张表方便对照关系是否成立说明可微 → 连续成立可微是比连续强得多的条件连续 → 可微不成立连续但不可微的函数大量存在可微 → 偏导存在成立可微意味着两个偏导都存在偏导存在 → 可微不成立√|xy| 在原点就是反例偏导存在 → 连续不成立xy/(x²y²) 是经典反例偏导连续 → 可微成立这是最常用的充分条件最后一行特别实用。它说的是如果两个偏导数不仅存在而且作为函数在这一点附近是连续的那么函数一定可微。工程里遇到的函数几乎都满足这个条件所以实操中可以走这条捷径先算偏导看看它们是不是连续的是的话就直接判可微省去极限检验的麻烦。提示偏导连续是可微的充分条件不是必要条件。也就是说存在偏导不连续但仍然可微的函数。做题时如果偏导不连续别急着下“不可微”的结论还得回到定义去检验。5. 方向导数与梯度全微分顺手带出来的结果5.1 方向导数是怎么算出来的偏导数只给了两个方向的变化率。如果我想知道函数沿任意方向 l (cosα, cosβ) 的瞬时变化率呢这就引入了方向导数。定义和偏导数类似只是把自变量的增量沿着指定方向取∂f/∂l lim [f(x₀ t·cosα, y t·cosβ) - f(x, y₀)] / t (t → 0⁺)这个看起来需要重新做极限但只要函数可微就能直接算出来∂f/∂l fx·cosα fy·cosβ为什么因为可微保证了 Δz fx·Δx fy·Δy o(ρ)。当增量沿着方向 l 走时Δx t·cosαΔy t·cosβρ t。代入并除以 t就得到上面那个式子。这说明方向导数是全微分的直接推论而偏导数不过是方向导数在两个特殊方向α 0 和 α π/2上的取值。我之所以强调这一层是想说明这几个概念不是并列的五六件事而是一条清晰的推演链一元导数 → 偏导数 → 全微分 → 方向导数 → 梯度。每一环都在上一环的基础上扩大适用范围。学的时候如果能把这条链画出来脑子里就不会乱。5.2 梯度变化最快的那个方向方向导数的表达式 fx·cosα fy·cosβ 可以写成向量点积的形式∂f/∂l (fx, fy) · (cosα, cosβ)前面这个向量 (fx, fy) 就是梯度记作 ∇f 或 grad f。既然方向导数是梯度和单位方向向量的点积那么根据点积的性质当单位方向向量和梯度方向一致时方向导数取到最大值这个最大值就是梯度的模。这个结论非常有用。它说的是梯度方向是函数增长最快的方向梯度的模是最大的变化率。反过来负梯度方向是下降最快的方向。这就是梯度下降法的数学依据——要找函数的最小值就往梯度的反方向走。在实际问题里梯度的用处很广。地形分析里它告诉你哪个方向最陡热传导问题里温度梯度决定热流方向机器学习训练里损失函数的梯度告诉你参数该怎么调。这些应用背后用的是同一个数学结论而这个结论是从全微分的定义一步步推出来的。所以我会说全微分不只是一个计算公式它是整个多元微分学的骨架。6. 误差传播全微分最实用的一面6.1 从一元到多元的误差估计如果前面几节偏理论这一节就来点能直接上手用的。在实际测量和工程计算里自变量往往有误差我们想知道结果会有多大误差。全微分在这里是最好用的工具。一元情形很简单。如果 y f(x)x 的误差是 Δx那么 y 的误差近似是Δy ≈ f(x) · Δx多元情形就要用全微分。如果 z f(x, y)x 和 y 的误差分别是 Δx 和 Δy那么Δz ≈ |∂f/∂x| · Δx |∂f/∂y| · Δy这里取了绝对值因为误差是可能正也可能负的我们关心的是最坏情况下的总误差。这种处理叫绝对误差传播是实验数据处理里最常用的估算方式。如果只看相对误差还可以进一步推导。相对误差定义是 Δz / z通过全微分可以把它和各自变量的相对误差联系起来。对于乘除形式的函数这个关系特别简单往往是相对误差直接相加。6.2 圆柱体积的完整计算举个具体例子把流程走完。假设要算一个圆柱的体积 V πr²h其中半径 r 和高度 h 都是测量得到的带误差。先求偏导数∂V/∂r 2πrh ∂V/∂h πr²全微分是dV 2πrh · dr πr² · dh现在代入具体数值。假设 r 10 cmh 20 cm半径的测量误差 dr 0.1 cm高度的误差 dh 0.2 cm。先算体积V π · 10² · 20 2000π ≈ 6283.19 cm³再算误差ΔV ≈ 2π · 10 · 20 · 0.1 π · 10² · 0.2 40π 20π 60π ≈ 188.50 cm³所以体积的估计结果是 6283.19 ± 188.50 cm³。相对误差是ΔV / V 60π / 2000π 0.03 3%正好验证了前面说的对于乘除形式的函数相对误差是各部分相对误差之和。半径的相对误差是 0.1/10 1%高度是 0.2/20 1%但因为半径在体积里是平方项它的相对误差要乘 2所以合计是 2×1% 1% 3%和计算结果一致。这个例子看着简单但它把全微分的实用价值体现得很清楚。你不用做复杂的精确计算只要知道全微分公式就能快速估计出误差范围判断测量精度够不够。我在做实验数据整理的时候这套方法几乎是标配。注意误差传播用全微分估算时前提是误差相对于测量值足够小而且函数在测量点附近可微。如果误差大到一定程度或者函数在该点不可微这个线性近似就不准了需要换用其他方法。7. 踩坑记录与常见问题速查7.1 几个我踩过的典型坑第一个坑把偏导数存在当成可微。这是最普遍的错误。前面 √|xy| 的例子说明两者不等价。我在做题时就吃过这个亏看到两个偏导都算出来了就觉得函数肯定可微结果答案是“不可微”当时很懵。后来养成了习惯——只要题目涉及原点或者分段函数的连接点就一定回到可微定义去检验。第二个坑混淆 dz 和 Δz。dz 是全微分是切平面上的增量是线性近似Δz 是真实增量。两者差一个高阶无穷小。很多题目会问“用全微分近似计算某值”这时候算的是 dz不是精确值。如果要求精确值得回到原函数去算。我在第一次做近似计算题时就把这两个弄混了答案对不上才发现问题。第三个坑忽视混合偏导的连续性条件。有些函数在原点附近混合偏导不相等比如分段定义的函数。如果题目特意考这一点直接用“混合偏导相等”去算就会错。判断方法是先看函数在该点附近是否连续、二阶混合偏导是否存在且连续不满足就得老老实实按定义算。第四个坑把梯度当成一个固定向量。梯度是依赖于点的同一点不同位置的梯度一般不同。∇f(x, y) 是一个向量场不是某个常数。我在做地形分析时一开始以为整个区域的坡度方向固定后来才发现每个点的下降方向都不一样。7.2 常见问题速查表问题判断方法结论如何判断函数在某点是否可微先求偏导再按定义检验差值是否为高阶无穷小检验极限为 0 则可微偏导存在但不可微的典型例子取沿斜方向的路径看差值的极限√|xy| 在原点即为此类全微分和方向导数的关系方向导数 梯度 · 单位方向向量偏导是方向导数的特例误差传播该用哪个公式多元函数用全微分绝对值形式估算Δz ≈ Σ|∂f/∂xi|·Δxi混合偏导什么时候相等二阶混合偏导存在且连续连续则可交换求导顺序什么时候偏导连续初等函数在定义域内部直接判可微无需极限检验这张表不是用来死记的而是用来在解题卡壳时快速对照。我建议你自己也整理一份把遇到的错题和对应判断方法填进去。每填一次理解会深一层。7.3 给不同基础读者的建议如果你是初学我的建议是把重点放在“连续、偏导存在、可微”三者关系上把那张表背熟把 √|xy| 和 xy/(x²y²) 这两个反例弄透。这两个例子吃透了考试里九成以上的概念题都能应付。如果你已经学过一轮但觉得还不扎实就动手推全文微分的定义到方向导数、再到梯度的整条链。自己写一遍推导比读十遍书都有用。推导的过程会让你发现很多之前觉得是“单独知识点”的东西其实是同一条逻辑线上长出来的。如果你是做工程应用的重点关注误差传播和梯度这两块。全微分的公式在测量数据处理里用得极多梯度在优化问题里更是核心工具。把公式记住的同时也要记住它的适用条件——误差要小函数要可微否则线性近似会失效。我个人在这些年反复用这几个概念的过程中最大的体会是不要在符号层面纠结太久一定要把它们还原成“变化率”和“线性近似”这两个朴素想法。符号只是包装理解才是内核。什么时候你能不看书、用大白话把“为什么偏导存在不能推出可微”讲给一个没学过的人听并且让他听懂那这几个概念就真正属于你了。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进