有没有一种方法可以使用sympy绘制3变量隐式方程。按照文档进行操作,它仅支持隐式2d图。还是有其他使用python绘制3d图的选项,其中等式可以是用户的输入

最佳答案

我将我的评论变成答案。我建议为此任务使用mayavicontour3d。您始终可以将隐式函数重写为f(x,y,z)=0。对于一个球体,我们有x^2 + y^2 + z^2 = r^2,可以将其重写为f(x,y,z) = x^2 + y^2 + z^2 - r^2 = 0

下面是一些例子

import numpy as np
from mayavi import mlab

mlab.clf()
x, y, z = np.mgrid[-3:3:50j, -3:3:50j, -3:3:50j]

# Plot a sphere of radius 1
values = x*x + y*y + z*z - np.sqrt(3)
mlab.contour3d(x, y, z, values, contours=[0])
mlab.axes()

# Plot a torus
R = 2
r = 1
values = (R - np.sqrt(x**2 + y**2))**2 + z**2 - r**2
mlab.figure()
mlab.contour3d(x, y, z, values, contours=[0])
mlab.axes()

# Plot a Scherk's second surface
x, y, z = np.mgrid[-4:4:100j, -4:4:100j, -8:8:100j]
values = np.sin(z) - np.sinh(x)*np.sinh(y)
mlab.figure()
mlab.contour3d(x, y, z, values, contours=[0])
mlab.axes()
mlab.show()

结果就是

领域:

圆环面:

斯克的第二面:

关于python - 是否可以使用sympy绘制隐式3d方程?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29054828/

10-10 15:00