所以我知道你可以通过做:D(expression(x^3-6*x^2), 'x')来找到类似于"x^3-6*x^2“的导数,但是如果我需要找到一列值的一阶导数最大值,比如:
value <- c(610,618,627,632,628,634,634,628,634,642,637,643,653,666,684,717,787,923,1197,1716,2638,4077,5461,7007,8561,9994,11278,12382,13382,14252)
这些值是y坐标,x坐标从1开始,以1为增量。即第一个点是(1,610),第二个点是(2,618),依此类推。-Thanks
发布于 2016-09-21 00:42:06
考虑使用CRAN中的numDerive包。它有一个函数grad,可以计算函数在某一点的导数。示例:
f = function(x) x^3 - 6*x^2
library(numDeriv)
grad(f, 1) #derivative of f at x=1要使用值列表解决问题,请使用for循环:
xval <- c(YOUR VALUES HERE)
xval.derivatives <- c() #empty vector to hold
for(i in 1:length(xval)) xval.derivatives[i] <- grad(f,xval[i])发布于 2019-07-18 05:22:50
pracma包中的gradient函数计算值向量的导数。
library(pracma)
value <- c(610,618,627,632,628,634,634,628,634,642,637,643,653,666,684,717,787,923,1197,1716,2638,4077,5461,7007,8561,9994,11278,12382,13382,14252)
value_prime <- pracma::gradient(value, h1 = 1)
plot(value_prime)

或者,拟合样条曲线。
spl <- smooth.spline(1:length(value), y=value)
pred <- predict(spl)
pred.prime <- predict(spl, deriv=1)
plot(pred.prime, type = 'b')

如果您对更高的派生函数感兴趣,请查看pspline包。
https://stackoverflow.com/questions/29247676
复制相似问题