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

如何在Julia的Plots.jl中高亮线性优化问题的可行域?

线性规划可行域可视化方案

方法一:Python + Matplotlib 代码实现

先明确各约束对应的边界与区域:

  • -3x + 3y <= 5 → 直线 y = (3x + 5)/3 的下方区域
  • 2x + 3y >= 9 → 直线 y = (9 - 2x)/3 的上方区域
  • x >= 0、y >= 0 → 第一象限区域

可行域是这四个区域的交集,先计算关键交点:

  1. 两条约束直线的交点:解方程组 -3x+3y=5 和 2x+3y=9,得 x=0.8,y≈2.47
  2. y=(9-2x)/3 与 y=0 的交点:x=4.5,y=0

以下是完整代码实现:

import numpy as np
import matplotlib.pyplot as plt

# 生成覆盖可行域的x轴取值
x = np.linspace(0, 5, 100)

# 计算各约束边界的y值
y1 = (3*x + 5)/3  # -3x+3y=5的直线
y2 = (9 - 2*x)/3  # 2x+3y=9的直线

# 创建画布
plt.figure(figsize=(8, 6))

# 绘制所有约束边界线
plt.plot(x, y1, label=r'$-3x + 3y = 5$', color='blue', linestyle='--')
plt.plot(x, y2, label=r'$2x + 3y = 9$', color='red', linestyle='--')
plt.axvline(x=0, color='gray', label=r'$x=0$')
plt.axhline(y=0, color='gray', label=r'$y=0$')

# 填充可行域:限定x的有效区间,取两条约束线的上下边界
x_fill = np.linspace(0.8, 4.5, 100)
y_fill_low = (9 - 2*x_fill)/3
y_fill_high = (3*x_fill + 5)/3
plt.fill_between(x_fill, y_fill_low, y_fill_high, color='green', alpha=0.3, label='可行域')

# 设置图表基础属性
plt.xlabel('x')
plt.ylabel('y')
plt.title('线性规划可行域可视化')
plt.legend()
plt.grid(True, alpha=0.2)
plt.xlim(-0.5, 5)
plt.ylim(-0.5, 4)

plt.show()

代码细节说明:

  • fill_between 专门用于填充两条曲线间的区域,这里指定了可行域的x区间与上下边界
  • alpha 参数控制填充透明度,避免遮挡边界线
  • 手动限制坐标轴范围,让可行域展示更清晰

方法二:无代码工具(GeoGebra)

如果不想编写代码,用GeoGebra操作更便捷:

  1. 打开GeoGebra(网页版或本地客户端均可)
  2. 在输入栏依次输入约束条件:
    • y <= (3x + 5)/3
    • y >= (9 - 2x)/3
    • x >= 0
    • y >= 0
  3. 软件会自动渲染所有区域,找到它们的交集(可行域)后,右键点击该区域选择「着色」即可完成高亮

内容的提问来源于stack exchange,提问作者alex_nas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 04:06:37