首页 > 解决方案 > 在python中用多个变量解决等式和不等式

问题描述

我正在尝试解决以下问题:

 2*x + 4*y = 6 
 0 <= x <= 2
 0 <= y <= 1

我试过同情

from sympy import Poly
from sympy.solvers.inequalities import solve_rational_inequalities
from sympy.abc import x, y, z

solve_rational_inequalities([[
((Poly(2*x + 4*y ), 6), '=='),
((Poly(x), 2), '<='),
((Poly(y), 1), '<='),
((Poly(x), 0), '>='),
((Poly(y), 0), '>=')]])

但我得到了异常,多项式错误:

  only univariate polynomials are allowed

有没有办法用 sympy 或任何其他 python 库来解决这个问题?

标签: pythonsympy

解决方案


您可以使用python-constraint

import constraint

problem = constraint.Problem()

problem.addVariable('x', range(2))
problem.addVariable('y', [1])

def our_constraint(x, y):
    if 2*x + 4*y == 6:
        return True

problem.addConstraint(our_constraint, ['x','y'])

solutions = problem.getSolutions()

for solution in solutions:
    print(solution)

输出: {'y': 1, 'x': 1}


推荐阅读