我知道两个向量x和y,如何计算y相对于R的x的导数?
x<-rnorm(1000)
y<-x^2+x
我想计算y相对于x的导数:dy / dx;假设我不知道x和y之间的基本功能。对应于每个x的衍生比例可以有一个值。
答案 0 :(得分:3)
您的数据唯一的问题是它没有排序。
set.seed(2017)
x<-rnorm(1000)
y<-x^2+x
y = y[order(x)]
x = sort(x)
plot(x,y)
现在你可以在x差异上取y差异。
plot(x[-1],diff(y)/diff(x))
abline(1,2)
结果与理论结果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)