球坐标系拉普拉斯算子的推导

拉普拉斯算子在物理和工程中都有重要的作用,比如要想理解电磁波波动方程、薛定谔方程,第一个需要熟悉的数学符号就是拉普拉斯算子。如果不满足于看科普文章遇到公式就跳过去,还是花一天半天的时间,打开 Excel,编辑一些公式,熟悉一下这些常用的算符。

拉普拉斯算子 ∆ ,也写作 ∇2, 定义并不复杂,若 u 是 x,y,z 的函数:
∆u = ∇·(∇u) = ∂2u/∂x2 + ∂2u/∂y2 + ∂2u/∂z2
∆u 即 u 对 x、y、z 的二阶偏导之和。

其中,∇·(∇u) 是用 nabla 符号∇ 表示的拉普拉斯算子,nabla 符号∇ 可以看成一个特殊的“向量”,只不过其分量是偏微分符号:∇ = (∂/∂x, ∂/∂y, ∂/∂z)’

这样,如果 ∇数乘一个标量函数,就有了该函数的梯度:

ψ= grad ψ= (∂ψ/∂x, ∂ψ/∂y, ∂ψ/∂z)’

如果 ∇点乘一个矢量场,就像电场、磁场,就有了场的散度:

∇·E =divE =∂Ex/∂x + ∂Ey/∂y + ∂Ez/∂z

叉乘矢量场,就有了场的旋度:

∇×E= rotE= (∂Ez/∂y– ∂Ey/∂z, ∂Ex/∂z – ∂Ez/∂x, ∂Ey/∂x – ∂Ex/∂y)’

梯度、散度、旋度,都是值得编程或用 Excel 理解一下的概念,这里不再赘述了。

很显然,函数 u 对 x、y、z 的二阶偏导之和,就是它的梯度的散度。因此 ∆u = ∇·(∇u) = ∇2 u,这三种拉普拉斯算子的写法是等价的。

值得多提一句的是,向量叉乘有一个“BAC-CAB”恒等式:

A×(B×C) = B(A·C) – C(A·B)

AB 替换为∇算子,有:

∇×(∇×C) = ∇(∇·C) – (∇·∇C) = ∇(∇·C) – ∆C

这个等式在不少地方都有用处。

上面似乎还不算太复杂。不过我们有时候关心中心对称的物理情景,比如天线向周围空间辐射电磁波,电子绕原子核运动等等。对于这种中心对称的情况,有理由猜测运动方程用球坐标写会比较简化。因此,还有必要把刚才的拉普拉斯算子写出球坐标形式。

先看球坐标系的定义:

球坐标系

从坐标原点指向空间中位置的位置矢量r,简称“位矢”。那么球坐标系的三个坐标依次是:
r – 到原点的距离,也即位矢 r 的长度;θ – 位矢与 z 轴的夹角,ϕ – 位矢在 xy 平面投影与x轴的夹角。

易知:
x = r sinθ cosϕ
y= r sinθ sinϕ
z = r cosθ

式(1)

要写出 ∆u 的球坐标形式,就不是那么简单了,很多书上、百科上只有一个冷冰冰的结果,至于那是怎么来的,又像道生一、一生二似的,没有解释。实际上,这个推导量还不是几行就能搞定的,但也没有太多难度,只是繁琐了一些。本文就用了最笨的办法把这个推导过程写了出来。

第一步,先把一阶偏导数 ∂u/∂x、∂u/∂y、∂u/∂z 表示成球坐标形式:

由于(1)式中 x、y、z 对 r、θ 、ϕ 的导数很好求,所以先用链式法则表示 ∂u/∂r、∂u/∂θ、∂u/∂ϕ 与 ∂u/∂x、∂u/∂y、∂u/∂z 的关系:

