2016-11-20 69 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