如何用Python解决含参数线性不等式组并可视化参数坐标系
Python实现(α, β)坐标系中不等式组的区域可视化
先简化原不等式组
原不等式组:
αy ≥ x + y
βx ≥ x + y
x > 0, y > 0
因为x、y都是正数,直接对不等式变形简化:
- 第一个不等式两边除以y,得到
α ≥ 1 + x/y,令t = x/y(t>0),则条件变为α ≥ 1 + t - 第二个不等式两边除以x,得到
β ≥ 1 + y/x,也就是β ≥ 1 + 1/t(t>0)
要存在正数t同时满足这两个式子,等价于:α>1、β>1,且(α-1)*(β-1)≥1。
代码实现
用numpy生成网格点,matplotlib绘制满足/不满足条件的点:
import numpy as np import matplotlib.pyplot as plt # 生成α和β的采样范围,这里取0到5,各200个点 alpha = np.linspace(0, 5, 200) beta = np.linspace(0, 5, 200) # 生成二维网格点 alpha_grid, beta_grid = np.meshgrid(alpha, beta) # 标记满足条件的点:α>1,β>1,且(α-1)(β-1)≥1 mask = (alpha_grid > 1) & (beta_grid > 1) & ((alpha_grid - 1) * (beta_grid - 1) >= 1) # 绘图 plt.figure(figsize=(8, 8)) # 先画不满足条件的红色点 plt.scatter(alpha_grid[~mask], beta_grid[~mask], color='red', s=5, label='不满足条件') # 再画满足条件的绿色点 plt.scatter(alpha_grid[mask], beta_grid[mask], color='green', s=5, label='满足条件') # 添加辅助线和边界曲线 plt.axvline(x=1, color='gray', linestyle='--') plt.axhline(y=1, color='gray', linestyle='--') # 绘制(α-1)(β-1)=1的边界曲线 t = np.linspace(0.01, 4, 100) plt.plot(1 + t, 1 + 1/t, color='black', label='边界:(α-1)(β-1)=1') # 设置图表属性 plt.xlabel('α') plt.ylabel('β') plt.title('(α, β)坐标系中不等式组的满足区域') plt.legend() plt.grid(True, alpha=0.3) plt.show()
代码说明
- 用
meshgrid生成二维网格点,覆盖指定的α和β范围 mask变量是布尔数组,标记每个网格点是否满足条件- 先绘制红色不满足点,再绘制绿色满足点,避免颜色覆盖
- 添加灰色虚线α=1、β=1,以及黑色边界曲线,清晰展示区域划分
内容的提问来源于stack exchange,提问作者baring
相关产品推荐
相关产品推荐

