最近在迁移一个处理 GPS 数据的 pipeline 到 BigQuery 上。期间在 Google Cloud 的犄角旮旯里遇到了各种各样稀奇古怪的错误,让人防不胜防。我都怀疑我是 Google Cloud 找来帮他们修 bug 的免费劳力。其中最让人心烦的是 BigQuery 的 geometry 类型仅支持 WGS 84(World Geodetic System 1984)坐标系(当然这也是国际上比较通用的坐标系),而且它的计算默认是考虑球面坐标的,这就导致了一系列坐标误差带来的结果不同。
但一开始我并没有意识到这一点。我手头上有几个不同来源的数据:
需要处理的汽车行驶 GPS 记录 epsg:4326 (WGS 84)
从地图提供商获取的地图道路数据 epsg:4612 (JGD 2000)
从日本国土地理院 获取的公开数据 epsg:6668 (JGD 2011)
理论上这几个坐标系是非常近似的。而这也正是 JGD 2000 标准设定的初衷:基于全球统一的世界坐标系 国际地球参考框架 ITRF 94 和 GRS 80 设定的椭球体。
那么 ITRF 94 和 GRS 80 究竟是啥玩意儿呢?
□ 图1. 一个理想的标准椭球体
GRS 叫 大地参考系统(Geodetic Reference System)是一套理论上的地球数学模型,它试图用一套参数来描述一个理想的、均质的一个参考椭球体。国际大地测量学和地球物理学联合会(IUGG)在 1979 年采纳的这个计算方法叫 GRS 80。
我们都知道对于一个椭球体来说,设长轴半径为 a a a ,短轴半径为 b b b ,那么这个椭球在直角坐标系 O x y z O_{xyz} O x y z 中可表示为:
x 2 a 2 + y 2 a 2 + z 2 b 2 = 1 \frac{x^2}{a^2} + \frac{y^2}{a^2} + \frac{z^2}{b^2} = 1 a 2 x 2 + a 2 y 2 + b 2 z 2 = 1
但地球在物理性质上肯定不是一个绝对刚体,随着它自己的自转公转地球都会发生一定程度的形变。加之占据了地球大部分表面的海洋,会因为地月地日的潮汐效应不断变动,整个地球就是个扭来扭去的凹凸不平的大土豆。
图2. 一个夸张 10000 倍的不平整的地球
虽说地球扭来扭去,潮汐升升落落,但它总不是在乱扭。海平面升降转换之间总该有一个中间位置,海浪在这个中间位置上下浮动。假设一下,如果地球在一个完全静止的空间中,它自己也不动的话,海洋自然也是平静的。那这个时候的平静海面不就是地球的表面了吗?
图3. 等势面与大地水准面
从这个思路出发,我们认识到,其实在一个绝对平静、不受任何干扰的全球海洋所形成的表面,其实不就是一个重力势能完全相等的一个曲面吗?那么我们只要计算出一个重力的等位势面出来,不就可以得到地球表面了吗?这个理想中的表面也叫“大地水准面”。
图4. 大地水准面也是不规则的
想象你在爬山。通常说的海拔高度,字面意思指的是距离海平面的高度。在这个高度你积累的重力势能,按理说,和你从海平面的位置爬上相同高度的位置的重力势能应该是一样的。把一块石头从等高线上的一点移动到另一点,只要高度不变,重力对它不做功。所以我们说的地图上的等高线,在物理学上就应该是“等势线”。
不过问题还没结束,地球的重力场也不是完美的对称球体。因为地球在自转,它会产生离心力影响势能。而且地球是扁的,质量其实分布不均,重力所指向的“下”并不一定完全指向地球球心。比如说在山上,山的质量产生的引力会使得在该处的重力偏向山。相同的“铅垂线”一旦拉长实际上成了一个弧形。这导致地球周围的等位势面变得非常复杂。最麻烦的是它也不是一个椭球形,我们计算的时候没有办法简便地表示它。
那怎么办呢,只能人为规定一个比较合理而且好算的一个等势面当作真实地球的重力基准面了。观察地球的重力场,我们可以理想化地认为在地球外部的真空空间中没有质量分布,这样引力势 U U U 就成了一个没有源的势场,满足拉普拉斯方程:∇ 2 U = 0 \nabla^2 U = 0 ∇ 2 U = 0 ,其中 ∇ 2 \nabla^2 ∇ 2 是拉普拉斯算子。它在笛卡尔坐标系(x , y , z x,y,z x , y , z )下的标准定义为:
∇ 2 U = ∂ 2 U ∂ x 2 + ∂ 2 U ∂ y 2 + ∂ 2 U ∂ z 2 = 0 \nabla^2 U = \frac{\partial^2 U}{\partial x^2} + \frac{\partial^2 U}{\partial y^2} + \frac{\partial^2 U}{\partial z^2} = 0 ∇ 2 U = ∂ x 2 ∂ 2 U + ∂ y 2 ∂ 2 U + ∂ z 2 ∂ 2 U = 0
□ 图6. 在笛卡尔坐标系上构建球坐标系
具体到一个球坐标系 ( r , θ , ϕ ) (r, \theta, \phi) ( r , θ , ϕ ) 上到时候,我们有
r r r :地心距离。
θ \theta θ :余纬 (Colatitude),即从北极点 (z z z 轴) 向下的角度 (0 ≤ θ ≤ π 0 \le \theta \le \pi 0 ≤ θ ≤ π )。
ϕ \phi ϕ :经度 (Longitude) (0 ≤ ϕ ≤ 2 π 0 \le \phi \le 2\pi 0 ≤ ϕ ≤ 2 π )。
笛卡尔坐标 (x , y , z x, y, z x , y , z ) 与球坐标 (r , θ , ϕ r, \theta, \phi r , θ , ϕ ) 的变换关系为:
{ x = r sin θ cos ϕ y = r sin θ sin ϕ z = r cos θ \begin{cases}
x = r \sin\theta \cos\phi \\
y = r \sin\theta \sin\phi \\
z = r \cos\theta
\end{cases} ⎩ ⎨ ⎧ x = r sin θ cos ϕ y = r sin θ sin ϕ z = r cos θ
而且 r 2 = x 2 + y 2 + z 2 r^2 = x^2 + y^2 + z^2 r 2 = x 2 + y 2 + z 2 。
接下来我们需要把拉普拉斯算子从笛卡尔坐标系转换到球坐标系上。
拉普拉斯算子在球坐标系下的推导
为了体现这个过程的一般性,也是顺带复习一下大一学的高数,这里重新推导一下。
首先我们定义一个一般的标量场 ψ \psi ψ 。在空间中移动微小距离 d l d\mathbf{l} d l ,对应的标量场 ψ \psi ψ 的变化量 d ψ d\psi d ψ 为:
d ψ = ∇ ψ ⋅ d l d\psi = \nabla \psi \cdot d\mathbf{l} d ψ = ∇ ψ ⋅ d l
在球坐标系中,微小位移矢量 d l d\mathbf{l} d l 由三段弧长组成:
d l = ( d r ) r ^ + ( r d θ ) θ ^ + ( r sin θ d ϕ ) p h i ^ d\mathbf{l} = (dr)\hat{r} + (r d\theta)\hat{\theta} + (r\sin\theta d\phi)\hat{phi} d l = ( d r ) r ^ + ( r d θ ) θ ^ + ( r sin θ d ϕ ) p hi ^
径向移动距离是 d r dr d r
角向方向移动距离是弧长 r d θ r d\theta r d θ
方位向方向移动距离是弧长 r sin θ d ϕ r\sin\theta d\phi r sin θ d ϕ
为了使 ∇ ψ ⋅ d l \nabla \psi \cdot d\mathbf{l} ∇ ψ ⋅ d l 等于全微分 d ψ = ∂ ψ ∂ r d r + ∂ ψ ∂ θ d θ + ∂ ψ ∂ ϕ d ϕ d\psi = \frac{\partial \psi}{\partial r}dr + \frac{\partial \psi}{\partial \theta}d\theta + \frac{\partial \psi}{\partial \phi}d\phi d ψ = ∂ r ∂ ψ d r + ∂ θ ∂ ψ d θ + ∂ ϕ ∂ ψ d ϕ ,∇ ψ \nabla \psi ∇ ψ 在各个基矢量方向的分量必须抵消掉弧长系数。
因此,球坐标梯度算子为:
∇ = r ^ ∂ ∂ r + θ ^ 1 r ∂ ∂ θ + ϕ ^ 1 r sin θ ∂ ∂ ϕ \nabla = \hat{r}\frac{\partial}{\partial r} + \hat{\theta}\frac{1}{r}\frac{\partial}{\partial \theta} + \hat{\phi}\frac{1}{r\sin\theta}\frac{\partial}{\partial \phi} ∇ = r ^ ∂ r ∂ + θ ^ r 1 ∂ θ ∂ + ϕ ^ r sin θ 1 ∂ ϕ ∂
为了进一步计算拉普拉斯算子 ∇ 2 ψ = ∇ ⋅ ( ∇ ψ ) \nabla^2 \psi = \nabla \cdot (\nabla \psi) ∇ 2 ψ = ∇ ⋅ ( ∇ ψ ) ,这里引入基矢量的微分关系。
在笛卡尔坐标系中,i ^ , j ^ , k ^ \hat{i}, \hat{j}, \hat{k} i ^ , j ^ , k ^ 是常矢量,导数为0。但在球坐标系中,r ^ , θ ^ , ϕ ^ \hat{r}, \hat{\theta}, \hat{\phi} r ^ , θ ^ , ϕ ^ 的方向随位置改变,它们对坐标的偏导数不为零。它们与笛卡尔基矢量的关系为:
r ^ = sin θ cos ϕ i ^ + sin θ sin ϕ j ^ + cos θ k ^ θ ^ = cos θ cos ϕ i ^ + cos θ sin ϕ j ^ − sin θ k ^ ϕ ^ = − sin ϕ i ^ + cos ϕ j ^ \begin{aligned}
\hat{r} &= \sin\theta\cos\phi \hat{i} + \sin\theta\sin\phi \hat{j} + \cos\theta \hat{k} \\
\hat{\theta} &= \cos\theta\cos\phi \hat{i} + \cos\theta\sin\phi \hat{j} - \sin\theta \hat{k} \\
\hat{\phi} &= -\sin\phi \hat{i} + \cos\phi \hat{j}
\end{aligned} r ^ θ ^ ϕ ^ = sin θ cos ϕ i ^ + sin θ sin ϕ j ^ + cos θ k ^ = cos θ cos ϕ i ^ + cos θ sin ϕ j ^ − sin θ k ^ = − sin ϕ i ^ + cos ϕ j ^
接下来对球坐标系的基矢量求偏导:
对 ∂ r \partial r ∂ r 求导:
∂ r ^ ∂ r = 0 , ∂ θ ^ ∂ r = 0 , ∂ ϕ ^ ∂ r = 0 \frac{\partial \hat{r}}{\partial r} = 0, \quad \frac{\partial \hat{\theta}}{\partial r} = 0, \quad \frac{\partial \hat{\phi}}{\partial r} = 0 ∂ r ∂ r ^ = 0 , ∂ r ∂ θ ^ = 0 , ∂ r ∂ ϕ ^ = 0
对 ∂ θ \partial \theta ∂ θ 求导:
∂ r ^ ∂ θ = θ ^ , ∂ θ ^ ∂ θ = − r ^ , ∂ ϕ ^ ∂ θ = 0 \frac{\partial \hat{r}}{\partial \theta} = \hat{\theta}, \quad
\frac{\partial \hat{\theta}}{\partial \theta} = -\hat{r}, \quad
\frac{\partial \hat{\phi}}{\partial \theta} = 0 ∂ θ ∂ r ^ = θ ^ , ∂ θ ∂ θ ^ = − r ^ , ∂ θ ∂ ϕ ^ = 0
对 ∂ ϕ \partial \phi ∂ ϕ 求导:
∂ r ^ ∂ ϕ = sin θ ϕ ^ , ∂ θ ^ ∂ ϕ = cos θ ϕ ^ , ∂ ϕ ^ ∂ ϕ = − ( sin θ r ^ + cos θ θ ^ ) \frac{\partial \hat{r}}{\partial \phi} = \sin\theta \hat{\phi}, \quad
\frac{\partial \hat{\theta}}{\partial \phi} = \cos\theta \hat{\phi}, \quad
\frac{\partial \hat{\phi}}{\partial \phi} = -(\sin\theta \hat{r} + \cos\theta \hat{\theta}) ∂ ϕ ∂ r ^ = sin θ ϕ ^ , ∂ ϕ ∂ θ ^ = cos θ ϕ ^ , ∂ ϕ ∂ ϕ ^ = − ( sin θ r ^ + cos θ θ ^ )
现在我们把梯度算子作用在梯度向量上。设 ∇ ψ = A = A r r ^ + A θ θ ^ + A ϕ ϕ ^ \nabla \psi = \mathbf{A} = A_r \hat{r} + A_\theta \hat{\theta} + A_\phi \hat{\phi} ∇ ψ = A = A r r ^ + A θ θ ^ + A ϕ ϕ ^ ,其中:
A r = ∂ ψ ∂ r , A θ = 1 r ∂ ψ ∂ θ , A ϕ = 1 r sin θ ∂ ψ ∂ ϕ A_r = \frac{\partial \psi}{\partial r}, \quad
A_\theta = \frac{1}{r}\frac{\partial \psi}{\partial \theta}, \quad
A_\phi = \frac{1}{r\sin\theta}\frac{\partial \psi}{\partial \phi} A r = ∂ r ∂ ψ , A θ = r 1 ∂ θ ∂ ψ , A ϕ = r sin θ 1 ∂ ϕ ∂ ψ
拉普拉斯算子即为在前面求得的球坐标梯度 ∇ = r ^ ∂ ∂ r + θ ^ 1 r ∂ ∂ θ + ϕ ^ 1 r sin θ ∂ ∂ ϕ \nabla = \hat{r}\frac{\partial}{\partial r} + \hat{\theta}\frac{1}{r}\frac{\partial}{\partial \theta} + \hat{\phi}\frac{1}{r\sin\theta}\frac{\partial}{\partial \phi} ∇ = r ^ ∂ r ∂ + θ ^ r 1 ∂ θ ∂ + ϕ ^ r s i n θ 1 ∂ ϕ ∂ 的基础上再求散度:
∇ 2 ψ = ∇ ⋅ A = ( r ^ ∂ ∂ r + θ ^ r ∂ ∂ θ + ϕ ^ r sin θ ∂ ∂ ϕ ) ⋅ ( A r r ^ + A θ θ ^ + A ϕ ϕ ^ ) \nabla^2 \psi
= \nabla \cdot \mathbf{A}
= \left( \hat{r}\frac{\partial}{\partial r} + \frac{\hat{\theta}}{r}\frac{\partial}{\partial \theta} + \frac{\hat{\phi}}{r\sin\theta}\frac{\partial}{\partial \phi} \right) \cdot (A_r \hat{r} + A_\theta \hat{\theta} + A_\phi \hat{\phi}) ∇ 2 ψ = ∇ ⋅ A = ( r ^ ∂ r ∂ + r θ ^ ∂ θ ∂ + r sin θ ϕ ^ ∂ ϕ ∂ ) ⋅ ( A r r ^ + A θ θ ^ + A ϕ ϕ ^ )
这里分成三部分来求和:
径向分量 A r r ^ A_r \hat{r} A r r ^ 的散度
∇ ⋅ ( A r r ^ ) = ( ∇ A r ) ⋅ r ^ + A r ( ∇ ⋅ r ^ ) \nabla \cdot (A_r \hat{r})
= (\nabla A_r) \cdot \hat{r} + A_r (\nabla \cdot \hat{r}) ∇ ⋅ ( A r r ^ ) = ( ∇ A r ) ⋅ r ^ + A r ( ∇ ⋅ r ^ )
第一项,因为只有 r ^ \hat{r} r ^ 方向的导数非零,可以直接得到
( ∇ A r ) ⋅ r ^ = ∂ A r ∂ r (\nabla A_r) \cdot \hat{r} = \frac{\partial A_r}{\partial r} ( ∇ A r ) ⋅ r ^ = ∂ r ∂ A r
第二项中 ∇ ⋅ r ^ \nabla \cdot \hat{r} ∇ ⋅ r ^ 可以展开为
∇ ⋅ r ^ = 1 r θ ^ ⋅ ∂ r ^ ∂ θ + 1 r sin θ ϕ ^ ⋅ ∂ r ^ ∂ ϕ \nabla \cdot \hat{r} = \frac{1}{r}\hat{\theta} \cdot \frac{\partial \hat{r}}{\partial \theta} + \frac{1}{r\sin\theta}\hat{\phi} \cdot \frac{\partial \hat{r}}{\partial \phi} ∇ ⋅ r ^ = r 1 θ ^ ⋅ ∂ θ ∂ r ^ + r sin θ 1 ϕ ^ ⋅ ∂ ϕ ∂ r ^
代入微分关系可以进一步得到
∇ ⋅ r ^ = 1 r θ ^ ⋅ θ ^ + 1 r sin θ ϕ ^ ⋅ ( sin θ ϕ ^ ) = 1 r + 1 r = 2 r \nabla \cdot \hat{r} = \frac{1}{r}\hat{\theta}\cdot\hat{\theta} + \frac{1}{r\sin\theta}\hat{\phi}\cdot(\sin\theta\hat{\phi}) = \frac{1}{r} + \frac{1}{r} = \frac{2}{r} ∇ ⋅ r ^ = r 1 θ ^ ⋅ θ ^ + r sin θ 1 ϕ ^ ⋅ ( sin θ ϕ ^ ) = r 1 + r 1 = r 2
加起来得到径向分量 A r r ^ A_r \hat{r} A r r ^ 的散度
∇ ⋅ ( A r r ^ ) = ∂ A r ∂ r + 2 r A r \nabla \cdot (A_r \hat{r})
= \frac{\partial A_r}{\partial r} + \frac{2}{r}A_r ∇ ⋅ ( A r r ^ ) = ∂ r ∂ A r + r 2 A r
角向分量 A θ θ ^ A_\theta \hat{\theta} A θ θ ^ 的散度
∇ ⋅ ( A θ θ ^ ) = ( ∇ A θ ) ⋅ θ ^ + A θ ( ∇ ⋅ θ ^ ) \nabla \cdot (A_\theta \hat{\theta})
= (\nabla A_\theta) \cdot \hat{\theta}
+ A_\theta (\nabla \cdot \hat{\theta}) ∇ ⋅ ( A θ θ ^ ) = ( ∇ A θ ) ⋅ θ ^ + A θ ( ∇ ⋅ θ ^ )
第一项只有 θ ^ \hat{\theta} θ ^ 方向导数贡献,可以直接得到
( ∇ A θ ) ⋅ θ ^ = 1 r ∂ A θ ∂ θ (\nabla A_\theta) \cdot \hat{\theta} = \frac{1}{r}\frac{\partial A_\theta}{\partial \theta} ( ∇ A θ ) ⋅ θ ^ = r 1 ∂ θ ∂ A θ
第二项中 ∇ ⋅ θ ^ \nabla \cdot \hat{\theta} ∇ ⋅ θ ^ 可以展开为
∇ ⋅ θ ^ = 1 r θ ^ ⋅ ∂ θ ^ ∂ θ + 1 r sin θ ϕ ^ ⋅ ∂ θ ^ ∂ ϕ \nabla \cdot \hat{\theta}
= \frac{1}{r}\hat{\theta} \cdot \frac{\partial \hat{\theta}}{\partial \theta}
+ \frac{1}{r\sin\theta}\hat{\phi} \cdot \frac{\partial \hat{\theta}}{\partial \phi} ∇ ⋅ θ ^ = r 1 θ ^ ⋅ ∂ θ ∂ θ ^ + r sin θ 1 ϕ ^ ⋅ ∂ ϕ ∂ θ ^
代入微分关系可以进一步得到
∇ ⋅ θ ^ = 1 r θ ^ ⋅ ( − r ^ ) + 1 r sin θ ϕ ^ ⋅ ( cos θ ϕ ^ ) = 0 + cos θ r sin θ = cot θ r \nabla \cdot \hat{\theta} = \frac{1}{r}\hat{\theta}\cdot(-\hat{r}) + \frac{1}{r\sin\theta}\hat{\phi}\cdot(\cos\theta\hat{\phi}) = 0 + \frac{\cos\theta}{r\sin\theta} = \frac{\cot\theta}{r} ∇ ⋅ θ ^ = r 1 θ ^ ⋅ ( − r ^ ) + r sin θ 1 ϕ ^ ⋅ ( cos θ ϕ ^ ) = 0 + r sin θ cos θ = r cot θ
加起来得到角向分量 A θ θ ^ A_\theta \hat{\theta} A θ θ ^ 的散度
A θ θ ^ = 1 r ∂ A θ ∂ θ + cot θ r A θ A_\theta \hat{\theta} = \frac{1}{r}\frac{\partial A_\theta}{\partial \theta} + \frac{\cot\theta}{r}A_\theta A θ θ ^ = r 1 ∂ θ ∂ A θ + r cot θ A θ
方位向分量 A ϕ ϕ ^ A_\phi \hat{\phi} A ϕ ϕ ^ 的散度
∇ ⋅ ( A ϕ ϕ ^ ) = ( ∇ A ϕ ) ⋅ ϕ ^ + A ϕ ( ∇ ⋅ ϕ ^ ) \nabla \cdot (A_\phi \hat{\phi})
= (\nabla A_\phi) \cdot \hat{\phi}
+ A_\phi (\nabla \cdot \hat{\phi}) ∇ ⋅ ( A ϕ ϕ ^ ) = ( ∇ A ϕ ) ⋅ ϕ ^ + A ϕ ( ∇ ⋅ ϕ ^ )
第一项只有 ϕ ^ \hat{\phi} ϕ ^ 方向导数贡献,可以直接得到
1 r sin θ ∂ A ϕ ∂ ϕ \frac{1}{r\sin\theta}\frac{\partial A_\phi}{\partial \phi} r sin θ 1 ∂ ϕ ∂ A ϕ
第二项:∇ ⋅ ϕ ^ \nabla \cdot \hat{\phi} ∇ ⋅ ϕ ^ 可以展开为
∇ ⋅ ϕ ^ = 1 r θ ^ ⋅ ∂ ϕ ^ ∂ θ + 1 r sin θ ϕ ^ ⋅ ∂ ϕ ^ ∂ ϕ \nabla \cdot \hat{\phi}
= \frac{1}{r}\hat{\theta} \cdot \frac{\partial \hat{\phi}}{\partial \theta}
+ \frac{1}{r\sin\theta}\hat{\phi} \cdot \frac{\partial \hat{\phi}}{\partial \phi} ∇ ⋅ ϕ ^ = r 1 θ ^ ⋅ ∂ θ ∂ ϕ ^ + r sin θ 1 ϕ ^ ⋅ ∂ ϕ ∂ ϕ ^
利用 ∂ ϕ ^ ∂ ϕ \frac{\partial \hat{\phi}}{\partial \phi} ∂ ϕ ∂ ϕ ^ 的结果,点积均为0。ϕ ^ \hat{\phi} ϕ ^ 垂直于 r ^ \hat{r} r ^ 和 θ ^ \hat{\theta} θ ^ 的变化方向,且 ∂ ϕ ϕ ^ \partial_\phi \hat{\phi} ∂ ϕ ϕ ^ 垂直于 ϕ ^ \hat{\phi} ϕ ^ 。所以散度为 0。
最后可以得到方位向分量 A ϕ ϕ ^ A_\phi \hat{\phi} A ϕ ϕ ^ 的散度
A ϕ ϕ ^ = 1 r sin θ ∂ A ϕ ∂ ϕ A_\phi \hat{\phi} = \frac{1}{r\sin\theta}\frac{\partial A_\phi}{\partial \phi} A ϕ ϕ ^ = r sin θ 1 ∂ ϕ ∂ A ϕ
把这三个方向的分量加起来就是:
∇ 2 ψ = ∇ ⋅ A = ( ∂ A r ∂ r + 2 r A r ) + ( 1 r ∂ A θ ∂ θ + cot θ r A θ ) + ( 1 r sin θ ∂ A ϕ ∂ ϕ ) \nabla^2 \psi
= \nabla \cdot \mathbf{A}
= (\frac{\partial A_r}{\partial r} + \frac{2}{r}A_r)
+ (\frac{1}{r}\frac{\partial A_\theta}{\partial \theta} + \frac{\cot\theta}{r}A_\theta)
+ (\frac{1}{r\sin\theta}\frac{\partial A_\phi}{\partial \phi}) ∇ 2 ψ = ∇ ⋅ A = ( ∂ r ∂ A r + r 2 A r ) + ( r 1 ∂ θ ∂ A θ + r cot θ A θ ) + ( r sin θ 1 ∂ ϕ ∂ A ϕ )
将 A r , A θ , A ϕ A_r, A_\theta, A_\phi A r , A θ , A ϕ 的定义代回:
[ ∂ ∂ r ( ∂ ψ ∂ r ) + 2 r ( ∂ ψ ∂ r ) ] + [ 1 r ∂ ∂ θ ( 1 r ∂ ψ ∂ θ ) + cot θ r ( 1 r ∂ ψ ∂ θ ) ] + [ 1 r sin θ ∂ ∂ ϕ ( 1 r sin θ ∂ ψ ∂ ϕ ) ] \left[\frac{\partial}{\partial r}\left(\frac{\partial \psi}{\partial r}\right) + \frac{2}{r}\left(\frac{\partial \psi}{\partial r}\right)\right]
+
\left[\frac{1}{r}\frac{\partial}{\partial \theta}\left( \frac{1}{r}\frac{\partial \psi}{\partial \theta} \right) + \frac{\cot\theta}{r}\left( \frac{1}{r}\frac{\partial \psi}{\partial \theta} \right)\right]
+
\left[\frac{1}{r\sin\theta}\frac{\partial}{\partial \phi}\left( \frac{1}{r\sin\theta}\frac{\partial \psi}{\partial \phi} \right)\right] [ ∂ r ∂ ( ∂ r ∂ ψ ) + r 2 ( ∂ r ∂ ψ ) ] + [ r 1 ∂ θ ∂ ( r 1 ∂ θ ∂ ψ ) + r cot θ ( r 1 ∂ θ ∂ ψ ) ] + [ r sin θ 1 ∂ ϕ ∂ ( r sin θ 1 ∂ ϕ ∂ ψ ) ]
进一步化简,我们就得到了球坐标系下的拉普拉斯算子:
∇ 2 ψ = 1 r 2 ∂ ∂ r ( r 2 ∂ ψ ∂ r ) + 1 r 2 sin θ ∂ ∂ θ ( sin θ ∂ ψ ∂ θ ) + 1 r 2 sin 2 θ ∂ 2 ψ ∂ ϕ 2 \nabla^2 \psi = \frac{1}{r^2}\frac{\partial}{\partial r}\left( r^2 \frac{\partial \psi}{\partial r} \right) + \frac{1}{r^2\sin\theta}\frac{\partial}{\partial \theta}\left( \sin\theta \frac{\partial \psi}{\partial \theta} \right) + \frac{1}{r^2\sin^2\theta}\frac{\partial^2 \psi}{\partial \phi^2} ∇ 2 ψ = r 2 1 ∂ r ∂ ( r 2 ∂ r ∂ ψ ) + r 2 sin θ 1 ∂ θ ∂ ( sin θ ∂ θ ∂ ψ ) + r 2 sin 2 θ 1 ∂ ϕ 2 ∂ 2 ψ
勒让德多项式的引入
回到地球的重力场,前面说了我们可以理想化地认为地球是一个没有源的势场 U U U ,满足拉普拉斯方程:∇ 2 U = 0 \nabla^2 U = 0 ∇ 2 U = 0 ,所以我们有:
∇ 2 U = 1 r 2 ∂ ∂ r ( r 2 ∂ U ∂ r ) + 1 r 2 sin θ ∂ ∂ θ ( sin θ ∂ U ∂ θ ) + 1 r 2 sin 2 θ ∂ 2 U ∂ ϕ 2 = 0 \nabla^2 U = \frac{1}{r^2}\frac{\partial}{\partial r}\left( r^2 \frac{\partial U}{\partial r} \right) + \frac{1}{r^2\sin\theta}\frac{\partial}{\partial \theta}\left( \sin\theta \frac{\partial U}{\partial \theta} \right) + \frac{1}{r^2\sin^2\theta}\frac{\partial^2 U}{\partial \phi^2} = 0 ∇ 2 U = r 2 1 ∂ r ∂ ( r 2 ∂ r ∂ U ) + r 2 sin θ 1 ∂ θ ∂ ( sin θ ∂ θ ∂ U ) + r 2 sin 2 θ 1 ∂ ϕ 2 ∂ 2 U = 0
前面的拉普拉斯算子经过在球坐标系下的推导,在一般的标量场 ψ \psi ψ 下可以独立拆分成三部分:径向 (r r r ),角向 (θ \theta θ ),还有方位向 (ϕ \phi ϕ )。那么我们也可以认为在地球势场 U U U 下也可以有类似的情况,所以这里设 U ( r , θ , ϕ ) U(r, \theta, \phi) U ( r , θ , ϕ ) 也有变量分离的形式解:
U ( r , θ , ϕ ) = R ( r ) ⋅ Θ ( θ ) ⋅ Φ ( ϕ ) U(r, \theta, \phi) = R(r) \cdot \Theta(\theta) \cdot \Phi(\phi) U ( r , θ , ϕ ) = R ( r ) ⋅ Θ ( θ ) ⋅ Φ ( ϕ )
然后我们利用我们设的重力场的分离解 U = R ⋅ Θ ⋅ Φ U = R \cdot \Theta \cdot \Phi U = R ⋅ Θ ⋅ Φ 代入拉普拉斯方程:
Θ Φ r 2 d d r ( r 2 d R d r ) + Φ R r 2 sin θ d d θ ( sin θ d Θ d θ ) + Θ R r 2 sin 2 θ d 2 Φ d ϕ 2 = 0 \frac{\Theta \Phi}{r^2} \frac{d}{dr} \left(r^2 \frac{dR}{dr} \right) +
\frac{\Phi R}{r^2 \sin\theta}\frac{d}{d\theta} \left(\sin\theta\frac{d\Theta}{d\theta} \right) +
\frac{\Theta R}{r^2 \sin^2\theta}\frac{d^2\Phi}{d\phi^2}
= 0 r 2 ΘΦ d r d ( r 2 d r d R ) + r 2 sin θ Φ R d θ d ( sin θ d θ d Θ ) + r 2 sin 2 θ Θ R d ϕ 2 d 2 Φ = 0
两边同时乘以 r 2 Θ Φ R \frac{r^2}{\Theta\Phi R} ΘΦ R r 2 ,并移项,得到:
1 R d d r ( r 2 d R d r ) = − 1 Θ sin θ d d θ ( sin θ d Θ d θ ) − 1 Φ sin 2 θ d 2 Φ d ϕ 2 \frac{1}{R}\frac{d}{dr}\left(r^2\frac{dR}{dr}\right) =
-\frac{1}{\Theta\sin\theta}\frac{d}{d\theta}\left(\sin\theta\frac{d\Theta}{d\theta}\right)
-\frac{1}{\Phi \sin^2\theta}\frac{d^2\Phi}{d\phi^2} R 1 d r d ( r 2 d r d R ) = − Θ sin θ 1 d θ d ( sin θ d θ d Θ ) − Φ sin 2 θ 1 d ϕ 2 d 2 Φ
现在左边只与 r r r 有关,右边只与角度有关。为了后续求解方便,我们将这个常数设为 l ( l + 1 ) l(l+1) l ( l + 1 ) ,其中 l l l 是分离常数,一般为实数。于是我们就有:
1 R d d r ( r 2 d R d r ) = l ( l + 1 ) \frac{1}{R}\frac{d}{dr}\left(r^2\frac{dR}{dr}\right) = l(l+1) R 1 d r d ( r 2 d r d R ) = l ( l + 1 )
1 Θ sin θ d d θ ( sin θ d Θ d θ ) + 1 Φ sin 2 θ d 2 Φ d ϕ 2 = − l ( l + 1 ) \frac{1}{\Theta\sin\theta}\frac{d}{d\theta}\left(\sin\theta\frac{d\Theta}{d\theta}\right)
+\frac{1}{\Phi \sin^2\theta}\frac{d^2\Phi}{d\phi^2}
=-l(l+1) Θ sin θ 1 d θ d ( sin θ d θ d Θ ) + Φ sin 2 θ 1 d ϕ 2 d 2 Φ = − l ( l + 1 )
这里的第一个式子,我们就分离出了 r r r 的方程:
1 R d d r ( r 2 d R d r ) = l ( l + 1 ) \frac{1}{R}\frac{d}{dr}\left(r^2\frac{dR}{dr}\right) = l(l+1) R 1 d r d ( r 2 d r d R ) = l ( l + 1 )
它的通解为 R ( r ) = A l r l + B l 1 r l + 1 R(r)=A_lr^l + B_l\frac{1}{r^{l+1}} R ( r ) = A l r l + B l r l + 1 1 。
给第二个式子两边同时乘以 sin 2 θ \sin^2\theta sin 2 θ ,并移项,得到:
1 Θ sin θ d d θ ( sin θ d Θ d θ ) + l ( l + 1 ) sin 2 θ = − 1 Φ d 2 Φ d ϕ 2 \frac{1}{\Theta}\sin\theta\frac{d}{d\theta}\left(\sin\theta\frac{d\Theta}{d\theta}\right)
+l(l+1)\sin^2\theta
=-\frac{1}{\Phi}\frac{d^2\Phi}{d\phi^2} Θ 1 sin θ d θ d ( sin θ d θ d Θ ) + l ( l + 1 ) sin 2 θ = − Φ 1 d ϕ 2 d 2 Φ
现在左边只与 θ \theta θ 有关,右边只与 ϕ \phi ϕ 有关。为了后续求解方便,我们再次引入常数 m 2 m^2 m 2 。于是我们就有:
− 1 Φ d 2 Φ d ϕ 2 = m 2 -\frac{1}{\Phi}\frac{d^2\Phi}{d\phi^2} = m^2 − Φ 1 d ϕ 2 d 2 Φ = m 2
1 Θ sin θ d d θ ( sin θ d Θ d θ ) + l ( l + 1 ) sin 2 θ = m 2 \frac{1}{\Theta}\sin\theta\frac{d}{d\theta}\left(\sin\theta\frac{d\Theta}{d\theta}\right)
+l(l+1)\sin^2\theta
=m^2 Θ 1 sin θ d θ d ( sin θ d θ d Θ ) + l ( l + 1 ) sin 2 θ = m 2
到这一步我们已经分离出了 ϕ \phi ϕ 的方程:
d 2 Φ d ϕ 2 = − m 2 Φ \frac{d^2 \Phi}{d\phi^2} = -m^2 \Phi d ϕ 2 d 2 Φ = − m 2 Φ
这是一个简谐振动方程,解是 Φ ( ϕ ) = B 1 cos ( m ϕ ) + B 2 sin ( m ϕ ) \Phi(\phi) = B_1\cos(m\phi)+ B_2\sin(m\phi) Φ ( ϕ ) = B 1 cos ( m ϕ ) + B 2 sin ( m ϕ ) 。这里的 m m m 必须是整数(因为转一圈 2 π 2\pi 2 π 就会回到原点)。这就和绕地球纬度方向的运动一致了:沿着纬度方向最后就会绕地一周。
针对第二个式子,我们继续整理后如下:
1 sin θ d d θ ( sin θ d Θ d θ ) + [ l ( l + 1 ) − m 2 sin 2 θ ] Θ = 0 \frac{1}{\sin\theta} \frac{d}{d\theta} \left( \sin\theta \frac{d\Theta}{d\theta} \right) + \left[ l(l+1) - \frac{m^2}{\sin^2\theta} \right] \Theta = 0 sin θ 1 d θ d ( sin θ d θ d Θ ) + [ l ( l + 1 ) − sin 2 θ m 2 ] Θ = 0
现在里面充满了三角函数 sin θ \sin\theta sin θ 。为了把它变成多项式方程,我们必须消灭三角函数。我们引入一个新的自变量 x x x ,定义为:x = cos θ x = \cos\theta x = cos θ ,它的取值范围是:当 θ \theta θ 从 0 0 0 到 π \pi π 时,x x x 从 1 1 1 到 − 1 -1 − 1 。
现在我们需要把对 θ \theta θ 的导数变成对 x x x 的导数:
d d θ = d x d θ d d x = ( − sin θ ) d d x = − 1 − x 2 d d x \frac{d}{d\theta} = \frac{dx}{d\theta} \frac{d}{dx} = (-\sin\theta) \frac{d}{dx} = -\sqrt{1-x^2} \frac{d}{dx} d θ d = d θ d x d x d = ( − sin θ ) d x d = − 1 − x 2 d x d
然后可以求得
sin θ d d θ = sin θ ( − sin θ d d x ) = − sin 2 θ d d x = − ( 1 − x 2 ) d d x \sin\theta \frac{d}{d\theta} = \sin\theta (-\sin\theta \frac{d}{dx}) = -\sin^2\theta \frac{d}{dx} = -(1-x^2) \frac{d}{dx} sin θ d θ d = sin θ ( − sin θ d x d ) = − sin 2 θ d x d = − ( 1 − x 2 ) d x d
继续代换到上面的 θ \theta θ 方程中,就可以得到一个不含任何三角函数的形式:
d d x [ ( 1 − x 2 ) d Θ d x ] + [ l ( l + 1 ) − m 2 1 − x 2 ] Θ = 0 \frac{d}{dx} \left[ (1-x^2) \frac{d\Theta}{dx} \right] + \left[ l(l+1) - \frac{m^2}{1-x^2} \right] \Theta = 0 d x d [ ( 1 − x 2 ) d x d Θ ] + [ l ( l + 1 ) − 1 − x 2 m 2 ] Θ = 0
或者展开写成标准形式:
( 1 − x 2 ) d 2 Θ d x 2 − 2 x d Θ d x + [ l ( l + 1 ) − m 2 1 − x 2 ] Θ = 0 (1-x^2) \frac{d^2\Theta}{dx^2} - 2x \frac{d\Theta}{dx} + \left[ l(l+1) - \frac{m^2}{1-x^2} \right] \Theta = 0 ( 1 − x 2 ) d x 2 d 2 Θ − 2 x d x d Θ + [ l ( l + 1 ) − 1 − x 2 m 2 ] Θ = 0
这得到了 “连带勒让德微分方程 (Associated Legendre Differential Equation)”。
连带勒让德微分方程的特点就是,只有当 l l l 是整数 (0 , 1 , 2... 0, 1, 2... 0 , 1 , 2... ) 时,这个方程在区间 x ∈ [ − 1 , 1 ] x \in [-1, 1] x ∈ [ − 1 , 1 ] 上才有有限的解(这很重要,因为物理上的势场不能无穷大)。这种形式被称为连带勒让德多项式 (Associated Legendre Polynomials),这个对 θ \theta θ 的解就是 Θ ( θ ) = ∑ l = 0 ∞ ∑ m = 0 M P l m ( x ) = ∑ l = 0 ∞ P l m ( cos θ ) \Theta(\theta) = \sum_{l=0}^\infty \sum_{m=0}^M P_l^m(x) = \sum_{l=0}^\infty P_l^m(\cos\theta) Θ ( θ ) = ∑ l = 0 ∞ ∑ m = 0 M P l m ( x ) = ∑ l = 0 ∞ P l m ( cos θ ) ,其中 P l m ( x ) P_l^m(x) P l m ( x ) 展开为:
P l m ( x ) = 1 2 l ( − 1 ) m ( 2 l − 2 m ) ! m ! ( l − m ) ! ( l − 2 m ) ! x l − 2 m P_l^m(x)
= \frac{1}{2^l} (-1)^m \frac{(2l-2m)!}{m!(l-m)!(l-2m)!}x^{l-2m} P l m ( x ) = 2 l 1 ( − 1 ) m m ! ( l − m )! ( l − 2 m )! ( 2 l − 2 m )! x l − 2 m
以上我们就得到了三个方向上的解。
R ( r ) = A l r l + B l 1 r l + 1 R(r)=A_lr^l + B_l\frac{1}{r^{l+1}} R ( r ) = A l r l + B l r l + 1 1
Θ ( θ ) = ∑ l = 0 ∞ ∑ m = 0 M P l m ( x ) \Theta(\theta) = \sum_{l=0}^\infty \sum_{m=0}^M P_l^m(x) Θ ( θ ) = l = 0 ∑ ∞ m = 0 ∑ M P l m ( x )
Φ ( ϕ ) = B 1 cos ( m ϕ ) + B 2 sin ( m ϕ ) \Phi(\phi) = B_1\cos(m\phi)+ B_2\sin(m\phi) Φ ( ϕ ) = B 1 cos ( m ϕ ) + B 2 sin ( m ϕ )
但是对于径向上的解,我们的求解区域是地球表面以外的空间:r > R earth r > R_{\text{earth}} r > R earth 。
首先看 A l r l A_l r^l A l r l ,当 r → ∞ r \to \infty r → ∞ (飞向宇宙深处)时,对于 l = 0 l = 0 l = 0 :A 0 A_0 A 0 是常数。对于 l ≥ 1 l \ge 1 l ≥ 1 :A l r l A_l r^l A l r l 会趋向于无穷大。也就是说如果 l ≥ 1 l \ge 1 l ≥ 1 ,意味着你离地球越远,地球的引力势就越强。这显然违反了物理常识。因此,为了满足物理现实,所以这一部分的 A l = 0 A_l = 0 A l = 0 。
对于另外一部分 B l 1 r l + 1 B_l \frac{1}{r^{l+1}} B l r l + 1 1 ,当 r → ∞ r \to \infty r → ∞ 时,1 r l + 1 \frac{1}{r^{l+1}} r l + 1 1 趋向于 0。这完全符合我们的预期:离地球越远,引力影响越微弱,最终消失。所以,我们保留这一项。
这样一来,径向解 R ( r ) R(r) R ( r ) 就变成:
R ( r ) = B l 1 r l + 1 = B l m r l + 1 R(r) = B_l\frac{1}{r^{l+1}} = \frac{B_{lm}}{r^{l+1}} R ( r ) = B l r l + 1 1 = r l + 1 B l m
因此,拉普拉斯方程 ∇ 2 U = 0 \nabla^2 U = 0 ∇ 2 U = 0 在球坐标系下的通解就是径向解和角向解以及方位角向解的乘积,并对所有可能的 l l l 和 m m m 进行叠加:
U ( r , θ , ϕ ) = R ( r ) ⋅ Θ ( θ ) ⋅ Φ ( ϕ ) = ∑ l = 0 ∞ ∑ m = − l l B l m r l + 1 P l m ( x ) ( B 1 cos ( m ϕ ) + B 2 sin ( m ϕ ) ) U(r, \theta, \phi)
= R(r) \cdot \Theta(\theta) \cdot \Phi(\phi)
= \sum_{l=0}^{\infty} \sum_{m=-l}^{l}
\frac{B_{lm}}{r^{l+1}}
P_l^m(x)
\left( B_1\cos(m\phi)+ B_2\sin(m\phi) \right) U ( r , θ , ϕ ) = R ( r ) ⋅ Θ ( θ ) ⋅ Φ ( ϕ ) = l = 0 ∑ ∞ m = − l ∑ l r l + 1 B l m P l m ( x ) ( B 1 cos ( m ϕ ) + B 2 sin ( m ϕ ) )
不过现在还有一个量纲混乱的问题,
当 l = 0 l=0 l = 0 时,项是 1 / r 1/r 1/ r ,所以 B 0 B_0 B 0 的单位是 m 3 / s 2 m^3/s^2 m 3 / s 2 。
当 l = 2 l=2 l = 2 时,项是 1 / r 3 1/r^3 1/ r 3 ,所以 B 2 B_2 B 2 的单位是 m 5 / s 2 m^5/s^2 m 5 / s 2 。
我们强制提取出公因子 G M r \frac{GM}{r} r GM ,并引入地球半径 a a a 来消除量纲。公式变成了这样:
U ( r , θ , ϕ ) = G M r ∑ l = 0 ∞ ∑ m = 0 l ( a r ) l P ˉ l m ( cos θ ) [ C ˉ l m cos ( m ϕ ) + S ˉ l m sin ( m ϕ ) ] U(r, \theta, \phi) = \frac{GM}{r} \sum_{l=0}^{\infty} \sum_{m=0}^{l} \left( \frac{a}{r} \right)^l \bar{P}_{lm}(\cos\theta) [ \bar{C}_{lm} \cos(m\phi) + \bar{S}_{lm} \sin(m\phi) ] U ( r , θ , ϕ ) = r GM l = 0 ∑ ∞ m = 0 ∑ l ( r a ) l P ˉ l m ( cos θ ) [ C ˉ l m cos ( m ϕ ) + S ˉ l m sin ( m ϕ )]
GRS 80 的定义
GRS80 定义了一个“理想的旋转椭球体”。我们取一个二维的椭圆(子午圈)。以短轴(Z轴)为中心,将其旋转 360 度。这就形成了一个旋转椭球体。它绕 Z 轴(自转轴)完全对称。
这样一来,只要你的纬度 (θ \theta θ ) 和高度 (r r r ) 是一样的,你脚下的地球形状就是完全一样的,地下的质量分布也是完全一样的。既然质量分布与经度无关,那么产生的引力势自然也与经度无关。
我们在前面推导过,通用的球谐函数项是:
P l m ( cos θ ) ⋅ [ C l m cos ( m ϕ ) + S l m sin ( m ϕ ) ] P_l^m(\cos\theta) \cdot [C_{lm} \cos(m\phi) + S_{lm} \sin(m\phi)] P l m ( cos θ ) ⋅ [ C l m cos ( m ϕ ) + S l m sin ( m ϕ )]
这里的 m m m (Order, 次数) 专门负责描述随经度 ϕ \phi ϕ 的变化频率。在 GRS80 中,由于定义了旋转对称性 (Rotational Symmetry),意味着势场 U U U 对 ϕ \phi ϕ 的导数必须为 0:
∂ U ∂ ϕ = 0 \frac{\partial U}{\partial \phi} = 0 ∂ ϕ ∂ U = 0
为了满足这个条件,数学上唯一的选择就是强制所有 m ≠ 0 m \neq 0 m = 0 的系数全部为零。只保留 m = 0 m=0 m = 0 的项。
cos ( 0 ⋅ ϕ ) + sin ( 0 ⋅ ϕ ) = 1 + 0 = 1 \cos(0 \cdot \phi) + \sin(0 \cdot \phi) = 1 + 0 = 1 cos ( 0 ⋅ ϕ ) + sin ( 0 ⋅ ϕ ) = 1 + 0 = 1
到最后 GRS80 的重力势公式就简化成了:
U ( r , θ ) = G M r [ 1 − ∑ n = 1 ∞ J 2 n ( a r ) 2 n P 2 n ( cos θ ) ] + 1 2 ω 2 r 2 sin 2 θ U(r, \theta) = \frac{GM}{r} \left[ 1 - \sum_{n=1}^{\infty} J_{2n} \left( \frac{a}{r} \right)^{2n} P_{2n}(\cos\theta) \right] + \frac{1}{2}\omega^2 r^2 \sin^2\theta U ( r , θ ) = r GM [ 1 − n = 1 ∑ ∞ J 2 n ( r a ) 2 n P 2 n ( cos θ ) ] + 2 1 ω 2 r 2 sin 2 θ
这里用到的 P 2 n ( cos θ ) P_{2n}(\cos\theta) P 2 n ( cos θ ) 其实就是 P 2 n 0 ( cos θ ) P_{2n}^0(\cos\theta) P 2 n 0 ( cos θ ) 。