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}$ 이 구해졌음을 확인할 수 있다.

댓글