2017-05-26 5 views
1

2つのベクトルxとyを知っていますが、Rのxに関してyの微分をどのように計算できますか?2つの数値ベクトルを知って微分を求める

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

私は、x:dy/dxに関してyの導関数をcaculateしたいと思います。私がxとyとの間の基本的な関数を知らないと仮定しよう。各xに対応する派生スケールの値があります。

+0

:R 2つの連続する点の間の差を計算する差分関数を使用派生物が理にかなっている機能。これは本当にあなたがやっていることですか? – MrFlick

+0

'y <-rnorm(1000)'と 'x < - 1:1000'を持っていれば' dy/dx'を計算することができますが、あなたの場合は関数を持っていることさえありません。あなたは、異なるyを持つ2つのx値を持つことができます。 –

+0

2番目のケースでは 'dy/dx < - 2 * x + 1' –

答えて

0

微分を求めるには、(y2-y1)/(x2-x1)またはdy/dxの数値近似を使用します。 `プロット(X、Y、タイプ=「L」)`それははるかに連続似ていない。これらの点をプロットした場合

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) 
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。ここでもまた、これをプロットすることは、予想される誘導体とよく一致する。

関連する問題