如何限制包含符号的sympy包含

时间:2016-11-05 18:05:44

标签: python-2.7 sympy

我很同情。我试图用linsolve()解决一个线性方程组。这产生了一种解决方案,可以用以下两行来复制。

d = symbols("d")
solution = sets.FiniteSet((d + 1, -d + 4, -d + 5, d))

我的解决方案服从限制,所有四个值必须是正整数。这种情况发生在d = 0,1,2,3,4。

我能够用固定的d(例如d = 0)评估溶液

solution.subs({d : 0})

我希望自动将解决方案集限制为有效解决方案。在数学上,它等于与\ mathbb {N ^ 0} ^ 4的交集。在实践中,我希望从

获得输出
for d_fixed in range(5):
    solution.subs({d : d_fixed})

我。即

{(1, 4, 5, 0)}
{(2, 3, 4, 1)}
{(3, 2, 3, 2)}
{(4, 1, 2, 3)}
{(5, 0, 1, 4)}

我该怎么做?

1 个答案:

答案 0 :(得分:3)

我认为沿着这些方向做某些事情会带来一些额外的魔力。

>>> from sympy import *
>>> var('d')
d
>>> solution = sets.FiniteSet((d+1,-d+4,-d+5,d))
>>> list(list(solution)[0])
[d + 1, -d + 4, -d + 5, d]
>>> from sympy.solvers.inequalities import reduce_inequalities
>>> reduce_inequalities([0<=d + 1, 0<=-d + 4, 0<=-d + 5, 0<=d],[d])
And(0 <= d, d <= 4)

我非常感谢https://stackoverflow.com/users/1879010/dietrich在我看到你的问题之前忘记阅读的评论。