Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用r表示曲线下方或上方的点_R - Fatal编程技术网

使用r表示曲线下方或上方的点

使用r表示曲线下方或上方的点,r,R,我试着弄清楚,如果我的点在一条简单曲线的下方或上方,并且正在努力学习数学,我猜 我准备了一个实用的例子,所以首先是数学 我有一些点,我想检查它们是在曲线上方还是下方。。。 曲线具有函数y=1/(x-.5) 所以我想我将函数设置为0,得到0=1/(x-.5)-y 之后,如果点在曲线的一侧,我将得到负值,而在另一侧得到正值。。。希望到目前为止这是正确的 我意识到一个问题,如果x值小于.5,那么低于1/的部分将变为负值,我的所有值也都为负值 我添加了一个特殊的点(5),它给出了预期的正值,但是其他的呢

我试着弄清楚,如果我的点在一条简单曲线的下方或上方,并且正在努力学习数学,我猜

我准备了一个实用的例子,所以首先是数学

我有一些点,我想检查它们是在曲线上方还是下方。。。 曲线具有函数
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

points除非我误解了这个问题,否则您应该能够在您的点
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

f计算曲线下方的数字:

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

`

你有没有画出我举的例子?您可以看到曲线上方的4个点。。。你指出的一点是,(x-.5)没有变为负值,同时在曲线下。。。当(x-.5)为负时,函数也会报告为真,即使点在下方而不是上方……你意识到这是一个不连续的函数,对吗?运行
曲线(1/(x-0.5))
,您将看到在x=0.5处有一条渐近线。任何x值低于0.5且y值非负的点实际上都在函数上方。回想起来,我发现你解决问题的方法是正确的,但我想你可能没有意识到这一点。我想这就是我所说的数学部分:-)你有什么解决办法,如何解决我的问题。目前我正在使用
1/abs(x-.5)-y
。看起来它解决了我的问题。但我不确定我是否又忘了一些数学理论。。。感谢您指出确切的问题!所以现在我不确定问题是什么-这难道不能解决它吗?我不知道你为什么要取绝对值。函数的“上部”(即L形曲线)在x=0.5以下不存在。假设x=0.5左边的点实际上是x=0.5右边的点对我来说没有意义。是的,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)
curve(1/(x-.5),0,1,col='green',lwd=2)
abline(v=0.5,lwd=3)