球谐函数数值计算

             

预备知识 球谐函数

   目前 Matlab 并不直接提供球谐函数,而只提供连带勒让德多项式(legendre).以下给出 Matlab 中计算球谐函数的程序.

代码 1:Ylm.m
% 计算球谐函数 Y_{lm}
% 使用 Condon–Shortley 相位(和 Mathematica 相同)
% l, m 必须是整数标量
% 角度 Th 和 Ph 可以是任意实数
% Th 和 Ph 可以是矩阵, 尺寸必须相同, 输出 Y_lm 的尺寸也相同
function Y_lm = SphHarm(l,m,Th,Ph)
mark = mod(Th,2*pi) > pi;
Ph(mark) = Ph(mark) + pi;
Sign = sign(m);
m = abs(m);
P_lm = legendre(l,cos(Th(:)));
P_lm = P_lm(m+1,:);

% 归一化因子
Y_lm = zeros(size(Th));
N_lm = sqrt((2*l+1)*factorial(l-m)./(4*pi*factorial(l+m)));
if Sign >= 0
    Y_lm(:) = N_lm * P_lm' .* exp(1i*m*Ph(:));
else
    Y_lm(:) = (-1)^m * N_lm * P_lm' .* exp(-1i*m*Ph(:));
end
end

致读者: 小时百科一直以来坚持所有内容免费无广告,这导致我们处于严重的亏损状态。 长此以往很可能会最终导致我们不得不选择会员制,大量广告,内容付费等。 因此,我们请求广大读者热心打赏 ,使网站得以健康发展。 如果看到这条信息的每位读者能慷慨打赏 10 元,我们一个星期内就能脱离亏损, 并保证网站能在接下来的一整年里向所有读者继续免费提供优质内容。 但遗憾的是只有不到 1% 的读者愿意捐款, 他们的付出帮助了 99% 的读者免费获取知识, 我们在此表示感谢。

         

© 小时科技 保留一切权利