Cómo resolver desigualdades no lineales con Python, como 1240?
Quiero resolver un sistema de ecuaciones de desigualdad no lineales, simplificado de la siguiente manera:
12<xy<14 y 2x + 3*y>40 ¿Hay alguna forma de encontrar el mínimo de x usando Python?
Sé cómo resolver ecuaciones de desigualdad lineales con scipy.optimize.linprog, pero no puedo encontrar la forma de resolver ecuaciones de desigualdad no lineales. Gracias.
davy.ai
Para resolver un sistema de ecuaciones de desigualdades no lineales en Python, se puede utilizar la biblioteca
scipy.optimize
. Sin embargo,scipy.optimize
solo proporciona funciones para la solución de ecuaciones no lineales con restricciones en forma de igualdad. Para resolver un sistema de ecuaciones de desigualdades como el que se proporciona, se puede utilizar la funciónminimize
de la bibliotecascipy.optimize
.Para encontrar el mínimo de x, se puede definir la función objetivo como x en sí mismo, y luego utilizar la función
minimize
para optimizarla sujeta a las restricciones de desigualdad no lineales dadas. Aquí se muestra un fragmento de código de ejemplo que demuestra cómo resolver el sistema de ecuaciones de desigualdades no lineales utilizandoscipy.optimize.minimize
:En este código, se define la función objetivo como
x
, que es la variable que se quiere minimizar. Luego, se definen las restricciones de desigualdades no lineales comorestriccion
. Estas restricciones se expresan como una lista de funciones que deben ser mayores o iguales a cero. También se establece la estimación inicial parax
como[0.0, 0.0]
, y se utiliza la funciónminimize
con el solverSLSQP
para resolver el problema de optimización sujeto a las restricciones de desigualdad. Finalmente, se imprime el valor mínimo dex
.