You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 08:25:36