Как я могу заставить sympy.solve
не возвращать отрицательные решения?
Кажется, что это другая задача, чем добавление ограничения типа positive=True
к символу, для которого я решаю.Хотя
import sympy
x = sympy.symbols("x")
print(sympy.solve(x**2-4, x))
x = sympy.symbols("x", positive=True)
print(sympy.solve(x**2-4, x))
печатает
[-2, 2]
[2]
, как и ожидалось - я все равно получаю отрицательный результат решения для omega
с
import sympy
omega, omega_0, gamma = sympy.symbols("omega, omega_0, gamma", real=True, positive=True)
zeta = 1/((omega_0**2 - omega**2)**2 + gamma**2*omega**2)
omega_R = sympy.solve(sympy.diff(zeta, omega), omega)
print(omega_R)
, который возвращает
[-sqrt(2)*sqrt(-gamma**2 + 2*omega_0**2)/2, sqrt(2)*sqrt(-gamma**2 + 2*omega_0**2)/2]
, хотя -sqrt(2)*sqrt(-gamma**2 + 2*omega_0**2)/2
никогда не будет положительным для действительных и положительных символов omega_0
и gamma
.
В качестве альтернативы, каков наилучший способ устранения отрицательных решений после этого?