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)


是的。我也这么做了,但我不知道为什么它会起作用,这就是我问你的原因。是的。我也这么做了,但我不知道为什么它会起作用,这就是我问你的原因。