假设我们有几个线性不等式,如2x-5y<=6
和x+y>=0
,我们如何绘制两个不等式?为了扩展这一点,如果我们有多个这样的不等式,我们如何尝试以图形方式解决这个问题?
答案 0 :(得分:3)
隔离y告诉我们两者都是y>=ax+b
形式的不等式。这意味着我们可以使用图,等式版本的函数以及函数在间隔上获得的最大值来绘制不等式。
using Plots
f(x) = (2/5)x-6/5
g(x) = -x
X = -10:10
the_max = max(f(X[end]), g(X[1]))
plot(X, f, fill = (the_max, 0.5, :auto))
plot!(X, g, fill = (the_max, 0.5, :auto))
如果第二个等式的不平等被翻转,我们就会
using Plots
f(x) = (2/5)x-6/5
g(x) = -x
X = -10:10
the_max = max(f(X[end]), g(X[1]))
the_min = min(f(X[1]), g(X[end]))
plot(X, f, fill = (the_max, 0.5, :auto))
plot!(X, g, fill = (the_min, 0.5, :auto))
显然,如果有很多这样的不等式要绘制,你会想要自动找到最小值和最大值。此外,这种重写取决于线性,但你的问题特别提到它们是线性的。
答案 1 :(得分:2)
您可以尝试ImplicitEquations
:
using ImplicitEquations, Plots
f(x,y) = 2x - 5y - 6
g(x,y) = x + y - 0
plot((f < 0) & (g > 0))
导致区域超过默认矩形[-5,5],[ - 5,5]:
答案 2 :(得分:1)
您可以在要绘制的区间(使用x
版本)上制作y
和meshgrid
的矩阵,然后让u=(2x-5y.<=6)
和{{ 1}}。当满足等式时,v=(x+y.>=0)
将为1,u
则相同。您可以使用Plots.jl中的热图,等高线图或散点图来绘制v
和(x,y,u)
(您将看到是否根据绘图的粗略程度选择了足够精细的网格)。对于重叠,您可以绘制(x,y,v)
。
答案 3 :(得分:1)
看看IntervalConstraintProgramming.jl(仍然是一项正在进行中的工作......)