пример, подобный следующему:
x1 + x2 + x3 + x4 = 1
x3 + x4 = 1
x4 + x5 = 1
x4 + x5 + x6 = 2
x1,x2,x3,x4,x5,x6 belong to this set {0, 1}
, так что вы видите, что это линейная система уравнений.
, потому что x принадлежит {0,1} <-> x ** 2 - x = 0, поэтому я решаю это ниже ... но я думаю, что это так глупо:
In [1]: import numpy as np
In [2]: from sympy import *
In [3]: x1,x2,x3,x4,x5,x6 = symbols('x:6')
In [4]: res = solve([x1+x2+x3+x4-1, x3+x4-1, x4+x5-1, x4+x5+x6-2, x1**2-x1, x5**2-x5, x2**2-x2, x3**2-x3, x4**2-x4, x5*
...: *2-x5, x6**2-x6],[x1,x2,x3,x4,x5,x6])
In [5]: np.array(res)
Out[5]:
array([[0, 0, 0, 1, 0, 1],
[0, 0, 1, 0, 1, 1]], dtype=object)
Я знаю, что к var можно добавить некоторые условия ограничения:
x = Symbol("x", positive=True)
Итак, есть ли какие-нибудь условия ограничения, которые могут быть добавлены, как это? :
x1, x2, x3, x4, x5, x6 = symbols('x:6', domain=(0, 1))
Помогите мне, плз .. спасибо!