我正在尝试在点x = 30处向图添加切线,并且我想在y = 0.08处计算切线的x交点。

我已经找到了一个非常有用的示例,尝试使用它,但是由于某种原因,该示例不适用于y = 0.08
我不了解predict()函数中派生的含义,也不了解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)

r - 计算与R的切线相交-LMLPHP

最佳答案

看来计算切线和相交没有问题,但是需要一些帮助来查找给定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)))

使用该xval,您可以像已经完成的那样计算切线。

r - 计算与R的切线相交-LMLPHP

关于r - 计算与R的切线相交,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56483115/

10-12 17:32