文章目录
梯度(gradient)什么是梯度差分形式
散度(divergence)拉普拉斯算子(Laplace Operator)差分形式
梯度(gradient)
什么是梯度
开始这个话题之前,我想先引入梯度算子,写作
▽
\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
+
Δ
x
o
,
y
,
z
)
−
f
(
x
,
y
,
z
)
Δ
x
o
\frac{\partial f}{\partial x} = \frac{f(x + \Delta x_o, y, z) - f(x, y, z)}{ \Delta x_o}
∂x∂f=Δxof(x+Δxo,y,z)−f(x,y,z)
因此,分别对于Y轴,Z轴来说,就分别是这样的:
∂
f
∂
y
=
f
(
x
,
y
+
Δ
y
o
,
z
)
−
f
(
x
,
y
,
z
)
Δ
y
o
\frac{\partial f}{\partial y} = \frac{f(x, y + \Delta y_o, z) - f(x, y, z)}{ \Delta y_o}
∂y∂f=Δyof(x,y+Δyo,z)−f(x,y,z)
∂
f
∂
z
=
f
(
x
,
y
,
z
+
Δ
z
o
)
−
f
(
x
,
y
,
z
)
Δ
z
o
\frac{\partial f}{\partial z} = \frac{f(x, y, z + \Delta z_o) - f(x, y, z)}{ \Delta z_o}
∂z∂f=Δzof(x,y,z+Δzo)−f(x,y,z)
差分形式
而对于计算机来说,通常我们令
Δ
x
o
=
Δ
y
o
=
Δ
z
o
=
1
\Delta x_o = \Delta y_o = \Delta z_o = 1
Δxo=Δyo=Δzo=1,然后常用的一种差分形式就可以表示如下:
∂
f
∂
x
≈
f
(
x
+
1
,
y
,
z
)
−
f
(
x
,
y
,
z
)
\frac{\partial f}{\partial x} \approx f(x +1, y, z) - f(x, y, z)
∂x∂f≈f(x+1,y,z)−f(x,y,z)
∂
f
∂
y
≈
f
(
x
,
y
+
1
,
z
)
−
f
(
x
,
y
,
z
)
\frac{\partial f}{\partial y} \approx f(x, y +1, z) - f(x, y, z)
∂y∂f≈f(x,y+1,z)−f(x,y,z)
∂
f
∂
z
≈
f
(
x
,
y
,
z
+
1
)
−
f
(
x
,
y
,
z
)
\frac{\partial f}{\partial z} \approx f(x, y, z +1) - f(x, y, z)
∂z∂f≈f(x,y,z+1)−f(x,y,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
所以,实际上我们关心的其实只有梯度算子
▽
\triangledown
▽。
要说这两者最大表示区别,我觉得是在于这两者观察角度的不同。举例来说,梯度是在给定欧式空间坐标后,研究在这空间里类似山脊一侧某一点的坡度的斜率。
而散度,则是在流场中的某一点,放置一个探测器,计算该点的速度、密度、热量的变化率。
如果观察坐标系,可以发现对于梯度来说,其坐标系在外,观察点位于坐标系中任意一个点上。而散度,它的坐标系通常表示为它自身,即以观察点为中心,建立XYZ坐标系。
也就是说,如果你把梯度的观察点设置为欧式空间坐标的原点,那么此刻的梯度和散度就是一回事了。
拉普拉斯算子(Laplace Operator)
在介绍完梯度和散度后,现在来介绍拉普拉斯算子:它写作
△
\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 上的物理值,例如速度、密度、热量等。估算方式可以简单到如同求解加速度一样。
那么它的差分形式的近似表达式又是什么呢,从1阶差分形式可以知道
▽
f
(
x
)
=
f
(
x
+
1
)
−
f
(
x
)
\triangledown f(x) = f(x +1) - f(x)
▽f(x)=f(x+1)−f(x)
那么它的二阶形式就表示为:
▽
2
f
(
X
)
=
▽
f
(
X
+
1
)
−
▽
f
(
X
)
\triangledown^2f(X) = \triangledown f(X+1) - \triangledown f(X)
▽2f(X)=▽f(X+1)−▽f(X)
代入一阶差分,于是就可以得到
▽
2
f
(
x
)
=
f
(
x
+
2
)
−
2
f
(
x
+
1
)
+
f
(
x
)
\triangledown^2f(x) = f(x+2) - 2f(x+1) + f(x)
▽2f(x)=f(x+2)−2f(x+1)+f(x)
差分形式
所以,对于拉普拉斯算子,它的向前差分形式的各XYZ上的差分计算方法即为:
∂
2
∂
x
2
≈
f
(
x
+
2
,
y
,
z
)
−
2
f
(
x
+
1
,
y
,
z
)
+
f
(
x
,
y
,
z
)
\frac{\partial^2}{\partial x^2} \approx f(x+2, y, z) - 2f(x+1, y, z) + f(x, y, z)
∂x2∂2≈f(x+2,y,z)−2f(x+1,y,z)+f(x,y,z)
∂
2
∂
y
2
≈
f
(
x
,
y
+
2
,
z
)
−
2
f
(
x
,
y
+
1
,
z
)
+
f
(
x
,
y
,
z
)
\frac{\partial^2}{\partial y^2} \approx f(x, y+2, z) - 2f(x, y+1, z) + f(x, y, z)
∂y2∂2≈f(x,y+2,z)−2f(x,y+1,z)+f(x,y,z)
∂
2
∂
z
2
≈
f
(
x
,
y
,
z
+
2
)
−
2
f
(
x
,
y
,
z
+
1
)
+
f
(
x
,
y
,
z
)
\frac{\partial^2}{\partial z^2} \approx f(x, y, z+2) - 2f(x, y, z+1) + f(x, y, z)
∂z2∂2≈f(x,y,z+2)−2f(x,y,z+1)+f(x,y,z)
当然,在弄懂这个原理后,你可以自行推导出它的向后差分形式,或者中央差分形式的表达式,这里只做一个引子。