R. = PolynomialRing(QQ, order='lex') p = (x-u)^2 + (y-v)^2 + z^2 - 1/10 dpdt = -v*diff(p, u) + u*diff(p, v) time = u^4 + v^2 - 1 I = ideal(p, dpdt, time) G = I.groebner_basis() eqn = G[-1] print(eqn) # plotting var('x0 y0') eqn = eval(str(eqn).replace('^', '**').replace('x', 'x0').replace('y', 'y0')) implicit_plot3d(eqn, (-2, 2), (-2, 2), (-2, 2), color='green').show()