如何用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
相关产品推荐
相关产品推荐

