Python 如何绘制多项式函数绕y轴旋转的立体图?
函数Python 如何绘制多项式函数绕y轴旋转的立体图?,python,matplotlib,plot,3d,Python,Matplotlib,Plot,3d,函数y=x**2绕y轴旋转的立体可以使用以下代码绘制: import numpy as np import matplotlib.pyplot as plt import mpl_toolkits.mplot3d.axes3d as axes3d from matplotlib import cm np.seterr(divide='ignore', invalid='ignore') fig = plt.figure() ax = fig.add_subplot(111, projecti
y=x**2
绕y轴旋转的立体可以使用以下代码绘制:
import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d.axes3d as axes3d
from matplotlib import cm
np.seterr(divide='ignore', invalid='ignore')
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ll, ul = 0, 1
u = np.linspace(ll, ul, 60)
v = np.linspace(0, 2*np.pi, 60)
U, V = np.meshgrid(u, v)
Z = U
X = np.sqrt(Z)*np.cos(V)
Y = np.sqrt(Z)*np.sin(V)
ax.set_xlabel('Y axis')
ax.set_ylabel('X axis')
ax.set_zlabel('Z axis')
ax.plot_surface(X, Y, Z, cmap=plt.cm.YlGnBu_r)
plt.show()
此代码仅绘制函数x=sqrt(y)
的旋转立体,该函数是y=x**2
的逆函数。但如何绘制函数的旋转立体图:
y = x**5 + x**4 + x**3 + x**2 + x
?从(U,V)
参数空间到(X,Y,Z)
坐标的映射可以非常灵活。
通常,U
被选择为类似于np.linspace(ll,ul,100)
,并被视为等于Y
(如果Y
是旋转轴)。但是你不必那样使用U
。
相反,U
可以表示半径:
ll, ul = 0, 1
u = np.linspace(ll, ul, 100)
v = np.linspace(0, 2*np.pi, 60)
U, V = np.meshgrid(u, v)
然后可以根据半径定义X
,Y
,Z
:
Y = U**5 + U**4 + U**3 + U**2 + U
X = U*np.cos(V)
Z = U*np.sin(V)
从
(U,V)
参数空间到(X,Y,Z)
坐标的映射可以非常灵活。
通常,U
被选择为类似于np.linspace(ll,ul,100)
,并被视为等于Y
(如果Y
是旋转轴)。但是你不必那样使用U
。
相反,U
可以表示半径:
ll, ul = 0, 1
u = np.linspace(ll, ul, 100)
v = np.linspace(0, 2*np.pi, 60)
U, V = np.meshgrid(u, v)
然后可以根据半径定义X
,Y
,Z
:
Y = U**5 + U**4 + U**3 + U**2 + U
X = U*np.cos(V)
Z = U*np.sin(V)
是的。我也这么做了,但我不知道为什么它会起作用,这就是我问你的原因。是的。我也这么做了,但我不知道为什么它会起作用,这就是我问你的原因。