Определение задачи
Я пытаюсь вычислить точки пересечения геометрических объектов, таких как две плоскости и сфера, в питоне.Рассмотрим, например, эти три объекта:
Эта система дает два решения:
Я хотел бы знать, существует ли библиотека Python, которая может помочь в разработке решателя для вычисления этих пересечений.Я ищу что-то, работающее как Wolfram alpha, где мы можем ввести три уравнения, и оно возвращает все возможные решения, когда для простоты существует конечное число решений.
То, что я пробовал
Я пытался с SymPy, но он возвращает []
:
from sympy.solvers import solve
from sympy import Symbol
x = Symbol('x')
y = Symbol('y')
z = Symbol('z')
solve(z, x, x**2 + y**2 + z**2 -1)
Затем я пытался с scipy
:
from scipy.optimize import fsolve
def f(x):
y = np.zeros(3)
y[2] = x[2]
y[0] = x[0]
y[1] = x[0] ** 2 + x[1] ** 2+ x[2] ** 2 - 1
return y
x0 = np.array([10, 10, 10])
solution = fsolve(f, x0)
print(solution[0],solution[1],solution[2])
, но это тольковозвращает одно из двух решений:
6.79746218330325e-28 1.0000000000000002 -2.3528179942097343e-35
Я также пробовал с gekko
, но все равно возвращается только одно возможное решение (которое зависит от первоначального предположения):
from gekko import GEKKO
m = GEKKO()
x = m.Var(value = 1)
y = m.Var(value = 1)
z = m.Var(value = 1)
m.Equation(x == 0)
m.Equation(z == 0)
m.Equation(x**2 + y**2+z**2 ==1)
m.solve()