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

如何用SymPy绘制单变量线性不等式解集?求助修正代码

单变量线性不等式解集绘图解决方案

原代码问题分析

  • 重复导入SymPy模块,代码冗余;
  • solve函数用法错误:解不等式无需传入单个x值,直接传入符号变量即可得到完整解集;
  • 未定义变量ys,调用plot(ys)会触发NameError;
  • SymPy plot的markers参数格式不符合要求,该参数需遵循matplotlib标记规范。

正确实现代码(贴合示例图效果)

以下代码会在x轴上标记出x ≤ 7的解集区间,并高亮边界点:

from sympy import symbols, solve, pprint, init_printing
import matplotlib.pyplot as plt
import numpy as np

# 初始化符号变量与打印设置
x = symbols("x", real=True)
init_printing(use_unicode=True)

# 定义目标不等式
inequality = 4*x - 2 <= 5 + 3*x
print("目标不等式:")
pprint(inequality)

# 求解不等式
solution = solve(inequality, x)
print("\n解集:")
pprint(solution)

# 提取解集边界值
boundary = 7

# 创建绘图对象
fig, ax = plt.subplots()

# 绘制x轴上的解集区间(0到7)
ax.plot(np.linspace(0, boundary, 100), [0]*100, 'r-', linewidth=3, label='x ≤ 7')
# 标记边界点x=7
ax.plot(boundary, 0, 'ro', markersize=8)

# 设置坐标轴参数
ax.set_xlim(0, 10)
ax.set_ylim(-0.5, 0.5)
ax.set_xlabel('x')
ax.set_yticks([0])
ax.legend()
plt.grid(True, alpha=0.3)
plt.show()

扩展:绘制平面阴影区域(可选)

如果需要展示xy平面内所有满足不等式的区域(所有x≤7的点),可使用以下代码:

from sympy import symbols, solve, pprint, init_printing
import matplotlib.pyplot as plt
import numpy as np

x = symbols("x", real=True)
init_printing(use_unicode=True)

inequality = 4*x - 2 <= 5 + 3*x
solution = solve(inequality, x)
boundary = 7

fig, ax = plt.subplots()

# 绘制边界虚线x=7
ax.axvline(x=boundary, color='r', linestyle='--', label='x=7')
# 填充x≤7的区域
ax.fill_betweenx(y=np.linspace(-5, 5, 100), x1=0, x2=boundary, color='red', alpha=0.2)

# 设置坐标轴参数
ax.set_xlim(0, 10)
ax.set_ylim(-5, 5)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.legend()
plt.grid(True, alpha=0.3)
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 17:20:31