如何解决 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]
我想求解一个非线性不等式方程组,化简如下:
12
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]