∂u/∂r = [sinθ cosϕ, sinθ sinϕ, cosθ]’ ·(∂u/∂x, ∂u/∂y, ∂u/∂z)’
∂u/∂θ = [r cosθ cosϕ, r cosθ sinϕ, -r sinθ]’ ·(∂u/∂x, ∂u/∂y, ∂u/∂z)’
∂u/∂ϕ = [-r sinθ sinϕ, rsinθ cosϕ, 0 ]’ ·(∂u/∂x, ∂u/∂y, ∂u/∂z)’

式(2)

上面[ , , ]’是用向量表示 x、y、z 对 r、θ 、ϕ 的导数。

这样求 ∂u/∂x、∂u/∂y、∂u/∂z,就只需要求一个矩阵逆,可以得到:

∂u/∂x =
∂u/∂r sinθ cosϕ
+∂u/∂θ r^-1 cosθ cosϕ
-∂u/∂ϕ r^-1 (sinθ)^-1 sinϕ

∂u/∂y =
∂u/∂r sinθ sinϕ
+∂u/∂θ r^-1 cosθ sinϕ
+∂u/∂ϕ r^-1 (sinθ)^-1 cosϕ

∂u/∂z =
∂u/∂r cosθ
-∂u/∂θ r^-1 sinθ

式(3)

有了上述一阶偏导的球坐标形式,再求二阶偏导,就是暴力计算的事了。具体是:对式(3)再对 x、y、z 求导,其中要反复用到 r、sinθ、cosθ、sinϕ、cosϕ 对 x、y、z 的导数,把结果整理成只含 r、sinθ、cosθ、sinϕ、cosϕ 和 ∂u/∂r、∂u/∂θ、∂u/∂ϕ 对 x、y、z 的偏导数的多项式;然后再带入式(3),把所有对 x、y、z 的偏导数变为对 r、θ 、ϕ 的偏导数):

说来容易,算起来麻烦。与其一个式子一个式子手算,不如编个程序降低枯燥。为此,我还编了一个300多行的 Python 程序,专门处理这些求导的符号运算,但程序实在太丑陋,不好意思贴出来。

以下是计算机求导的结果:

首先,计算  r、sinθ、cosθ、sinϕ、cosϕ 对 x、y、z 的导数:

∂r/∂x = sinθ cosϕ
∂r/∂y = sinθ sinϕ
∂r/∂z = cosθ
∂sinθ/∂x = r^-1 (cosθ)^2 cosϕ
∂sinθ/∂y = r^-1 (cosθ)^2 sinϕ
∂sinθ/∂z = -r^-1 sinθ cosθ
∂cosθ/∂x = -r^-1 sinθ cosθ cosϕ
∂cosθ/∂y = -r^-1 sinθ cosθ sinϕ
∂cosθ/∂z = r^-1 (sinθ)^2
∂sinϕ/∂x = -r^-1 (sinθ)^-1 sinϕ cosϕ
∂sinϕ/∂y = r^-1 (sinθ)^-1 (cosϕ)^2
∂sinϕ/∂z = 0
∂cosϕ/∂x = r^-1 (sinθ)^-1 (sinϕ)^2
∂cosϕ/∂y = -r^-1 (sinθ)^-1 sinϕ cosϕ
∂cosϕ/∂z = 0

式(4)

然后,对式(3)再对 x、y、z 求导,并代入式(4)的结果:

