场:空间中每一点上的一个值
走进本级所栖身的世界。在第一卷里,一个函数吃进一个数、吐回一个数;连向量场你在那里也只是匆匆一瞥。在这里,基本对象是一个场:一条把值钉在某块空间区域里每一个点上的规则。如果那个值是单独一个数——房间里的温度、空气中的压强、小山在每一块地面之上的高度——它就是一个[[scalar-field|标量场]],记作 f(x, y, z)。想象那个房间:每一点上有一个数,即温度,而整个布置就是一片填满空间的、平滑的暖意地貌。
但许多量并不是单独一个数——它们既有大小,又有方向。流动河水的速度、风、引力的牵引、每一点上的电场力:这些都是给每一点系上一支箭头、而不是一个数。这就是一个[[vector-field-advanced|向量场]],记作 F(x, y, z) = (P, Q, R),其中 P、Q、R 各自是位置的普通标量函数,给出箭头的三个分量。想象那条河:每一点上都坐着一支小箭头,显示水往哪个方向流、流得多快——一整片箭头的海洋,时而打着旋,时而笔直奔流。正是这样的力场与流场,应了本级标题的承诺,也正是向量微积分存在的理由。
del:一支你能用来求导的向量
现在来认识那件统领全局的工具:[[del-operator|del 算子]],写作 nabla,读作「del」。它是一个大胆而单纯的想法——把三个偏导数打包成一支向量。用符号写,nabla = (d/dx, d/dy, d/dz):一支箭头,它的三个槽位里装的不是数,而是三道指令——「对 x 求导」「对 y 求导」「对 z 求导」。回想第一卷:偏导数 d/dx 量度一个多元量在你只推动 x、其余冻住时如何变化;nabla 不过是把这三种推动一并收进一个对象,让它像普通向量在空间里指方向那样,指出「求导的方向」。
这样打包为何如此有力,道理在这里。一支向量与另一个量做代数运算,恰好只有三种方式,而 nabla 三种全都遵从。你可以把向量乘到一个标量上(标量乘向量);可以取两支向量的点积(向量点向量,得一个数);还可以取两支向量的叉积(向量叉向量,得一支新向量)。把这三者分别施于 nabla,你便一举生成向量微积分的三种基本导数:nabla f 是梯度,nabla dot F 是散度,nabla cross F 是旋度。用一支向量的三种方式,对应三种导数——这就是全部的骨架,接下来的三节将逐一拆解。
梯度:最陡坡的方向
把 nabla 指向一个标量场,你得到梯度,nabla f = (df/dx, df/dy, df/dz)。它接过一片地貌,在每一点上交回一支箭头。你在第一卷里见过它,就是多元函数的梯度;让它牢牢扎根的画面是那座山。设 f 是小山在每一块地面之上的高度。那么某处的 nabla f 就是指向[[gradient-steepest-ascent|最陡上升]]方向的箭头——一颗弹珠若往上坡滚,会沿的那个方向——而它的长度恰是那最陡攀升有多陡。山平坦处梯度为零向量;山骤降处梯度则很长。
两个事实让梯度不可或缺,二者都直接从那幅画里流出。第一,梯度始终垂直于等值集——那些等高的等高线——因为沿一条等高线高度根本不变,于是「变化最陡」的箭头必然横着穿过等高线、而不沿着它。第二,梯度是一切方向坡度的总钥匙:你沿任意单位方向 u 行走时 f 的变化率,恰是点积 nabla f dot u,这正是多元那一级里方向导数说精确了的事。于是单单一支梯度向量,就一次性含住了每一个方向上的坡度——把它和你选定要走的那个方向点乘一下即可。
散度:一股流向外铺开多少
现在把 nabla 点入一个向量场,你得到[[calc-divergence|散度]],每点上是单独一个标量:nabla dot F = dP/dx + dQ/dy + dR/dz。它接过一股流动,交回一个量度「外散」的数。再想那条河,把镜头推近,对准漂在水流里一只想象中的小方盒水。那一处的散度问:离开盒子的水,是不是比进入盒子的水多?正的散度意味着净流出——该点像一个微小的源,一只往里加流体的水龙头。负的散度意味着净流入——一个汇,一道把它吞下去的排水口。散度为零,意味着流进多少便流出多少,盒子既不增也不减;这样的流动称为不可压缩。
留意这次类型的转变,并好好品味它:散度吃进一个向量场(每点一支箭头),交回一个标量场(每点一个数)。这正是点积在尽它的本分——两支向量的点积总是一个数。它算出的那个数是地地道道局部的:某点的 nabla dot F 只取决于该点紧邻的小邻域里箭头如何变化,是「流出减流入」的无穷小版本。这个局部的「外散率」,是本级即将登场的一条大定理的种子——散度定理,它会把一块区域内部所有这种微观外散加起来,得到穿过其表面向外的总通量。眼下,只把散度读作每一点上的「源或汇」的强度。
旋度:一股流旋转多少
用向量 nabla 的第三种、也是最后一种方式是叉积,它给出[[curl|旋度]],nabla cross F——又是一个向量场,因为两支向量的叉积是一支向量。散度量度外散,旋度则量度旋转。在某点的流动里放下一只小小的桨轮。如果水在一侧推得比另一侧更狠,桨轮就转起来。那一点的旋度,就是记录这局部旋转的箭头:它沿桨轮所绕的转轴指向(依右手定则——右手四指随旋转弯曲,拇指即给出方向),其长度是局部转动速率的两倍。流动无打旋处旋度为零,这样的场称为无旋。
有一个常见的陷阱值得立刻点明:旋度说的是局部的旋转,而不是整股流动整体上是否绕着圈走。水紧紧旋着冲下排水孔,与水沿一条又宽又直的河滑行,二者都可能有旋度、也都可能没有,全看那「切变」——相邻流线是否以不同速度运动。一股完美的圆形流动,若外圈的水恰好落后得足够多,也可以是无旋的;而一股笔直的流动,若一岸跑得比另一岸快、把那只小桨轮拧动,也可以有旋度。检验始终如一:一只自由漂浮的桨轮会不会绕自己的中心转?这——而非流线的形状——才是旋度所探测的。
把三者合在一起
ONE OPERATOR, THREE DERIVATIVES ( nabla = (d/dx, d/dy, d/dz) )
gradient nabla f scalar field -> vector field (slope, steepest ascent)
divergence nabla . F vector field -> scalar field (spreading: source/sink)
curl nabla x F vector field -> vector field (rotation: local spin)
Two identities that are always true (for smooth fields):
curl of a gradient = 0 nabla x (nabla f) = 0 gradients never swirl
div of a curl = 0 nabla . (nabla x F) = 0 curls never spread
Divergence of a gradient = the Laplacian:
nabla . (nabla f) = nabla^2 f = d2f/dx2 + d2f/dy2 + d2f/dz2盒子里那两条[[vector-identities|向量恒等式]]值得停一停,因为它们不是偶然——它们就是 nabla 与自己的点积和叉积,从同一套代数里落出来。任何梯度的旋度为零,nabla cross (nabla f) = 0,呼应着「一支向量与自身叉乘为零」:一个纯粹是坡度的场,永远不会打旋。任何旋度的散度为零,nabla dot (nabla cross F) = 0,呼应着「一支向量先点后叉为零」:一个纯粹是旋转的场,永远不会外散。这两个事实,是日后积分定理、以及整个势的概念赖以转动的、不声不响的合页。
还有一种组合,而它是数学物理里最重要的算子:梯度的散度,nabla dot (nabla f) = nabla^2 f,拉普拉斯算子。它把那些纯二阶导数 d2f/dx2 + d2f/dy2 + d2f/dz2 加起来,量度一点上的值与其邻居的平均值相差多少——这是扩散、稳态温度、静电学的核心。你也会遇到与之相关的向量拉普拉斯算子。拉普拉斯算子正是这些算子超越「记账」之所以要紧的缘由:它坐镇那几大偏微分方程——热方程、波动方程、拉普拉斯方程——的正中央,而本卷余下的内容,正是为解它们而建。
- 先认清场的类型:是标量场 f(每点一个数)还是向量场 F(每点一支箭头)。这决定了哪个算子才有资格作用。
- 对标量场,取梯度 nabla f,得到最陡坡的箭头——一个垂直于等值集的向量场。
- 对向量场,取散度 nabla dot F(一个标量:净外散)和旋度 nabla cross F(一个向量:局部旋转)。
- 需要时再组合:先梯度后散度给出拉普拉斯算子 nabla^2 f;并记住「梯度的旋度」与「旋度的散度」恒为零。