Есть ли способ отфильтровать решение Sympy, чтобы оно возвращало только точные решения, а не выражения?
Пример
import sympy as sp
x, y = sp.var('x,y',real=True);
l1, l2, l3 = sp.symbols('\lambda_1,\lambda_2,\lambda_3', real = True)
f = x**(sp.Rational(1/3))*y**(sp.Rational(2/3)) #define function
c = [x + y - 1, -x, -y]
L = f - l1*c[0] - l2*c[1] - l3*c[2]
gradL = sp.Matrix([sp.diff(L,c) for c in L.free_symbols])
stationary_points = sp.solve(gradL, L.free_symbols, dict=True)
Возвращает решение:
[{\lambda_1: \lambda_3 + 0.666666666666667*x**(1/3)/y**(1/3),
\lambda_2: \lambda_3 + 0.666666666666667*x**(1/3)/y**(1/3) - 0.333333333333333*y**(2/3)/x**(2/3)}]
WereasМне бы понравился пустой словарь, так как это решение не является точным, но является выражением.
Я искал в документации Sympy, но ничего не нашел.