#Install package yang diperlukan
library (Deriv)
## Warning: package 'Deriv' was built under R version 4.3.3
# Definisikan fungsi f(x,y)
f <- function(x,y)  {3*x^2 + 4*x*y + 5*y^2}
# Hitung Gradien
grad_f <- Deriv(f, x = c("x", "y"))
#Evaluasi gradien di titik (1,2)
x0 <- 1
y0 <- 2
grad_at_point <- grad_f(x0, y0)
grad_at_point
##  x  y 
## 14 24
#Definisikan fungsi untuk matriks Hessian
hessian_f <- function(f, var) {
  #Fungsi untuk menghitung matriks Hessian
  H <- outer(var, var, Vectorize(function(x,y) Deriv(Deriv(f, x), y)))
  return(H)
}
#Variable yang digunakan 
variables <- c("x", "y")
#Hitung matriks Hessian
hessian <- hessian_f(f, variables)
#Evaluasi matriks Hessian di titik (1,3)
hessian_at_point <- sapply(hessian, function(df) df(x0, y0))
matrix(hessian_at_point, nrow = 2, byrow = TRUE)
##      [,1] [,2]
## [1,]    6    4
## [2,]    4   10
#Tentukan arah d= [-1, -1]
d <- c(-1, -1)
# Hitung descent direction
descent_direction <- sum(grad_at_point * d)
descent_direction
## [1] -38