∂( ∂u/∂x )/∂x =
+(sinθ)^2 (cosϕ)^2 ∂∂u/∂r/∂r
+r^-1 sinθ cosθ (cosϕ)^2 ∂∂u/∂r/∂θ
+∂u/∂r r^-1 (cosθ)^2 (cosϕ)^2
+∂u/∂r r^-1 (sinϕ)^2
-r^-1 sinϕ cosϕ ∂∂u/∂r/∂ϕ
+r^-1 sinθ cosθ (cosϕ)^2 ∂∂u/∂θ/∂r
+r^-2 (cosθ)^2 (cosϕ)^2 ∂∂u/∂θ/∂θ
+∂u/∂θ r^-2 (sinθ)^-1 cosθ (sinϕ)^2
-r^-2 (sinθ)^-1 cosθ sinϕ cosϕ ∂∂u/∂θ/∂ϕ
-∂u/∂θ r^-2 sinθ cosθ (cosϕ)^2
-∂u/∂θ r^-2 sinθ cosθ (cosϕ)^2
+r^-2 (sinθ)^-2 (sinϕ)^2 ∂∂u/∂ϕ/∂ϕ
+∂u/∂ϕ r^-2 (sinθ)^-2 (cosθ)^2 sinϕ cosϕ
+∂u/∂ϕ r^-2 (sinθ)^-2 sinϕ cosϕ
+∂u/∂ϕ r^-2 sinϕ cosϕ
-r^-1 sinϕ cosϕ ∂∂u/∂ϕ/∂r
-r^-2 (sinθ)^-1 cosθ sinϕ cosϕ ∂∂u/∂ϕ/∂θ

∂( ∂u/∂y )/∂y =
+(sinθ)^2 (sinϕ)^2 ∂∂u/∂r/∂r
+r^-1 sinθ cosθ (sinϕ)^2 ∂∂u/∂r/∂θ
+r^-1 sinϕ cosϕ ∂∂u/∂r/∂ϕ
+∂u/∂r r^-1 (cosθ)^2 (sinϕ)^2
+∂u/∂r r^-1 (cosϕ)^2
+r^-1 sinθ cosθ (sinϕ)^2 ∂∂u/∂θ/∂r
+r^-2 (cosθ)^2 (sinϕ)^2 ∂∂u/∂θ/∂θ
+r^-2 (sinθ)^-1 cosθ sinϕ cosϕ ∂∂u/∂θ/∂ϕ
+∂u/∂θ r^-2 (sinθ)^-1 cosθ (cosϕ)^2
-∂u/∂θ r^-2 sinθ cosθ (sinϕ)^2
-∂u/∂θ r^-2 sinθ cosθ (sinϕ)^2
+r^-1 sinϕ cosϕ ∂∂u/∂ϕ/∂r
+r^-2 (sinθ)^-1 cosθ sinϕ cosϕ ∂∂u/∂ϕ/∂θ
+r^-2 (sinθ)^-2 (cosϕ)^2 ∂∂u/∂ϕ/∂ϕ
-∂u/∂ϕ r^-2 (sinθ)^-2 (cosθ)^2 sinϕ cosϕ
-∂u/∂ϕ r^-2 (sinθ)^-2 sinϕ cosϕ
-∂u/∂ϕ r^-2 sinϕ cosϕ

∂( ∂u/∂z )/∂z =
+(cosθ)^2 ∂∂u/∂r/∂r
+∂u/∂r r^-1 (sinθ)^2
-r^-1 sinθ cosθ ∂∂u/∂r/∂θ
+r^-2 (sinθ)^2 ∂∂u/∂θ/∂θ
+∂u/∂θ r^-2 sinθ cosθ
+∂u/∂θ r^-2 sinθ cosθ
-r^-1 sinθ cosθ ∂∂u/∂θ/∂r

将以上三个式子加在一起,整理,得:

∆u = ∇·(∇u) = ∂(∂u/∂x)/∂x + ∂(∂u/∂y)/∂y + ∂(∂u/∂z)/∂z =
+(sinθ)^2 (cosϕ)^2 ∂∂u/∂r/∂r
+(sinθ)^2 (sinϕ)^2 ∂∂u/∂r/∂r
+(cosθ)^2 ∂∂u/∂r/∂r

