Насколько я знаю, это невозможно. Вы должны решить это уравнение численно самостоятельно. Использование scipy.optimize - хорошая идея. Простейший случай заключается в том, что вы знаете диапазон поверхности, который хотите построить, и просто создавайте регулярную сетку по x и y и пытаетесь решить уравнение F (xi, yi, z) = 0 для z, давая начальную точка z. Ниже приведен очень грязный код, который может помочь вам
from scipy import *
from scipy import optimize
xrange = (0,1)
yrange = (0,1)
density = 100
startz = 1
def F(x,y,z):
return x**2+y**2+z**2-10
x = linspace(xrange[0],xrange[1],density)
y = linspace(yrange[0],yrange[1],density)
points = []
for xi in x:
for yi in y:
g = lambda z:F(xi,yi,z)
res = optimize.fsolve(g, startz, full_output=1)
if res[2] == 1:
zi = res[0]
points.append([xi,yi,zi])
points = array(points)