gpt4 book ai didi

python - 在 Python 中可视化球谐函数

转载 作者:太空狗 更新时间:2023-10-30 01:19:11 36 4
gpt4 key购买 nike

我正在尝试为我的大学项目绘制球谐函数。我想描述以下公式,

Y = cos(theta)

为此,我写了这段代码

import numpy as np
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt

def sph2cart(r, phi, tta):
''' r is from 0 to infinity '''
''' phi is from 0 to 2*pi '''
''' tta is from 0 to pi '''
x = r* np.sin(tta)* np.cos(phi)
y = r* np.sin(tta)* np.sin(phi)
z = r* np.cos(tta)
return x, y, z

# phi running from 0 to pi and tta from 0 to pi
phi = np.linspace(0, 2* np.pi, 25)
tta = np.linspace(0, np.pi, 25)
# meshgrid to generate points
phi, tta = np.meshgrid(phi, tta)

# THIS IS THE FUNCTION
Y = np.cos(tta)
# finally all things in cartesian co-ordinate system
# Note that "Y" is acting as "r"
x, y, z = sph2cart( Y, phi, tta)

# plotting :-
fig = plt.figure()
ax = fig.add_subplot( 111 , projection='3d')
ax.plot_surface(x, y, z, linewidth = 0.5, edgecolors = 'k')

然后,得到球体。这是不正确的,因为实际结果是哑铃状的。看到这张图片的第二行,

https://upload.wikimedia.org/wikipedia/commons/thumb/6/62/Spherical_Harmonics.png/1024px-Spherical_Harmonics.png

最佳答案

维基百科文章中的图片Spherical harmonics是用球谐函数的绝对值作为r坐标,然后根据谐函数的符号对曲面进行着色得到的。这是一个近似值。

x, y, z = sph2cart(np.abs(Y), phi, tta)

fig = plt.figure()
ax = fig.add_subplot( 111 , projection='3d')

from matplotlib import cm
ax.set_aspect('equal')
ax.plot_surface(x, y, z, linewidth = 0.5, facecolors = cm.jet(Y), edgecolors = 'k')

dumbbell

当您使用 Y 本身作为 r 时,两个半球(正 Y 和负 Y)最终映射到上述表面的同一半。

关于python - 在 Python 中可视化球谐函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49158505/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com