2013-08-28 17 views
8

我想找到二元函數的數值導數。任意定義函數的數值導數

  • 的功能是由自己定義
  • 我需要相對於第一衍生物每個參數和交叉二階導數

是否有一個包或內置函數來做到這一點?

回答

11

安裝並加載numDeriv包。

library(numDeriv) 
f <- function(x) { 
    a <- x[1]; b <- x[2]; c <- x[3] 
    sin(a^2*(abs(cos(b))^c)) 
} 
grad(f,x=1:3) 
## [1] 0.14376097 0.47118519 -0.06301885 
hessian(f,x=1:3) 
##   [,1]  [,2]  [,3] 
## [1,] 0.1422651 0.9374675 -0.12538196 
## [2,] 0.9374675 1.8274058 -0.25388515 
## [3,] -0.1253820 -0.2538852 0.05496226 

(我的例子是三變量,而不是二元的,但它顯然對一個二元函數正常工作。)請參閱幫助頁面,瞭解如何梯度,特別是黑森州計算完成的更多信息。