3D 球谐函数可视化

网上看到很多画球谐函数的文章,估计文章作者本人都没理解画的是什么。为什么有的球谐函数图片不是一个球面分布?为什么球面上有各种颜色分布?我下面会针对各种疑惑进行解答。

首先要理解球谐函数是什么

球谐函数是一个函数,这个函数有两个自变量,分别是极角 θ\theta 和方位角 ϕ\phi。有的讲球谐函数的书里会讲这两个变量合为一个变量 Ω\Omega,这个是立体角,可以理解为沿着 z 轴方向的向量以原点为旋转中心,先往 z 轴的反方向画个 θ\theta 的扇形,这个扇形再以 z 轴为旋转轴,以 xy 平面为参考面逆时针旋转 ϕ\phi

Solid Angle

这里我将球坐标系中的 r 设为了 1。实际上球谐函数是没有 r 这个变量的,只是关于立体角的函数,但为了让人能够理解球谐函数,就用一整个球面,也就是完整的立体角(04π0\sim4\pi,球表面积 4πr24\pi r^2r2r^2)来给出球谐函数自变量的取值范围。

知道了自变量和自变量的取值范围,球谐函数的值就是因变量,也就是结果。这个结果有好几种表达方式:

  1. 在球面上用不同的颜色表示球谐函数值的大小;
  2. 在球面上用相对单位 r 的偏差值的 Δr 来表示球谐函数值的大小;
  3. 不用球面了,直接用球谐函数值的绝对值表示 r,在给定的 θ\thetaϕ\phi 下根据 Ylm|Y_l^m| 作为 r 来画立体图。用 YlmY_l^m 的实部给表面上色,值越大越红温,越小越蓝温。

球谐函数的表示方法

球谐函数的表达式大家都知道

Ylm(θ,ϕ)=Nl,mPlm(cosθ)eimϕ Y_l^m(\theta,\phi)=N_{l,m}\cdot P_l^m(\cos\theta)\cdot e^{im\phi}

其中 Nl,mN_{l,m} 是归一化常数,Plm(cosθ)P_l^m(\cos\theta) 是连带勒让德函数,θ\theta 是极角,ϕ\phi 是方位角。

虽然连带勒让德函数是实函数(各种 sinθ\sin\thetacosθ\cos\theta 的组合),但方位角函数是复指数,存在虚数,在实坐标系下你画不出来啊…

由于化学、量子力学里常用的是 实球谐函数(因为轨道是实的)。为了让函数变成实数,需要把 m=±1m=\pm1 的复球谐函数做如下线性组合:

px12(Y1,+1Y1,1) p_x \propto \frac{1}{\sqrt{2}}(Y_{1,+1}-Y_{1,-1})

配上系数 1/21/\sqrt{2} 是为了做归一化,所以维基百科的表格中,极坐标表达式比简单乘积多了一个 1/21/\sqrt{2}

因此这里我们 关注的重点是球谐函数 YlmY_l^m 的实部和它的大小

球谐函数绘图分析

球谐函数可视化工具我已经推送到了 github 仓库里,仓库地址 https://github.com/Loli-Eternally/Spherical-Harmonics-Viewer.git

我们对各阶球谐函数的示意图进行分析

多个球谐函数对比

这里只有 Y00Y_0^0 是一个球,因为它的结果是一个常数,所以 r 为常数,就是一个球。

其余的结果有的是哑铃状,有的是甜甜圈状,这是因为确定的 θ\thetaϕ\phi 下,YlmY_l^m 的绝对值,也就是 r 的大小一直在变。所以你看到的各种奇形怪状的球谐函数图,都是 r=Ylmr=|Y_l^m|r=Ylm/maxYlmr=|Y_l^m|/\max|Y_l^m|(用自己的最大值归一化了)的结果。

为了表示实球谐函数的结果,也就是实数那部分的情况,这里就用 colormap 来表现数值大小了,数值越高越红温,具体实现方式看仓库代码。

总结

  1. 球谐函数可以看成二元函数(θ\thetaϕ\phi),也可以看成一元函数(立体角 Ω\Omega);
  2. 如果球谐函数绘图都是一个球,那么球面上的颜色代表的是球谐函数的实数大小或者绝对值大小(具体看绘图定义);
  3. 如果球谐函数绘图是各种奇形怪状,那么立体表面距离原点的长度为球谐函数绝对值,如果表面还有颜色,那就代表球谐函数的实部大小:越红温值越大。