Sto*_*orn 5 plot intersection r spline
我正在尝试在该点处为我的绘图添加切线,x = 30并且我想计算 处切线的 x 交点y = 0.08。
我已经找到了一个非常有用的例子,我尝试使用它,但由于某种原因它不适用于y = 0.08. 我不明白predict()函数中 deriv 的含义,也不明白pred0 和 pred1 之间的实际区别。有人可以解释一下吗?
x <- seq(0,40)
y <- dnorm(seq(0,40), mean=25, sd=5)
plot(x, y)
spl <- smooth.spline(y ~ x)
lines(spl, col="green")
newx <- 30
pred0 <- predict(spl, x=newx, deriv=0)
pred1 <- predict(spl, x=newx, deriv=1)
yint <- pred0$y - (pred1$y*newx)
xint <- -yint/pred1$y
xint
plot(x, y)
abline(h=0, col="red")
lines(spl, col="red")
points(pred0,col="red", pch=19)
lines(x, yint + pred1$y*x)
points(xint, 0, col="red", pch=19)
Run Code Online (Sandbox Code Playgroud)
看起来您计算切线和相交没有问题,但需要一些帮助来查找x给定y值的值。此方法适用于任何平滑曲线,但请标记 Gregors 警告。可能没有对应的 x 值,也可能有多个。
x <- seq(0, 40, by=0.01)
y <- dnorm(x, mean=25, sd=5)
spl <- smooth.spline(y ~ x)
plot(spl, type="l")
yval <- 0.08
ad <- abs(yval - spl$y)
if (min(ad) > max(diff(spl$y))*10) {
warning("The supplied y value is out of bounds")
}
xval <- x[which(diff(sign(diff(ad))) > 1) + 1]
points(xval, rep(yval, length(xval)))
Run Code Online (Sandbox Code Playgroud)
这样xval您就可以像已经完成的那样计算切线。
| 归档时间: |
|
| 查看次数: |
1500 次 |
| 最近记录: |