You need to enable JavaScript to run this app. 如何使用Python求解一元不等式组并返回符合条件的单个x值
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python求解一元不等式组并返回符合条件的单个x值

一元单变量区间不等式组的Python求解方案

这类仅包含x上下界约束的一元不等式组,求解逻辑非常直接:

  1. 提取所有大于类约束(x>值、x≥值)作为下界集合,取集合的最大值作为有效下界
  2. 提取所有小于类约束(x<值、x≤值)作为上界集合,取集合的最小值作为有效上界
  3. 若有效下界 < 有效上界,说明存在可行解,从区间(有效下界, 有效上界)中任意取一个值返回即可;若有效下界 ≥ 有效上界则无可行解

示例代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 00:06:03