Предполагая, что есть хотя бы одно решение для уравнения f (x, y) = 0. Тогда вы можете сформулировать его как ограниченную задачу оптимизации, чтобы получить решение, наиболее близкое к данному начальному предположению:
from scipy.optimize import minimize
import numpy as np
# We want to minimize ||f(x)-xinit|| subject to f(x) = 0
f = lambda x: x[0] + 2*x[1]
# the euclidean norm of f-xinit
objfun = lambda x, xinit: np.sqrt(np.sum((f(x)-xinit)**2))
# initial guess
xinit = [1, 1]
# constraint f(x) = 0:
constr = {"type": "eq", "fun": f}
minimize(fun=objfun, args=(xinit,), x0=xinit, constraints=constr)
В случае отсутствия решения для уравнения f (x, y) = 0, вы можете попытаться минимизировать | f (x, y) |без ограничений.