R如何找​​到并绘制许多半空间的交点?

时间:2019-02-08 00:27:59

标签: r plot geometry

我正在寻找R中的算法或(最好是)一个包,它可以找到许多半空间的交集,然后绘制它们的交集。

我将用数学的方式定义问题。假设您有一个定义为S_i = {(x,y)| y> = a_i + b_i * x}的N个半空间的集合,其中i = 1,2,...,N,其中x和y是实数,a_i和b_i是固定的实数。我知道(a_i,b_i)i = 1,2,...,N。我需要找到集合S = S_1相交S_2相交...相交S_N,然后绘制S。下面是我要寻找的示例。

halfspace intersection

蓝色的细线区域是半空间S的交点,蓝色的粗线是半空间边界,y = a_i + b_i * x。我不希望在交点外绘制边界,它们在那里是为了使本示例更清楚。请忽略橙色箭头和圆点。

1 个答案:

答案 0 :(得分:2)

您没有提供所需行的任何明确示例,也没有提供用于存储行的数据结构,因此,我仅举一些示例。我将这些行作为函数。您可以选择一个x值范围,该范围超出要绘制的区域,并为每个x找到L(x)的最大值。使用这些来绘制显示所需区域的多边形。我绘制了两个有无边界线的图,以显示该区域如何拟合该线。

L1 = function(x) { -0.25 - 1*x }
L2 = function(x) { -0.25 - 0.6*x }
L3 = function(x) { -0.25 - 0.3*x }
L4 = function(x) { -0.3  - 1.5*x }


x=seq(-1,1,0.01)
Y = pmax(L1(x), L2(x), L3(x), L4(x))

par(mfrow=c(1,2))

plot(NULL, xlim=c(-0.5,0.5), ylim=c(-0.5,0.5))
polygon(c(-1,x,1),c(2,Y,2), col="blue", density=10)

plot(NULL, xlim=c(-0.5,0.5), ylim=c(-0.5,0.5))
polygon(c(-1,x,1),c(2,Y,2), col="blue", density=10)

lines(x, L1(x))
lines(x, L2(x))
lines(x, L3(x))
lines(x, L4(x))

Polygon