使用r在曲线下方或上方的点

时间:2014-06-13 12:16:09

标签: r

我试着弄清楚,如果我的观点低于或高于一条简单的曲线并且目前在数学上挣扎,我猜......

我准备了一个工作的例子,但是数学首先。

我有一些要点,我想检查它们是否高于或低于曲线...... 曲线具有函数y=1/(x-.5) 所以我想我会将函数设置为0并得到0=1/(x-.5)-y

之后如果该点位于曲线的一侧,我将得到负值,而另一侧则为正值...希望这是正确的...

我意识到一个问题,如果x值小于.5,那么低于1 /的部分会变为负数,而我所有的值也都是负值...

我添加了一个特殊点(5),它给出了预期的正值,但是其他的如何,我该如何测试呢? 谢谢你的帮助!

points <- data.frame(
  x=c(-3.6030515,-0.2791478,10.2045860,-0.7457344,1,0.4037591,0.1555678,
      6.1525442,1.9831603),
  y=c(0.95715140,0.18139107,2.87456154,0.17190597,0.5,0.09778570,0.02708183,
      2.69455955,1.09943870)
)
curves <- data.frame(x=c(seq(.1,10,.1)))
curves$y <- 1/(curves$x-.5)

plot(points$x,points$y)
lines(curves$x,curves$y)
lines(-curves$x,curves$y)

1/(points$x-.5)-points$y >= 0

提前致谢!

2 个答案:

答案 0 :(得分:1)

除非我误解了这个问题,否则你应该只能在点'x值处评估函数,并将结果(即根据函数的y值)与您的积分'y值。

f <- function(x) 1 / (x-0.5)
f(points$x) < points$y

# [1]  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE

通过我构建不等式的方式,TRUE表示该曲线低于y向量中的相应points值。换句话说,除了第五点之外的所有点都在曲线之上。

答案 1 :(得分:1)

计算曲线下面的数字:

## count the number below the curve 
sum(points$y<1/(points$x-0.5) )

以图形方式显示:

## plot it using plot and curve
plot(points$x,points$y,col=ifelse(points$y<1/(points$x-0.5) ,'blue','red'),pch=20)
curve(1/(x-.5),-4,10,add=TRUE,col='green',lwd=2)

enter image description here

不连续部分:

要以图形方式显示不连续部分,您应使用curve

curve(1/(x-.5),0,1,col='green',lwd=2)
abline(v=0.5,lwd=3)

enter image description here `