logo

Rでヤコビ行列とヘシアン行列を計算する方法 📂R

Rでヤコビ行列とヘシアン行列を計算する方法

コード

Rでヤコビ行列ヘッセ行列を計算するためには、numDerivパッケージのjacobian()関数とhessian()関数を使う。

install.packages("numDeriv")
library(numDeriv)
 
f <- function(v) {c(v[1]^2 + v[2]^2 - 1,
                   sin(pi*v[1]/2) + v[2]^3)}
g <- function(v) {(v[1])^3+(v[2])^2}
 
jacobian(f, c(1,1))
hessian(g, c(1,1))

コードを実行した結果は以下のとおりだ。上は$f(x,y) := \begin{bmatrix} x^2 + y^2 -1 \\ \displaystyle \sin {{ \pi } \over {2} } x + y^3 \end{bmatrix}$のヤコビ行列に$x=y=1$を代入した結果で、下は$g(x,y) := x^3 + y^2$のヘッセ行列に$x=y=1$を代入した結果だ。

20190325_172923.png 実際に、$f$のヤコビ行列は$J = \begin{bmatrix} 2x & 2y \\ {{\pi } \over {2} } \cos {{\pi } \over {2} } x & 3 y^2 \end{bmatrix}$であるから$J(1,1) = \begin{bmatrix} 2 & 2 \\ 0 & 3 \end{bmatrix}$が得られ、$g$のヘッセ行列は$H = \begin{bmatrix} 6x & 0 \\ 0 & 2 \end{bmatrix}$であるから$H(1,1) = \begin{bmatrix} 6 & 0 \\ 0 & 2 \end{bmatrix}$が得られたことが確認できる。