如何绘制多项式函数绕y轴的旋转实体?

问题描述 投票:0回答:1

可以使用以下代码绘制函数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

可以使用以下代码绘制绕y轴旋转的函数y = x ** 2的立体图:将numpy导入为np导入matplotlib.pyplot作为plt导入mpl_toolkits.mplot3d.axes3d作为axis3d ...] >

python matplotlib plot 3d
1个回答
3
投票

(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)
© www.soinside.com 2019 - 2024. All rights reserved.