R:如何根据多个参数计算函数的偏导数,使用" Deriv"

时间:2015-09-15 14:57:01

标签: r symbolic-math derivative

我正在尝试使用包Deriv,根据一个或两个变量和参数向量计算函数的符号导数。但是,我总是得到错误:

  

FUN中的错误(X [[i]],...):无法检索' [()'

的正文

我试过了:

  

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")

Obiously

  

test_fun< - function(x,y,par){x * 2 + y * 2}
    Deriv(test_fun," x")

按预期工作,但不是我想要的。

阅读Deriv-package的文档,似乎不支持直接向函数传递其他参数。有没有其他方法可以达到预期的效果?

1 个答案:

答案 0 :(得分:0)

更新的答案(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