文章目录
初遇拉普拉斯算子
有这样一个特殊的数学符号叫拉普拉斯算子(Laplace operator),在不少工程领域都有它的出现,其数学表达式写作 △ \triangle △ 或者 ▽ 2 \triangledown^2 ▽2。 还隐约记得我第一次接触这个玩意的时候,还是做流体的时候,好像是用来计算密度扩散的时候用到的。
当时还是11年,查很多资料介绍的也是稀里糊涂的,直到后来看到拉普拉斯算子的离散式表达形式后,才大概明白了它的涵义。后来毕业后两三年一直待在所里,跟着同事一起搞系统工程;即便后来跟朋友一起弄 嵌入式AI摄像头,但是这些复杂而艰深的数理知识因为工作原因基本没用到,所以基差不多忘了个光。
因为最近产生了重新回到学校,想继续当年没读的博士学位。然后重新翻看一些学术论文的时候,再次看到了这个拉普拉斯算子,恍惚回到了当年挑灯熬夜苦读的时候。
今天想把这些写下来,纯粹也是因为自己本来就较为愚钝,领悟比别人慢。更重要的是作为以后的备份,到时候如果相关知识点忘记的话,就可以随时回来查看这些知识点,做到查缺补漏之功效了。
梯度、散度
什么是梯度
开始这个话题之前,我想先引入梯度算子,写作 ▽ \triangledown ▽ 函数式写作 g r a d ( x ) grad(x) grad(x),对于二维或者三维来说,就写作 g r a d ( x , y , z ) grad(x, y, z) grad(x,y,z)。你在教科书上能见到它的解析式表达形式,如果对于三维空间来说,就写作
g r a d ( x , y , z ) = ▽ f = ∂ f ∂ x i + ∂ f ∂ y j + ∂ f ∂ z k grad(x, y, z)=\triangledown f = \frac{\partial f}{\partial x} i + \frac{\partial f}{\partial y}j + \frac{\partial f}{\partial z}k grad(x,y,z)=▽f=∂x∂fi+∂y∂fj+∂z∂fk
其中 i i i j j j k k k表示在x, y, z轴上的向量分量,如果不太清楚这个表达形式的同学,可能需要翻看一下自己高中数学关于向量分量描述的相关章节了。
因为这个公式是个偏微分的表达形式,例如对于X轴上,用离散形式进行表达,就大概是这样的:
∂ f ∂ x ≈ f x , y , z ( x + Δ x o ) − f x , y , z ( x ) Δ x o \frac{\partial f}{\partial x} \approx \frac{f_{x,y,z}(x + \Delta x_o) - f_{x,y,z}(x)}{ \Delta x_o} ∂x∂f≈Δxofx,y,z(x+Δxo)−fx,y,z(x)
因此,对于Y轴,Z轴来说,就分别是这样的:
∂ f ∂ y ≈ f x , y , z ( y + Δ y o ) − f x , y , z ( y ) Δ y o \frac{\partial f}{\partial y} \approx \frac{f_{x,y,z}(y + \Delta y_o) - f_{x,y,z}(y)}{ \Delta y_o} ∂y∂f≈Δyofx,y,z(y+Δyo)−fx,y,z(y)
∂ f ∂ z ≈ f x , y , z ( x + Δ z o ) − f x , y , z ( z ) Δ z o \frac{\partial f}{\partial z} \approx \frac{f_{x,y,z}(x + \Delta z_o) - f_{x,y,z}(z)}{ \Delta z_o} ∂z∂f≈Δzofx,y,z(x+Δzo)−fx,y,z(z)
这里实际上你应该也看出来了,这实际上是斜率,使用约等于符号,是因为在数学的概念上,连续和离散是不完全一致的。所以,梯度,用大白话讲,就是某一点,在欧式几何空间中,分别在X轴上、Y轴上以及Z轴上的斜率。
失散多年的亲兄弟——散度?
而散度呢(divergence)?
你会发现它跟梯度算子很相似,写作 ▽ ⋅ F ⃗ \triangledown \cdot \vec{F} ▽⋅F 在很多书上它被简写成这样 ▽ ⋅ F \triangledown \cdot F ▽⋅F 区别在于多了一个点乘符号。
你或许会觉得梯度和散度长得很像,有区别吗?我个人理解其实区别并不大,因为散度的解析式也写成这样的形式:
d i v ( F ) = ▽ ⋅ F = ∂ F x ∂ x + ∂ F y ∂ y + ∂ F z ∂ z div(F) = \triangledown \cdot F = \frac{\partial F_x}{\partial x} + \frac{\partial F_y}{\partial y} + \frac{\partial F_z}{\partial z} div(F)=▽⋅F=∂x∂Fx+∂y∂Fy+∂z∂Fz
形式上两者是很相似的,尽管梯度写作:
g r a d ( x , y , z ) = ▽ f = ∂ f ∂ x i + ∂ f ∂ y j + ∂ f ∂ z k grad(x, y, z)=\triangledown f = \frac{\partial f}{\partial x} i + \frac{\partial f}{\partial y}j + \frac{\partial f}{\partial z}k grad(x,y,z)=▽f=∂x∂fi+∂y∂fj+∂z∂fk
但可以把梯度里的 f f f 和向量分量做一个映射,变成一个新的向量后,就可以得到这样一个表达式:
F ⃗ ( x , y , z ) = x i ⃗ + y j ⃗ + z k ⃗ \vec{F}(x,y,z)=x \vec i + y \vec j+z \vec k F (x,y,z)=xi +yj +zk
于是梯度就能转换为散度的表达形式:
▽ ⋅ F ⃗ = ∂ F i ∂ i + ∂ F j ∂ j + ∂ F k ∂ k \triangledown \cdot \vec F = \frac{\partial F_i}{\partial i} + \frac{\partial F_j}{\partial j} + \frac{\partial F_k}{\partial k} ▽⋅F =∂i∂Fi+∂j∂Fj+∂k∂Fk
所以,你可以看到,最大的区别,其实是在于梯度计算的是在xyz轴上的变化率,而散度计算的是向量在某个场的变化率。
举例来说,梯度就是研究类似山脊一侧坡度的斜率的变化。
而散度,则是把流速测试仪,放置到方向不确定的水流中,测试该点水流运动速度的变化。
拉普拉斯算子
在介绍完梯度和散度后,现在来介绍拉普拉斯算子:它写作 △ \triangle △ 或者 ▽ 2 \triangledown^2 ▽2 解析式写为:
▽ 2 = ∂ 2 ∂ x 2 + ∂ 2 ∂ y 2 + ∂ 2 ∂ z 2 \triangledown^2 = \frac{\partial^2}{\partial x^2} + \frac{\partial^2}{\partial y^2}+\frac{\partial^2}{\partial z^2} ▽2=∂x2∂2+∂y2∂2+∂z2∂2
它表示梯度或者散度的变化率,即变化率的变化率。如果举一个经典的变化率的变化率,那无疑就是经典力学的加速度公式
v t = v o + a t v_t = v_o + at vt=vo+at
使用拉普拉斯算子的重要物理意义,在于假设一个场分别在XYZ分量上的变化都是线性的,那么可以直接使用拉普拉斯算子,直接估测出距离测试点 P o P_o Po ( Δ X , Δ Y , Δ Z ) (\Delta X, \Delta Y, \Delta Z) (ΔX,ΔY,ΔZ)的某一点 P t P_t Pt 上的物理值,例如速度、密度、热量等。估算方式可以简单到如同求解加速度一样。