我遇到了以下问题。我正在尝试计算如下函数:
derivation <- function(function, number) {
derivation <- deriv(~function, "x")
return(derivation(number))
}
例如:
derivation(x^2, 3) {
derivation <- 2*x
return(2*3)
}
我不在乎是否必须将函数放在大括号中或作为表达式。变量始终为x
。也可以使用D
。
答案 0 :(得分:3)
一种可能性:
f <- function(fun,val) {
expr <- substitute(fun)
d <- deriv(expr,"x",function.arg=TRUE)
g <- attr(d(val),"gradient")
return(g)
}
f(x^2,3)
substitute()
将参数fun
转换为表达式,不用评估它deriv(...,function.arg=TRUE)
返回一个计算值的函数,并将衍生项包含为属性d(val)
调用函数attr(.,"gradient")
提取渐变如果要返回函数值及其渐变(作为双元素向量),可以使用
r <- d(val)
return(c(c(r),attr(r,"gradient"))
函数中的(内部c(r)
删除了r
)的属性。