MATH ML Learning Lab
14 / 09
第 5 步 · 向量场怎么「读数」

散度 · 源与汇Divergence

梯度把标量场变成向量场,散度把它读回一个数:这一点究竟是「往外冒」还是「往里吸」?答案是一个标量,不是箭头。

16 分钟
阅读 + 实操
3 个
交互演示
中级
难度

散度 · 交互演示

探针点(1.00, 0.80)
∇·F
① 向量场与散度着色:背景越红表示净流出越多(源),越蓝表示净流入越多(汇),白色表示无源无汇
把鼠标移到图上:黑框是该点的小方盒,红箭头表示「流出」、蓝箭头表示「流入」。切到「旋转」场看看——那些箭头明明在转,整片背景却是全白的。
② 小方盒四边通量:净流出 ÷ 面积 ≈ ∇·F(面积趋零时两者相等)
左边
右边
下边
上边
净通量 ÷ 面积 = ,与解析散度 对照。
③ 密度场 ρ 的演化:ρ̇ = −∇·(ρv)。散度为正的地方密度被抽走,为负的地方被堆积
两个密度团在被同一个速度场搬运。散度处处为零的场(旋转、剪切、均匀)只会把它们整体搬家,不会改变任何一处的浓度。

为什么学这步?

上一章把标量场变成了向量场,但没给出「怎么读它」的工具。散度是第一个读数:它把一个向量场压缩成一个标量场,告诉我们物质在哪里被创生、在哪里被消耗。连续性方程、归一化流的体积项、扩散 SDE 的漂移项,全都建立在这一个数上。

📌 发生了什么

  • ∇·F 是「单位体积的净流出」
  • 它是标量:正源、负汇、零无源无汇
  • 散度定理把局部与全局连起来

⚠️ 常见陷阱

  • 散度是一个数,不是箭头
  • 零散度 ≠ 没有变化(旋转场就是)
  • 散度 ≠ KL 散度,同名不同物

本章小结

  • ∇·F = Σ ∂Fᵢ/∂xᵢ
  • = 净通量密度(小方盒极限)
  • 连续性方程:∂ρ/∂t = −∇·(ρv)

📐 从「一维流出」到散度定理

先看最简单的:一维流量 F(x)。在某点附近,右侧流出的比左侧流入的多多少?答案就是导数 dF/dx。多维只是把每个分量各自做一遍再相加。

把上面这个「每点净流出」在整个体积 V 上积分,内部相邻小盒的面上通量两两抵消,只剩最外层的表面 —— 于是得到散度定理(高斯定理):

它说的是:局部量(散度)的累加 = 边界上的总通量。这就是为什么「守恒律」总能写成散度等于某个源项 —— 内部不会凭空产生物质,所有变化都在边界上记账。

上面的连续性方程把这件事讲透了:某点密度的时间变化率,恰好等于从该点流走的通量(取负)。物质只是搬家,从不消失。

🎛 五个场的散度

切换上方预设,对照这张表。三个零散度的场是重点 —— 它们各自代表不同含义的「无源无汇」。

∇·F 读作
源 F = (x, y)+2处处是源,均匀膨胀
汇 F = (−x, −y)−2处处是汇,均匀收缩
旋转 F = (−y, x)0在原地转圈,进=出
剪切 F = (y, 0)0横向错动,不胀不缩
均匀 F = (1, 0)0整体平移,密度不变

💡 三个零散度场的共同点:体积既不膨胀也不收缩。零散度因此又叫「无源场」或「螺线管场」。

🔗 它在 ML 里出现在哪

散度不是物理课专用。只要是「一组东西在流动」,它就会出现:

  • 归一化流:变量替换 x = g(z) 时密度要乘以雅可比行列式,即 log p_x(x) = log p_z(z) − log|det(∂g/∂z)|。连续流(CNF / flow matching)取极限后得到 d log p/dt = −∇·f。
  • 扩散模型:Fokker–Planck 方程里的漂移项 ∇·(f p) 就是散度,与扩散项 ∇²(·) 一起决定概率密度如何随时间流动(后者见第 15 步)。
  • 概率流形上的守恒:任何把概率当作「流体」的建模都逃不开连续性方程,因为总概率必须恒为 1。

💻 数值散度

本页的散度着色与通量盒都由中心差分算出:

// 数值散度:中心差分
function divergenceAt(F, x, y, h = 1e-3) {
  const dFx = (F(x + h, y)[0] - F(x - h, y)[0]) / (2 * h);
  const dFy = (F(x, y + h)[1] - F(x, y - h)[1]) / (2 * h);
  return dFx + dFy;
}
// 通量盒等价定义:net / area → ∇·F  (面积 → 0)

📚 参考文献与延伸阅读

  • Strang, Calculus / MIT 18.02 “Divergence Theorem” — 散度定理的几何讲法
  • Rezende & Mohamed (2015), Variational Inference with Normalizing Flows — 雅可比行列式与流式建模
  • Song et al. (2021), Score-Based Generative Modeling through Stochastic Differential Equations — Fokker–Planck 与扩散模型
  • 回顾 → 第 7 步 · 梯度:∇f 是本章向量场的一种特殊来源;下一步 → 第 15 步 · 拉普拉斯算子:把 ∇ 和 ∇· 串起来,得到 ∇² = ∇·∇

📝 课后练习

检验你的理解——答对为止