Lembaga : UIN Maulana Malik Ibrahim Malang
Jurusan : Teknik Informatika

A. Akar Persamaan Polinomial Menggunakan Fungsi polyroot

Fungsi polyroot() pada paket base dapat digunakan untuk memperoleh akar dari suatu polinomial. Algortima yang digunakan dalam fungsi tersebut adalah algoritma Jenkins dan Traub.

Untuk dapat menggunakannya kita hanya perlu memasukkan vektor koefisien dari polinomial. Pengisian elemen dalam vektor dimulai dari variabel dengan pangkat tertinggi menuju variabel dengan pangkat terendah. Berikut adalah contoh bagaimana fungsi polyroot() digunakan untuk mencari akar polinomial
f(x)=x2+1 :

polyroot(c(1,0,1))
## [1] 0+1i 0-1i

B. Metode Secant

Metode Secant merupakan perbaikan dari metode regula-falsi dan Newton Raphson, dimana kemiringan dua titik dinyatakan secara diskrit dengan mengambil bentuk garis lurus yang melalui satu titik. Adapun algoritma Metode Secant sebagai berikut :

  1. Definisikan f(x) dan f′(x)
  2. Tentukan nilai toleransi e dan iterasi masimum (N)
  3. Tentukan tebakan awal x0 dan x1
  4. Hitung f(x0) dan f(x1)
  5. Untuk iterasi i=1 s/d N atau |f(x)|≥e| hitung x menggunakan Persamaan (7.14)
    Gambar 7.14
  6. Akar persamaan adalah nilai x yang terakhir.

Fungsi root_secant() merupakan fungsi yang penulis buat untuk melakukan iterasi menggunakan metode Secant. Berikut merupakan sintaks dari fungsi tersebut:

root_secant <- function(f, x, tol=1e-7, N=100){
  iter <- 0
  
  xold <- x
  fxold <- f(x)
  x <- xold+10*tol
  
  while(abs(x-xold)>tol){
    iter <- iter+1
    if(iter>N)
      stop("No solutions found")
    
    fx <- f(x)
    xnew <- x - fx*((x-xold)/(fx-fxold))
    xold <- x
    fxold <- fx
    x <- xnew
  }
  
  root<-xnew
  return(list(`function`=f, root=root, iter=iter))
}

LEMBAR KERJA MAHASISWA

1) Cari hasil perkalian dari tiga persamaan berikut (x+2)2 (x-1)4 (x+5)

2) Cari faktor dari persamaan 6x4 + 11x3 − 56x2 − x + 60

1) Cari penyelesaian persamaan x4 − 5x3 + 3x2 + x = 0

1) Cari penyelesaian dari pertidaksamaan 7x – 1 < 2x + 3

Jawab :

Soal 1

f <- function(x){
  (x + 2)^2*((x - 1)^4)*(x + 5)
}
root_secant(f, 0.6)
## $`function`
## function(x){
##   (x + 2)^2*((x - 1)^4)*(x + 5)
## }
## <bytecode: 0x000000001476d148>
## 
## $root
## [1] 0.9999996
## 
## $iter
## [1] 68

Soal 2

f <- function(x){
  (6*x^4)+(11*x^3)-(56*x^2)-(x)+60
}
root_secant(f, 0.6)
## $`function`
## function(x){
##   (6*x^4)+(11*x^3)-(56*x^2)-(x)+60
## }
## <bytecode: 0x0000000015d43730>
## 
## $root
## [1] 1.5
## 
## $iter
## [1] 8

Soal 3

f <- function(x){
  (x^4)-(5*x^3)+(3*x^2)+(x)
}
root_secant(f, 0.5)
## $`function`
## function(x){
##   (x^4)-(5*x^3)+(3*x^2)+(x)
## }
## <bytecode: 0x0000000013098c68>
## 
## $root
## [1] -0.236068
## 
## $iter
## [1] 12

Soal 4

f <- function(x){
  (7*x)-(2*x)-1-3
}
root_secant(f, 0.5)
## $`function`
## function(x){
##   (7*x)-(2*x)-1-3
## }
## <bytecode: 0x0000000015cc50a8>
## 
## $root
## [1] 0.8
## 
## $iter
## [1] 2