第 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 步 · 拉普拉斯算子:把 ∇ 和 ∇· 串起来,得到 ∇² = ∇·∇
📝 课后练习
检验你的理解——答对为止