给定正整数“x”,我如何获得 sympy 产量“{1, 2}” < 3`

问题描述 投票:0回答:1
我正在尝试使用

sympy.solve

 解决不等式,这是代码

from sympy import Symbol, solve x = Symbol('x', positive=True, integer=True) ineq1 = x - 3 < 0 solution = solve((ineq1), x) print(solution)
上面的程序产生

x < 3

。结果是有道理的,我想得到一个由 2 个整数 1 和 2 组成的集合,
{1, 2}
。
我怎样才能做到这一点?

sympy
1个回答
2
投票
单变量不等式可以通过集合处理,并且集合交集可以将结果限制为正整数:

>>> from sympy import Range, oo, S, And >>> from sympy.abc import x >>> (x - 3 < 0).as_set().intersection(Range(1,oo)) {1, 2}
您也可以将 

Range(1,oo)

 替换为 
S.Naturals
。您还可以使用复合表达式并将其集合与 
S.Integers
:
相交

>>> And(x>0,x<3).as_set().intersection(S.Integers) {1, 2}
    
© www.soinside.com 2019 - 2024. All rights reserved.