所以我知道你可以找到类似的衍生物:" x ^ 3-6 * x ^ 2"通过执行:D(expression(x^3-6*x^2), 'x')
,但如果我需要找到值列表的一阶导数最大值,例如: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. IE第一点是(1,610)秒是(2,618)等。谢谢
答案 0 :(得分:0)
考虑使用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])
答案 1 :(得分:0)
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
软件包。