如何使用 "Deriv" 根据多个参数计算函数的偏导数
How can I compute partial derivatives of a function depending on multiple parameters using "Deriv"
我正在尝试使用包 Deriv,根据一个或两个变量和参数向量计算函数的符号导数。但是,我总是得到错误:
Error in FUN(X[[i]], ...) : Could not retrieve body of '[()'
我试过:
test_fun <- function(x,y,par){x\*par[1]+y\*par[2]}
Deriv(test_fun,"x",par=c(2,2))
这会产生上述错误。也是
par <- c(2,2)
test_fun <- function(x,y,par){x\*par[1]+y\*par[2]}
Deriv(test_fun,"x")
显然
test_fun <- function(x,y,par){x\*2+y\*2}
Deriv(test_fun,"x")
按预期工作,但不是我想要的。
阅读 Deriv 包的文档,似乎不支持直接向函数传递额外的参数。还有其他方法可以达到预期的效果吗?
更新答案 (9/16):
下面有两个选项可以通过 Deriv
传递参数。另请注意,Derive
将在原始函数中保留大括号,因此要么在没有大括号的情况下定义函数,要么在之后调用 eval()
。
选项 1. 在对 Deriv
的调用中定义
test_fun <- function(x,y,par){x*par[1]+y*par[2]}
eval(Deriv(test_fun(par=c(2,2)),'x'))
# [1] 2
选项 2. 将参数值定义为函数。
test_fun <- function(x,y,par){x*par[1]+y*par[2]}
tpar <- function() c(2,2)
eval(Deriv(test_fun(par=tpar()), "x"))
# [1] 2
我正在尝试使用包 Deriv,根据一个或两个变量和参数向量计算函数的符号导数。但是,我总是得到错误:
Error in FUN(X[[i]], ...) : Could not retrieve body of '[()'
我试过:
test_fun <- function(x,y,par){x\*par[1]+y\*par[2]}
Deriv(test_fun,"x",par=c(2,2))
这会产生上述错误。也是
par <- c(2,2)
test_fun <- function(x,y,par){x\*par[1]+y\*par[2]}
Deriv(test_fun,"x")
显然
test_fun <- function(x,y,par){x\*2+y\*2}
Deriv(test_fun,"x")
按预期工作,但不是我想要的。
阅读 Deriv 包的文档,似乎不支持直接向函数传递额外的参数。还有其他方法可以达到预期的效果吗?
更新答案 (9/16):
下面有两个选项可以通过 Deriv
传递参数。另请注意,Derive
将在原始函数中保留大括号,因此要么在没有大括号的情况下定义函数,要么在之后调用 eval()
。
选项 1. 在对 Deriv
test_fun <- function(x,y,par){x*par[1]+y*par[2]}
eval(Deriv(test_fun(par=c(2,2)),'x'))
# [1] 2
选项 2. 将参数值定义为函数。
test_fun <- function(x,y,par){x*par[1]+y*par[2]}
tpar <- function() c(2,2)
eval(Deriv(test_fun(par=tpar()), "x"))
# [1] 2