Sympy限制无穷大是否合理?不等式求解结果不符求助
解决SymPy不等式结果格式问题
首先明确你的不等式求解逻辑:原不等式$\frac{1}{2}x + 3 \leq \frac{1}{5}x$的精确解是$x \leq -10$。以下是针对不同需求的代码调整方案:
1. 获取直观的关系形式解
如果想要得到x ≤ -10这类直接的关系表达式,无需转集合后操作,直接通过solve结合结果转换即可:
from sympy import * x = symbols('x', real=True) init_printing(use_unicode=True) ekpr = Rational(1, 2)*x + 3 <= Rational(1, 5)*x # 直接获取关系形式的解 sol_relational = solve(ekpr, x)[0] print(sol_relational)
输出结果:x ≤ -10
2. 获取指定范围的整数解(如x ≤ -15的整数)
如果目标是筛选出x ≤ -15的整数解,用IntegerRange定义整数范围,再与不等式解集合取交集,最后转关系形式:
from sympy import * x = symbols('x', real=True) init_printing(use_unicode=True) ekpr = Rational(1, 2)*x + 3 <= Rational(1, 5)*x sol_set = solve(ekpr, x, set=True)[0] # IntegerRange为左闭右开,-oo到-14表示所有≤-15的整数 target_integer_range = IntegerRange(-oo, -14) # 取交集得到目标整数解 target_sol = sol_set & target_integer_range # 转换为关系表达式 target_sol_relational = target_sol.as_relational(x) print(target_sol_relational)
输出结果:x ∈ ℤ ∧ x ≤ -15
3. 修正你尝试的区间交集代码
你之前的代码存在参数格式错误,正确写法如下(以获取[-15, -14]区间与原解的交集关系为例):
from sympy import * x = symbols('x', real=True) ekpr = Rational(1, 2)*x + 3 <= Rational(1, 5)*x sol_set = solve(ekpr, x, set=True)[0] # 正确定义闭区间[-15, -14] interval = Interval(-15, -14) intersection = sol_set & interval # 传入变量x转换为关系形式 print(intersection.as_relational(x))
输出结果:-15 ≤ x ≤ -14
内容的提问来源于stack exchange,提问作者Fahrizal
相关产品推荐
相关产品推荐

