求助
老铁们,写了一个画图的程序,老是提示我 'Y' is not defined,能帮我看看是哪一步做错了吗?#引入第三方库
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
#建立三维数据
θ=np.arange(0,np.pi,0.1)
φ=np.arange(0,2*np.pi,0.1)
θ,φ = np.meshgrid(θ,φ)
#球函数字典
dic1={
0:np.sin(φ),
1:(np.cos(θ))*(np.sin(φ)),
2:((3*(np.cos(2*θ))+1)/4)*(np.sin(φ))
}
dic2={
1:(np.cos(θ))*(np.sin(φ)),
2:3*(np.sin(θ))*(np.cos(θ))*(np.sin(φ)),
4:3*(np.sin(θ))*(np.sin(θ))*(np.sin(φ))
}
#定义三维坐标轴
fig=plt.figure()
ax=Axes3D(fig)
def main():
l=input('请输入阶数l:')
m=input('请输入m:')
x = int(l)
y = int(m)
t=x*y
Y= sp_main(t)
#球函数的阶数
def sp_main(t):
if t==0:
Y=dic1.get(t)
Y= np.maximum(Y, 0)
else:
Y=dic2.get(t)
Y= np.maximum(Y, 0)
return Y
#作图
plt.rcParams['font.sans-serif']=['SimHei']
ax.set_xlabel('仰角θ')
ax.set_ylabel('方位角φ')
ax.set_zlabel('球函数Y')
ax.set_xlim(0,np.pi)
ax.set_ylim(0,2*np.pi)
ax.set_zlim(0,1)
ax.plot_surface(θ, φ, Y)
plt.show()
if __name__ == "__main__":
main()
ax.plot_surface(θ, φ, Y)
这一行的Y的确没有被定义过
在球函数的阶数中出现过 Y,但是那是局部变量。
此外就没有见过Y的定义了 #引入第三方库
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
#建立三维数据
θ=np.arange(0,np.pi,0.1)
φ=np.arange(0,2*np.pi,0.1)
θ,φ = np.meshgrid(θ,φ)
#球函数字典
dic1={
0:np.sin(φ),
1:(np.cos(θ))*(np.sin(φ)),
2:((3*(np.cos(2*θ))+1)/4)*(np.sin(φ))
}
dic2={
1:(np.cos(θ))*(np.sin(φ)),
2:3*(np.sin(θ))*(np.cos(θ))*(np.sin(φ)),
4:3*(np.sin(θ))*(np.sin(θ))*(np.sin(φ))
}
#定义三维坐标轴
fig=plt.figure()
ax=Axes3D(fig)
#球函数的阶数
def sp_main(t):
if t==0:
Y=dic1.get(t)
Y= np.maximum(Y, 0)
else:
Y=dic2.get(t)
Y= np.maximum(Y, 0)
return Y
def main():
l=input('请输入阶数l:')
m=input('请输入m:')
x = int(l)
y = int(m)
t=x*y
Y= sp_main(t)
#作图
plt.rcParams['font.sans-serif']=['SimHei']
ax.set_xlabel('仰角θ')
ax.set_ylabel('方位角φ')
ax.set_zlabel('球函数Y')
ax.set_xlim(0,np.pi)
ax.set_ylim(0,2*np.pi)
ax.set_zlim(0,1)
ax.plot_surface(θ, φ, Y)
plt.show()
if __name__ == "__main__":
main() 永恒的蓝色梦想 发表于 2020-8-8 18:00
这个为什么没有图像出来? snowJR 发表于 2020-8-8 18:19
这个为什么没有图像出来?
你写的代码,问我咯?
页:
[1]