球谐函数展开的数值计算

2024-09-28 19:21:27 发布

您现在位置:Python中文网/ 问答频道 /正文

为了解决一个更复杂的问题,我试图理解球谐函数展开式,但是我期望从一个非常简单的计算中得到的结果是不正确的。我不知道为什么会这样。在


一点理论:众所周知,球面上的函数(\mathbb{R}^{3})可以定义为某个常数系数和球面谐波的无穷和:

球谐函数定义为:

其中是关联的勒让德多项式。在

最后,常数系数可计算如下(类似于傅立叶变换):


问题:假设我们有一个以为中心的球体,其中曲面上的函数等于所有点。我们要计算常数系数,然后用近似法反算出曲面函数。由于,常数系数的计算简化为:

其数值(在Python中)可以用以下方法近似:

def Ylm(l,m,theta,phi):
    return scipy.special.sph_harm(m,l,theta,phi)

def flm(l,m):
    phi, theta = np.mgrid[0:pi:101j, 0:2*pi:101j]
    return Ylm(l,m,theta,phi).sum()

然后,通过计算上的带限和,当对于任何给定点,我希望看到。在

^{pr2}$

但是对于,它给了我,而不是{img21}$。对于,它给了我

我知道这似乎是一道数学题,但公式应该是正确的。问题似乎出在我的计算上。这可能是一个非常愚蠢的错误,但我看不出来。有什么建议吗?在

谢谢


Tags: 函数return定义defpi常数理论球面