如何解决 python 的非线性不等式,例如 12<x*y<14 and 2x + 3y>40?

how to solve non-linear inequalities with python like 12<x*y<14 and 2x + 3y>40?

我想求解一个非线性不等式方程组,化简如下: 12y<14 和 2x + 3*y>40,有什么方法可以使用 python 找到 x 的最小值, 我知道如何用 scipy.optimize.linprog 求解线性不等式,但是我找不到求解非线性不等式的方法,谢谢

Z3 是一个 SAT/SMT 求解器,对于此类问题可能很有趣。

这是一个寻找整数解的例子。请注意,给定的方程式对于浮点数是无界的。

from z3 import Optimize, Int, And

opt = Optimize()
x = Int('x')
y = Int('y')
opt.add(And(x * y > 12, x * y < 14))
opt.add(2 * x + 3 * y > 40)
opt.minimie(x)
print(opt.check())  # prints sat
print(opt.model())  # prints [y = 13, x = 1]