2016-11-20 92 views
1

輸入自己編寫的函數來近似中的點X A的衍生物中的R是這樣的:功能作爲函數自變量

nderiv<- function(f,x,h){ 

    (f(x+h)-f(x))/h 

} 

而想要進行輸入f中爲任一X^2, 「X^2」或預定義的功能,如:如果您使用的最後一個例子(使用預定義的函數)

ex<- function(x){ 
     x^2 
} 

的代碼工作正常。但插入其他選項時,我無法使其工作。

我要麼得到錯誤

錯誤nderiv(X^2,1):對象 'X' 未找到

錯誤nderiv(」 x^2「,1,1e-04):找不到函數」f「

所以我想b能夠編寫nderiv(x^2,1,0.0001)nderiv("x^2",1,0.0001)並獲得值2.0001。

在此先感謝!

+0

如果目標是縮短函數規範,那麼這個工作:library(gsubfn); fn $ nderiv(〜x^2,1,0.0001)'。請參閱'?fn' –

回答

0

如果要使用x^2作爲匿名函數,請將其作爲作爲function(x){x^2}傳遞給nderiv。例如:

nderiv(function(x){x^2}, 1, 0.0001) 
+0

這是否意味着我必須編寫nderiv(function(x){x^2},1,0.0001)? – laurelisse

+0

是的,因爲你沒有提供'h'的默認值 –

+0

我不能在函數中寫入if語句來將輸入「x^2」寫入函數嗎?我嘗試寫nderiv(f,x,h){if(is.function){(f(x + h)-f(x))/ h} else {function(x){f}(f(x + h )-f(x))/ h},但它對我不起作用。它將字符串解釋爲字符,並且我不知道如何使它成爲「非字符」,所以它實際上起着函數的作用。 – laurelisse