使用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)