У меня есть система из четырех переменных, связанных через два ограничения:
L = sympy.Symbol('L')
C = sympy.Symbol('C')
Z = sympy.Symbol('Z')
omega = sympy.Symbol('omega')
constraints = [
Z - sympy.sqrt(L/C),
omega - 1 / sympy.sqrt(L*C)]
Если мы попросим
sympy.nonlinsolve(constraints, [omega, C, Z])
результат
{
({omega} \ {0}, 1/(L*omega**2), -L*omega),
({omega} \ {0}, 1/(L*omega**2), L*omega), # <- Want
({omega} \ {0}, 1/(L*omega**2), -sqrt(L**2*omega**2)),
({omega} \ {0}, 1/(L*omega**2), sqrt(L**2*omega**2))
}
Как правильно сказать sympy, что все параметры положительны и действительны, так что он может выбросить все, кроме второго набора решений (и знать, что omega> 0)?