我是靠谱客的博主 细腻背包,最近开发中收集的这篇文章主要介绍fig r函数_零八:球谐函数\\附3D作图,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

#球谐函数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()

b79348a5e94996f73c6e58a52300d8e7.png
|Y41|^2

最后

以上就是细腻背包为你收集整理的fig r函数_零八:球谐函数\\附3D作图的全部内容,希望文章能够帮你解决fig r函数_零八:球谐函数\\附3D作图所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部