我有一组点,我想找到最接近该点“下”的凸曲线。
如下面的示例,其中每个v,w点都位于qe曲线上方。
感谢您的帮助。
v<-c(-1,0,0,.5,1.2,1.7,-1,1.7);w<-c(3,0,2,4,3,3.4,1,2.89)
qe<-seq(min(v),max(v),length.out=10)**2
plot(v,w)
lines(seq(min(v),max(v),length.out=10),qe)
1 个答案:
答案 0 :(得分:4)
您要寻找的被称为最大凸面未成年人。要找到它,我们可以使用gcmlcm
包中的fdrtool
函数。
首先,我们需要确保每个x
仅有一个唯一值。因此,我们将w
替换为
w2 <- tapply(w, v, min)
为w
的每个值分配v
的最小值。 (在这种情况下,v = 0
处有两个值。)就是这样,我们的结果是
result <- gcmlcm(x = as.numeric(names(w2)), y = w2, "gcm")
我们可能会用它绘制
lines(result$x.knots, result$y.knots)
给予
它在更复杂的情况下也可以完美地工作: