我很同情。我试图用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)}
我该怎么做?
答案 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在我看到你的问题之前忘记阅读的评论。