基于Python求解带0<x<1约束的非方阵Ax=b问题
非方阵Ax=b带0<x<1约束的Python求解方案
你的Sympy求解结果已经给出了解的结构:x1=0,x2、x3是自由变量x4、x5的线性表达式,x4、x5可自由取值。要添加0<x<1的约束,本质是找到满足所有线性不等式的x4、x5取值,以下是两种可行方案:
方法1:用SciPy线性规划找可行解
利用scipy.optimize.linprog模块,将约束转化为线性不等式组,求解满足所有条件的可行解(无需优化特定目标,仅找可行域内的点)。
import numpy as np from scipy.optimize import linprog # 目标函数系数(仅找可行解,设为全0) c = [0, 0] # 构造不等式约束(转换为linprog要求的A_ub @ x ≤ b_ub形式) A_ub = [ [-1.66644368166375, 2.70780339743064], # -x2 ≤ 0 → x2 > 0 [1.66644368166375, -2.70780339743064], # x2 ≤ 1 [-3.99892914904867, 6.49785771642014], # -x3 ≤ 0 → x3 > 0 [3.99892914904867, -6.49785771642014], # x3 ≤ 1 [-1, 0], # -x4 ≤ 0 → x4 > 0 [1, 0], # x4 ≤ 1 [0, -1], # -x5 ≤ 0 → x5 > 0 [0, 1] # x5 ≤ 1 ] b_ub = [0, 1, 0, 1, 0, 1, 0, 1] # 变量边界(与约束重复,可作为双重保障) bounds = [(0, 1), (0, 1)] # 求解线性规划 result = linprog(c, A_ub=A_ub, b_ub=b_ub, bounds=bounds, method='highs') if result.success: x4_opt, x5_opt = result.x # 计算其他变量 x1_opt = 0 x2_opt = 1.66644368166375 * x4_opt - 2.70780339743064 * x5_opt x3_opt = 3.99892914904867 * x4_opt - 6.49785771642014 * x5_opt print("满足约束的解:") print(f"x1={x1_opt:.6f}, x2={x2_opt:.6f}, x3={x3_opt:.6f}, x4={x4_opt:.6f}, x5={x5_opt:.6f}") else: print("未找到满足所有约束的解")
方法2:随机采样找可行解
如果只需找到一个可行解,可对自由变量x4、x5在(0,1)范围内随机采样,检查是否满足所有约束条件。
import numpy as np # 约束检查函数 def is_feasible(x4, x5): x2 = 1.66644368166375 * x4 - 2.70780339743064 * x5 x3 = 3.99892914904867 * x4 - 6.49785771642014 * x5 return (0 < x2 < 1) and (0 < x3 < 1) and (0 < x4 < 1) and (0 < x5 < 1) # 随机采样查找 np.random.seed(42) found = False for _ in range(10000): x4 = np.random.uniform(0, 1) x5 = np.random.uniform(0, 1) if is_feasible(x4, x5): x1 = 0 x2 = 1.66644368166375 * x4 - 2.70780339743064 * x5 x3 = 3.99892914904867 * x4 - 6.49785771642014 * x5 print("找到可行解:") print(f"x1={x1:.6f}, x2={x2:.6f}, x3={x3:.6f}, x4={x4:.6f}, x5={x5:.6f}") found = True break if not found: print("采样10000次未找到可行解,可能不存在满足约束的解")
关键注意点
- 你的Sympy解中
x1=0,不满足0<x1<1的严格大于约束,若约束为0≤x≤1则可忽略此问题;否则需检查原方程组是否正确,或是否存在其他解分支。 - 若两种方法均返回无解,说明原问题的约束与方程组无交集,需重新审视问题设定。
内容的提问来源于stack exchange,提问作者Deviant
相关产品推荐
相关产品推荐

