打爆散度、旋度、梯度的小狗头
散度(Divergence)、梯度(Gradient)和旋度(Curl)这三个概念,单独学的时候也许还能明白,但是一旦放在一起,可能就完全不知道它们到底是什么玩意了,如果我问:散度、旋度、梯度这三个量里面,哪些是矢量,哪些是标量?时间久了,也许很多人都会忘。 我希望用自己的语言,把这三个概念讲得简单一点。最好不用一上来就是一堆符号,让人一眼看了就想跑。当然,如果要真正看懂公式,肯定还是需要高数基础的。但在进入公式之前,我们完全可以先从物理场景和直觉出发,理解它们到底在描述什么。
散度
“散度”这个词可以先从字面上理解:
- 散:发散、向外扩散;
- 度:程度、度量。
所以,散度可以理解为一个场在某个位置向外发散的程度。
如果散度为正,说明这里像是在“往外吐”;
如果散度为负,说明这里像是在“往里吸”;
如果散度为零,说明这里既没有源,也没有汇,只是单纯流过。
比如过年放礼花弹,爆炸的一瞬间,火花从中心向四面八方散开,而且越散越大。这个时候,礼花弹爆炸的中心就像一个“源”,因为有东西从这里不断向外流出。对于这个位置来说,散度就是正的。
再比如下雨的时候,路面上的水从四面八方流进下水道。下水道口就像一个“汇”,因为周围的水都在向它聚集。对于这个位置来说,散度就是负的。
但是,并不是所有“有流动”的地方都有源或汇。比如风吹过一片开阔的平原,空气从左边流进来,又从右边流出去。如果我们只盯着其中一个很小的小方块看,会发现:空气从左边进入这个小方块,又从右边离开这个小方块,进入的量和离开的量完全相等。也就是说,这个小方块内部并没有凭空产生空气,也没有空气在里面消失。它只是空气流动路径上的一个“路人”。这种情况下,这个小区域的散度就是零。
所以,散度真正关心的压根不是“有没有流动”,而是某个小区域内部有没有净流出或净流入。
简单来说,散度衡量的是:
流出去的量 − 流进来的量。
如果结果是正的,说明流出去的比流进来的多,里面像是有一个“源”,比如礼花弹爆炸;
如果结果是负的,说明流进来的比流出去的多,里面像是有一个“汇”,比如水流进下水道;
如果结果是零,说明流进和流出的量相等,只是经过这里,并没有增加也没有减少。
因此,散度只关心的是:
一个空间场在某一点附近,是向外发散、向内汇聚,还是单纯流过。
需要注意的是,散度最终得到的是一个数值。它只告诉我们“净流出多少”或“净流入多少”,并不告诉我们具体朝哪个方向流。因此,散度是一个标量。
不过,虽然散度的结果是标量,但在判断流进和流出的时候,仍然需要用到流场的方向。只是这些方向信息在计算过程中被综合掉了,最后只留下一个表示“发散程度”的数值。
我们可以把散度想象成:
用来判断一个空间里有没有“源头”或“汇点”的物理量。
旋度
“旋度”这个词也可以先从字面上理解:
- 旋:旋转、打转;
- 度:程度、度量。
所以,旋度可以理解为一个场在某个位置附近“让东西旋转起来的程度”。
如果散度关心的是“有没有向外发散或向内汇聚”,那么旋度关心的就是:
这个地方附近有没有打转、绕圈、旋转的趋势。
我们可以把旋度想象成水池里的漩涡。水池里出现一个漩涡时,水流会绕着某个中心顺时针或者逆时针旋转。如果我们在漩涡附近放一个很小的小水轮,它很可能会被水流带着转起来。
如果水流是顺时针旋转,小水轮就顺时针转;
如果水流方向反了,小水轮的旋转方向也会反过来。
这个时候,我们就说这个地方的流场有带动小水轮旋转的趋势,也就是旋度不为零。因此,描述旋度的时候,通常不仅要描述“转得有多厉害”,还要描述“绕着哪个方向转”。也就是说,旋度这个物理量是一个有大小、有方向的量,所以它是矢量。
但是,并不是所有“看起来在绕弯”的运动都有旋度。旋度真正关心的,不是一个物体整体是不是绕着某个很远的点转,而是看某个很小区域内部有没有局部旋转趋势。比如风吹过一片开阔平原,空气整体从左往右流。如果速度处处一样,左边流进来,右边流出去,每一小块空气只是平移过去,并不会自己打转。所以这种均匀直线流动的旋度就是零。
也就是说,旋度真正关心的不是“有没有流动”,也不是“路径是不是弯的”,而是某个小区域内部有没有绕着自身打转的趋势。
简单来说:
旋度衡量的是一个场在某一点附近的局部旋转程度。
如果旋度不为零,说明这个位置附近的流场有让小水轮转起来的趋势;
如果旋度为零,说明这个位置附近虽然可能有流动,但没有局部旋转趋势;
如果旋度越大,说明这种旋转趋势越强。
和散度不同,旋度不仅有大小,还有方向。
旋度的大小表示“转得有多厉害”
旋度的方向表示“旋转轴指向哪里”
这个方向可以用右手定则来理解:如果水流按照你右手四指弯曲的方向旋转,那么大拇指指向的方向,就是旋度的方向。比如在平面上看一个逆时针旋转的水流,如果你用右手四指顺着逆时针方向弯曲,大拇指会指向纸面外,所以它的旋度方向就是垂直纸面向外;如果水流是顺时针旋转的,那么旋度方向就是垂直纸面向里。
因此,旋度描述的是:
一个空间场在某一点附近,是不是有局部旋转趋势,以及这个旋转趋势的强弱和方向。
可以和散度对比着记:
- 散度:看这个地方是不是“往外吐”或者“往里吸”,描述的是源和汇;
- 旋度:看这个地方是不是“在打转”,描述的是局部旋转。
所以,散度最终得到的是一个标量,因为它只描述净流出或净流入的多少;
而旋度通常是一个向量,因为它既要描述旋转的强弱,也要描述旋转轴的方向。
梯度
“梯度”这个词也可以先从字面上理解:
- 梯:阶梯、坡度;
- 度:程度、度量。
所以,梯度可以理解为某个量在空间中变化最快的方向和变化的剧烈程度。
如果说散度关心的是“有没有源或汇”,旋度关心的是“有没有打转”,那么梯度关心的就是:
一个量往哪个方向增加得最快,以及增加得有多快。
最容易想到的,就是把梯度想象成爬山。比如我站在玉龙雪山山脚下仰望一座山:
假设你站在山脚下的某一个位置,准备往上爬。你会发现,从你脚下这个点出发,周围有很多不同方向:
往东可能坡比较缓;
往西可能高度变化不大;
往北可能越来越低;
往南可能高度上升得最快。
也就是说,在这个点附近,总会有一个方向让人感觉最陡、最累。这个方向就是高度上升最快的方向。所以:
梯度指向的方向,就是高度上升最快的方向;
梯度的大小,就表示这个方向上高度增加得有多快,也就是坡有多陡。
如果我们把“高度”看成一个场,那么山坡上每一点的梯度,就告诉我们:
- 从这一点出发,往哪个方向走高度增加最快;
- 高度增加的速度有多大。
再比如温度场。假设一个房间里不同位置温度不同,靠近暖气片的地方温度高,远离暖气片的地方温度低。那么在房间中的某一点,温度的梯度就指向温度升高最快的方向,通常也就是指向更热的地方。
梯度越大,说明温度变化越剧烈;
梯度越小,说明温度变化越平缓。
但是,需要注意的是,梯度描述的不是“温度本身有多高”,而是“温度在空间中变化得有多快”。
一个地方温度可以很高,但如果周围温度也差不多,那么这个地方的梯度可能很小;
一个地方温度不一定最高,但如果它附近温度变化特别剧烈
,那么这个地方的梯度就可能很大。
比如山顶的高度很高,但在山顶正中央,四周可能都开始下降,局部没有哪个方向还能继续上升得更快,这时山顶处的梯度可能是零。而山腰虽然没有山顶高,但高度变化很明显,所以山腰的梯度反而可能很大。
所以,梯度真正关心的不是“数值本身大不大”,而是某个位置附近这个量的空间变化趋势。
简单来说:
梯度衡量的是一个标量场在某一点附近,增加最快的方向和增加的快慢。
如果梯度很大,说明这个地方变化很剧烈,比如山坡很陡、温度变化很快;
如果梯度很小,说明这个地方变化很平缓;
如果梯度为零,说明这个位置附近没有明显的上升方向,比如平地、山顶、山谷底,或者局部变化暂时停住的地方。
和散度不同,梯度也是一个向量。梯度的大小表示“变化有多快”; 梯度的方向表示“增加最快的方向”。梯度通常是把一个标量场变成一个向量场。
一张表总结
最后区分这三个概念:
- 梯度:看一个量往哪个方向增加最快,描述的是空间变化;
- 散度:看一个场是不是“往外吐”或“往里吸”,描述的是源和汇;
- 旋度:看一个场是不是“在打转”,描述的是局部旋转。
| 名称 | 输入 | 输出 | 物理意义 | 类比 |
|---|---|---|---|---|
| 梯度 Gradient(∇) | 标量场,例如温度、高度 | 向量场 | 变化最陡的方向和速度 | 山坡坡度 |
| 散度 Divergence(∇·) | 向量场,例如风速、水流速度 | 标量 | 源或汇的强度 | 喷头 vs 下水道 |
| 旋度 Curl(∇×) | 向量场,例如风速、水流速度 | 向量 | 旋转轴方向和旋转强度 | 小风车 |
这样理解之后,再回头看那些博主的文章,就不会觉得它们只是冰冷的符号了。公式只是把这些直觉变成了精确的数学表达。
后面更新带有公式版本的。希望可以讲的明白一些。让大家感受到这三个物理量的厉害。
