贡献者: addis
库仑势能的球谐展开为
和 “平面波的球谐展开” 中的证明类似,我们既可以直接积分得到径向函数,根据式 2 还可以假设 $ \boldsymbol{\mathbf{r}} '$ 在 $z$ 轴。也可以在球坐标中解偏微分方程。
除 $ \boldsymbol{\mathbf{r}} '$ 点外,$f( \boldsymbol{\mathbf{r}} ) = \frac{1}{ \left\lvert \boldsymbol{\mathbf{r}} - \boldsymbol{\mathbf{r}} ' \right\rvert }$ 符合拉普拉斯方程。球坐标系中拉普拉斯方程的通解为(式 15 )
接下来对比系数即可求出 $C_{l,m}$ 和 $C_{l,m}'$。
图 1 的 Matlab 代码如下,其中 surfSph
函数见 “Matlab 球坐标中的分布图”。SphHarm
函数见 “球谐函数数值计算”。
% expansion of 1/|r-r'| into Y_lm
% r' in z axis
lmax = 20;
r0 = 1;
Nr = 300; Nth = 300;
r = linspace(1e-5, 2.5, Nr);
mark = r <= r0;
th = linspace(0, 2*pi, Nth); ph = zeros(size(th));
data = zeros(Nr, Nth);
for l = 0:lmax
% eq_PChYlm_1
data(mark, :) = data(mark, :) + ...
sqrt(4*pi/(2*l+1)) * (r(mark).').^l ./ r0^(l+1) ...
.* SphHarm(l, 0, th, ph);
data(~mark, :) = data(~mark, :) + ...
sqrt(4*pi/(2*l+1)) * r0^l ./ (r(~mark).').^(l+1) ...
.* SphHarm(l, 0, th, ph);
end
[R, Th] = ndgrid(r, th); Ph = zeros(size(Th));
figure;
subplot(1, 2, 1);
surfSph(R, Th, Ph, data);
caxis([0, 5]);
title(['l <= ' num2str(l)]);
colorbar; colormap jet;
subplot(1, 2, 2);
plot(r, data(:,1));
hold on; plot(r, 1./abs(r-r0), '.');
legend('球谐展开', '1/|z-z''|');
axis([0, r(end), 0, 5]);
xlabel z;
title(['l <= ' num2str(l)]);