Я хочу решить систему из трех нелинейных уравнений.Что-то вроде
f1 = 1.02226923451805*x**2 - 1.9683360808094*x*y + 1.03639538768756*y**2 - 49
f2 = 1.03639538768756*y**2 - 2.03796060801355*y*z + 1.04842646546047*z**2 - 25
f3 = 1.02226923451805*x**2 - 1.93479820599624*x*z + 1.04842646546047*z**2 - 74
В Matlab я могу использовать решение и получить восемь решений:
-20.3224 -22.8100 -23.1694
-23.5467 -22.9631 -23.1503
-23.6222 -22.1818 -23.0558
-23.6372 -22.4943 -20.5865
23.6372 22.4943 20.5865
23.6222 22.1818 23.0558
23.5467 22.9631 23.1503
20.3224 22.8100 23.1694
В python я пробовал использовать sympy's solve_poly_equations, но он возвращает None.Я также попробовал fsolve от scipy, но он возвращает только одно решение, основанное на первоначальном предположении.
from sympy import solve_poly_system
from sympy.abc import x,y,z
f1 = 1.02226923451805*x**2 - 1.9683360808094*x*y + 1.03639538768756*y**2 - 49
f2 = 1.03639538768756*y**2 - 2.03796060801355*y*z + 1.04842646546047*z**2 - 25
f3 = 1.02226923451805*x**2 - 1.93479820599624*x*z + 1.04842646546047*z**2 - 74
s = solve_poly_system([f1, f2, f3], x, y, z)
print(s)
>> None
from scipy.optimize import fsolve
def myFunc(v):
x = v[0]
y = v[1]
z = v[2]
f = empty((3))
f[0] = 1.02226923451805*x**2 - 1.9683360808094*x*y + 1.03639538768756*y**2 - 49
f[1] = 1.03639538768756*y**2 - 2.03796060801355*y*z + 1.04842646546047*z**2 - 25
f[2] = 1.02226923451805*x**2 - 1.93479820599624*x*z + 1.04842646546047*z**2 - 74
return f
s = fsolve(myFunction, [1, 1, 1])
print(s)
>> [23.63719275 22.49425691 20.58646335]
Я пытаюсь решить проблему, в которой важно, чтобы все возможные решения были возвращены.Есть ли в Python способ получить все восемь решений, которые дает Matlab?