在scipy(http://docs.scipy.org/doc/scipy-0.15.0/reference/generated/scipy.special.sph_harm.html)的文档中,它明确指出 scipy.special.sph_harm 返回一个复杂的float。由链接中显示的表达式给出。但是,当尝试插入某些值时,我仍然只能获得预期的可忽略值。
如果您计算链接中的数学表达式,我认为真实(即非虚构)值更接近预期的绝对值:
from scipy.special import sph_harm,lpmv
m=2;n=5;th=2.1;ph=0.4
print(sph_harm(m,n,th,ph))
#returns (0.36574435883734352+2.5429495084534193e-310j) (essentially no imag.part
def norm(m,n): #sqrt part
return np.sqrt((2*n+1)/(4*np.pi) * \
np.math.factorial(n-m)/np.math.factorial(n+m))
def ie(m,theta): #imaginary exponential part
return np.exp(1j*m*theta)
out=norm(m,n)*ie(m,th)*lpmv(m,n,np.cos(ph)) #lpmv=legendre
print(out,abs(out))
#returns (-0.179310129764-0.31877392206j) 0.365744358837
sph_harm是否有问题,或者我以某种方式错误地使用它?
我正在使用scipy v0.15.1