拉普拉斯算子 是什么
站在一个点上,把紧邻四周的值平均一下。如果这个平均比你站的地方高,你就在洼地里。如果比平均低,你就在峰上。这个差就是拉普拉斯算子。它是梯度的散度 ∇·∇f,也就是 ∂²f/∂x² + ∂²f/∂y²,用一个数衡量你离邻居平均有多远。在峰上是负的,在洼地里是正的。热怎样扩散、膜怎样绷紧、势怎样安顿,都系在这一个量上。它把梯度、散度和旋度收成一个点上的 2 阶导数。 房间里的温度和角落的冷气混到均匀、只被边缘按住的橡皮膜在中间变平、空区域里的势安顿下来,都从这一个差开始。
在场上拖动探针,那个位置会有一个小环围着六个邻居点。画面下方出现三个数。中间的值、六个邻居的平均,以及与两者之差成比例的 ∇²f。放在右上的峰上,邻居平均比中间低,∇²f 降为负,成为蓝色的峰。放在左下的洼地,邻居平均更高,∇²f 升为正,成为金色的洼。这里用手确认,拉普拉斯算子就是你离邻居平均有多远的那一个数。 把环在峰和洼之间慢慢移动,负的差会在一道脊上变成正的,在那道脊上中间的值等于邻居的平均。
在同一个场上看,拉普拉斯算子为什么是梯度的散度。拖动探针,环上出现六支梯度箭头,每支箭头指向那一处最陡的上坡。在峰上,箭头全都聚向探针,因为上坡指向里面的峰。向内聚的流动散度为负,所以 ∇·∇f < 0。在洼地上,箭头全都向外伸,散度为正,所以 ∇·∇f > 0。画面同时写出 ∇²f = ∇·(∇f) 和它当下的值。把散度再作用一次到梯度上,就是拉普拉斯算子,箭头把这件事显示出来。 箭头聚到一处,那个点就在把高度让出去。箭头向四面伸开,那个点就在从四周把高度收回来填上。
现在用颜色看整片场的拉普拉斯算子,而不是一个点。滑块 s 把右上峰的高度从 0.5 变到 3,背景颜色就是 ∇²f 的地图。金色是洼(∇²f > 0,低于平均),蓝色是峰(∇²f < 0,高于平均),峰顶和洼底最浓。把 s 调大,右上的峰隆起,那里的蓝色区域更深更宽。把 s 调小,那个峰消退,蓝色变淡。左下的洼与 s 无关,保持金色。一个滑块把整张拉普拉斯地图重新涂过。 颜色浓的地方和邻居差得大,接近灰色的地方已经几乎等于邻居,剩下要抹平的就少。
拉普拉斯算子处处为 0 的场叫做调和场 (harmonic)。按下按钮,两种场交替出现。一种是 h(x,y) = x·y,鞍。每个点上横向凹下多少,纵向就凸起多少,两者抵消,∇²h = 0,中间样本的 ∇² 几乎显示为 0。另一种是 b(x,y) = 高斯峰,真正的凸起,中间的 ∇²b 是明显的负数。调和场里面不能有峰,也不能有洼。每个点都等于邻居的平均,所以最高和最低的地方总在边界上。这是稳态的热、势和膜的规则。 所以只定下边缘的温度,里面就跟着来。只定下边缘的势,空着的内部就自己填上。
看拉普拉斯算子为什么是扩散的引擎。热方程是 ∂f/∂t = ∇²f,意思是每一瞬间每个点的值按拉普拉斯算子变化。洼地 (∇²f > 0) 上升,峰 (∇²f < 0) 下降,于是每个地方都被拉向邻居的平均。格子上放着两个峰的起伏起点,每按一次一步,每一格就朝邻居平均走近一步。没有自动重复,只在按下时走一步。按得越多,峰越低,谷越被填平,颜色越均匀。按复位就回到最初的起伏。数着步数,拉普拉斯算子抹掉差别的过程就一步步显出来。 按得久,最初的起伏就消失,整张格子剩下一种平静的颜色。