Metode Numerik

Tugas 1


Kontak : \(\downarrow\)
Email
Instagram https://www.instagram.com/claraevania/
RPubs https://rpubs.com/claradellaevania/

SOAL

SOAL

\(x^3 + 2x^2 + 10x-20\)

func <- function(x) {
  x^3 + 2 * x^2 + 10 * x -20
}

bisection <- function(f, a, b, n = 1000, tol = 1e-7) {
  # Jika tanda-tanda fungsi pada titik yang dievaluasi, a dan b, hentikan fungsi dan kembalikan pesan.
  if (!(f(a) < 0) && (f(b) > 0)) {
    stop('signs of f(a) and f(b) differ')
  } else if ((f(a) > 0) && (f(b) < 0)) {
    stop('signs of f(a) and f(b) differ')
  }
  
  for (i in 1:n) {
    c <- (a + b) / 2 # Menghitung Titik Tengah
    
    # Jika fungsi sama dengan 0 di titik tengah atau titik tengah di bawah toleransi yang diinginkan, 
    # fungsi dan kembalikan root.hentikan
    if ((f(c) == 0) || ((b - a) / 2) < tol) {
      return(c)
    }
    
    # Jika iterasi lain diperlukan,
    # periksa tanda-tanda fungsi pada titik c dan a dan tetapkan
    # a atau b sesuai sebagai titik tengah yang akan digunakan pada iterasi berikutnya
    ifelse(sign(f(c)) == sign(f(a)), 
           a <- c,
           b <- c)
  }
  # Jika jumlah maksimum iterasi tercapai dan tidak ada root yang ditemukan,
  # kembalikan pesan dan akhiri fungsi.
  print('Too many iterations')
}

bisection(func,1,2)
## [1] 1.368808