Nama/Nim : Axel Dzakhwan AL Yushen/230605110124
Dosen Pengampu : Prof. Dr. Suhartono, M.Kom
Universitas : Universitas Islam Negeri Maulana Malik Ibrahim Malang
Fakultas : Sains dan Teknologi
Program Studi : Teknik Informatika

Di artikel ini kita akan membahas apa itu Numerical Optimization. Numerical optimization adalah cara untuk mencari nilai terbesar atau terkecil dari suatu fungsi dengan menggunakan angka-angka. Fungsi adalah hubungan antara dua hal yang saling bergantung satu sama lain. Misalnya, fungsi h(x) = x + 2 berarti ada hubungan antara h dan x, yaitu h selalu sama dengan x ditambah 2. Nilai terbesar atau terkecil dari suatu fungsi disebut juga nilai optimal. Nilai optimal berguna untuk menyelesaikan berbagai masalah di bidang ilmu pengetahuan, teknologi, ekonomi, dan lain-lain.

# Install dan load library yang diperlukan
install.packages("ggplot2")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.3'
## (as 'lib' is unspecified)
library(ggplot2)

# Fungsi yang akan dioptimalkan
f <- function(x) {
  return(x^2 + 2*x + 1)
}

# Algoritma optim() untuk numerical optimization
result <- optim(par = 0, fn = f, method = "BFGS")

# Tampilkan hasil
print(result)
## $par
## [1] -1
## 
## $value
## [1] 0
## 
## $counts
## function gradient 
##       12        3 
## 
## $convergence
## [1] 0
## 
## $message
## NULL
# Visualisasi
history <- data.frame(iteration = 1:result$counts[1], x = result$par, f_x = result$value)
ggplot(history, aes(x = iteration, y = f_x)) +
  geom_line(color = "blue") +
  geom_point(aes(x = iteration, y = f_x), color = "red") +
  labs(title = "Optimasi Numerik dengan optim()", x = "Iterasi", y = "f(x)")