概述
#球谐函数Ylm:sympy.Ynm(l,m,theta,phi)
#3D作图库:mpl_toolkits.mplot3d中Axes3D和numpy的array
import sympy
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as npy
pi=sympy.pi
theta=[pi*sympy.Rational(_,100) for _ in range(101)]
phi=[pi*sympy.Rational(-50+_,50) for _ in range(101)]
#画一下Y41
def f(theta,phi):
R=sympy.Ynm(4,1,theta,phi).as_real_imag()
return float(R[0]**2+R[1]**2)
#这里直接float(R*R.conjugate())会报错???
X=lambda theta,phi:float(f(theta,phi)*sympy.sin(theta)*sympy.cos(phi))
Y=lambda theta,phi:float(f(theta,phi)*sympy.sin(theta)*sympy.sin(phi))
Z=lambda theta,phi:float(f(theta,phi)*sympy.cos(theta))
N1,N2=len(theta),len(phi)
x=npy.array([[X(theta[i],phi[j])for j in range(N2)] for i in range(N1)])
y=npy.array([[Y(theta[i],phi[j])for j in range(N2)] for i in range(N1)])
z=npy.array([[Z(theta[i],phi[j])for j in range(N2)] for i in range(N1)])
fig=plt.figure()
ax=Axes3D(fig) #建立三维坐标系
ax.set_xlim((-0.2,0.2))
ax.set_ylim((-0.2,0.2))
ax.set_zlim((-0.2,0.2)) #设置坐标范围
ax.plot_surface(x,y,z,rstride=1, cstride=1)
#rstride,cstride是步长,1是最小(最精细)
plt.show()
最后
以上就是细腻背包为你收集整理的fig r函数_零八:球谐函数\\附3D作图的全部内容,希望文章能够帮你解决fig r函数_零八:球谐函数\\附3D作图所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复