+r^-1 sinθ cosθ (cosϕ)^2 ∂∂u/∂r/∂θ
+r^-1 sinθ cosθ (cosϕ)^2 ∂∂u/∂θ/∂r
+r^-1 sinθ cosθ (sinϕ)^2 ∂∂u/∂r/∂θ
+r^-1 sinθ cosθ (sinϕ)^2 ∂∂u/∂θ/∂r
-r^-1 sinθ cosθ ∂∂u/∂r/∂θ
-r^-1 sinθ cosθ ∂∂u/∂θ/∂r
-r^-1 sinϕ cosϕ ∂∂u/∂r/∂ϕ
-r^-1 sinϕ cosϕ ∂∂u/∂ϕ/∂r
+r^-1 sinϕ cosϕ ∂∂u/∂r/∂ϕ
+r^-1 sinϕ cosϕ ∂∂u/∂ϕ/∂r
+r^-2 (cosθ)^2 (cosϕ)^2 ∂∂u/∂θ/∂θ
+r^-2 (cosθ)^2 (sinϕ)^2 ∂∂u/∂θ/∂θ
+r^-2 (sinθ)^2 ∂∂u/∂θ/∂θ
-r^-2 (sinθ)^-1 cosθ sinϕ cosϕ ∂∂u/∂θ/∂ϕ
-r^-2 (sinθ)^-1 cosθ sinϕ cosϕ ∂∂u/∂ϕ/∂θ
+r^-2 (sinθ)^-1 cosθ sinϕ cosϕ ∂∂u/∂θ/∂ϕ
+r^-2 (sinθ)^-1 cosθ sinϕ cosϕ ∂∂u/∂ϕ/∂θ
+r^-2 (sinθ)^-2 (sinϕ)^2 ∂∂u/∂ϕ/∂ϕ
+r^-2 (sinθ)^-2 (cosϕ)^2 ∂∂u/∂ϕ/∂ϕ
+∂u/∂r r^-1 (cosθ)^2 (cosϕ)^2
+∂u/∂r r^-1 (sinϕ)^2
+∂u/∂r r^-1 (cosθ)^2 (sinϕ)^2
+∂u/∂r r^-1 (cosϕ)^2
+∂u/∂r r^-1 (sinθ)^2
+∂u/∂θ r^-2 (sinθ)^-1 cosθ (sinϕ)^2
-∂u/∂θ r^-2 sinθ cosθ (cosϕ)^2
-∂u/∂θ r^-2 sinθ cosθ (cosϕ)^2
+∂u/∂θ r^-2 (sinθ)^-1 cosθ (cosϕ)^2
-∂u/∂θ r^-2 sinθ cosθ (sinϕ)^2
-∂u/∂θ r^-2 sinθ cosθ (sinϕ)^2
+∂u/∂θ r^-2 sinθ cosθ
+∂u/∂θ r^-2 sinθ cosθ
+∂u/∂ϕ r^-2 (sinθ)^-2 (cosθ)^2 sinϕ cosϕ
+∂u/∂ϕ r^-2 (sinθ)^-2 sinϕ cosϕ
+∂u/∂ϕ r^-2 sinϕ cosϕ
-∂u/∂ϕ r^-2 (sinθ)^-2 (cosθ)^2 sinϕ cosϕ
-∂u/∂ϕ r^-2 (sinθ)^-2 sinϕ cosϕ
-∂u/∂ϕ r^-2 sinϕ cosϕ

=

∂∂u/∂r/∂r
+r^-2 ∂∂u/∂θ/∂θ
+r^-2 (sinθ)^-2 ∂∂u/∂ϕ/∂ϕ
+2 ∂u/∂r r^-1
+∂u/∂θ r^-2 (sinθ)^-1 cosθ

最后消得只剩上述5项了。再把1、4和2、5项用点技巧合并,就可以写成教科书上的形式了:

= (1/r^2) ∂( r^2 ∂u/∂r )/∂r
+ (1/r^2) cscθ ∂( sinθ ∂u/∂θ )/∂θ
+ (1/r^2) (cscθ)^2 ∂( ∂u/∂ϕ )/∂ϕ

至此完成拉普拉斯算子球坐标形式的推导。

发表评论

邮箱地址不会被公开。