通过知道两个数字向量得到导数

时间:2017-05-26 22:18:50

标签: r derivative

我知道两个向量x和y,如何计算y相对于R的x的导数?

x<-rnorm(1000)
y<-x^2+x

我想计算y相对于x的导数:dy / dx;假设我不知道x和y之间的基本功能。对应于每个x的衍生比例可以有一个值。

2 个答案:

答案 0 :(得分:3)

您的数据唯一的问题是它没有排序。

set.seed(2017)
x<-rnorm(1000)
y<-x^2+x

y  = y[order(x)]
x = sort(x)
plot(x,y)

Original function

现在你可以在x差异上取y差异。

plot(x[-1],diff(y)/diff(x))
abline(1,2)

Derivative

结果与理论结果d(x)= 2x + 1

一致

如果您希望获得衍生物的功能,只需在您拥有的所有点上使用approxfun即可。

deriv = approxfun(x[-1], diff(y)/diff(x))

再一次,密谋与预期的衍生品一致。

答案 1 :(得分:0)

要找到导数,请使用数值近似值:(y2-y1)/(x2-x1)或dy / dx。在R中使用diff函数来计算2个连续点之间的差异:

x<-rnorm(100)
y<-x^2+x

#find the average x between 2 points
avex<-x[-1]-diff(x)/2
#find the numerical approximation
#delta-y/delta-x
dydx<-diff(y)/diff(x)

#plot numeric approxiamtion
plot(x=avex, dydx)
#plot analytical answer
lines(x=avex, y=2*avex+1)