Nama : Rahmad Hidayat Al Fahrizzi
NIM : 230605110135
Dosen Pengampu : Prof. Dr. Suhartono, M.Kom
Universitas : Universitas Islam Negeri Maulana Malik Ibrahim Malang
Fakultas : Sains dan Teknologi
Program Studi : Teknik Informatika

Materi: Numerical Zero Finding (Pencarian Akar Numerik)

  1. Pendahuluan:
    • Akar fungsi adalah nilai yang membuat fungsi nol.
  2. Metode Numerik:
    • Metode iteratif untuk mendapatkan solusi perkiraan akar.
  3. Metode Bisection:
    • Ide dasar: menggunakan interval [a, b].
    • Proses: pilih interval, hitung titik tengah, tentukan interval baru.
    • Keuntungan: konvergensi stabil, mudah diimplementasikan.
  4. Implementasi Kode R:
    • Fungsi, metode bisection, plot grafik.
  5. Contoh Penggunaan:
    • Memasukkan rentang nilai.
    • Grafik fungsi dengan penanda pada akar.
  6. Kesimpulan:
    • Pencarian akar penting dalam pemecahan masalah numerik.
# Fungsi yang akan dicari akarnya
fungsi <- function(x) {
  return(x^3 - 6*x^2 + 11*x - 6)
}

# Metode Numerical Zero Finding (Bisection)
bisection <- function(fungsi, a, b, tol = 1e-6, max_iter = 100) {
  iter <- 0
  
  repeat {
    iter <- iter + 1
    
    c <- (a + b) / 2
    fc <- fungsi(c)
    
    if (abs(fc) < tol || iter >= max_iter) {
      break
    }
    
    if (fungsi(a) * fc < 0) {
      b <- c
    } else {
      a <- c
    }
  }
  
  if (iter >= max_iter) {
    cat("Metode Bisection tidak konvergen\n")
  } else {
    cat("Akar yang ditemukan:", c, "\n")
    cat("Jumlah iterasi:", iter, "\n")
  }
  
  return(c)
}

# Plot fungsi dan akar yang ditemukan
plot_fungsi <- function(fungsi, rentang, akar = NULL) {
  x <- seq(rentang[1], rentang[2], length.out = 100)
  y <- fungsi(x)

  plot(x, y, type = 'l', col = 'blue', lwd = 2, main = 'Numerical Zero Finding - Bisection')
  abline(h = 0, col = 'black', lty = 2)

  # Menandai akar yang ditemukan
  if (!is.null(akar)) {
    points(akar, fungsi(akar), col = 'red', pch = 16)
  }
}

# Menggunakan metode numerical zero finding (Bisection)
rentang <- c(0, 3)  # Ganti dengan rentang yang sesuai
akar <- bisection(fungsi, rentang[1], rentang[2])
## Akar yang ditemukan: 1 
## Jumlah iterasi: 21
# Plot fungsi dan akar yang ditemukan
plot_fungsi(fungsi, rentang, akar)