如何使用Python求解一元不等式组并返回符合条件的单个x值
一元单变量区间不等式组的Python求解方案
这类仅包含x上下界约束的一元不等式组,求解逻辑非常直接:
- 提取所有大于类约束(x>值、x≥值)作为下界集合,取集合的最大值作为有效下界
- 提取所有小于类约束(x<值、x≤值)作为上界集合,取集合的最小值作为有效上界
- 若有效下界 < 有效上界,说明存在可行解,从区间(有效下界, 有效上界)中任意取一个值返回即可;若有效下界 ≥ 有效上界则无可行解
示例代码
def solve_single_var_inequalities(inequalities): lower_bounds = [] upper_bounds = [] for expr in inequalities: # 预处理去除空格,拆分符号和数值 expr = expr.replace(' ', '') if '>=' in expr: _, val = expr.split('>=') lower_bounds.append(float(val)) elif '>' in expr: _, val = expr.split('>') lower_bounds.append(float(val)) elif '<=' in expr: _, val = expr.split('<=') upper_bounds.append(float(val)) elif '<' in expr: _, val = expr.split('<') upper_bounds.append(float(val)) else: raise ValueError(f"不支持的约束类型: {expr}") max_lower = max(lower_bounds) if lower_bounds else -float('inf') min_upper = min(upper_bounds) if upper_bounds else float('inf') if max_lower >= min_upper: return None # 无可行解 # 此处默认取区间中间值返回,可根据需求调整取值逻辑 feasible_x = (max_lower + min_upper) / 2 return feasible_x # 代入题目中的不等式组测试 ineq_list = [ 'x < 9', 'x > 4.5', 'x < 5.6', 'x > 4.8' ] result = solve_single_var_inequalities(ineq_list) print(f"可行解x: {result}")
自定义取值说明
上述代码默认返回区间中间值,运行后得到结果5.2。如果需要优先返回整数解,可以增加判断逻辑:
import math if math.ceil(max_lower) < min_upper: feasible_x = math.ceil(max_lower)
替换原取值逻辑后,代入题目中的约束就会直接返回整数解5。
内容的提问来源于stack exchange,提问作者user9211966
相关产品推荐
相关产品推荐

