Penjelasan Mengenai Metode Terbuka

Metode terbuka merupakan metode yang menggunakan satu atau dua tebakan awal yang tidak memerlukan rentang sejumlah nilai. Metode terbuka terdiri dari beberapa jenis yaitu metode iterasi titik tetap, metode Newton-Raphson, dan metode Secant.

Metode Iterasi Titik Tetap

Metode iterasi titik tetap merupakan metode penyelesaian persamaan non-linier dengan cara menyelesaikan setiap variabel xx yang ada dalam suatu persamaan dengan sebagian yang lain sehingga diperoleh x=g(x)x=g(x) untuk masing-masing variabel xx. Sebagai contoh, untuk menyelesaikan persamaan x+ex=0x+ex=0, maka persamaan tersebut perlu diubah menjadi x=exx=ex atau g(x)=exg(x)=ex. Secara grafis metode ini diilustrasikan seperti Gambar 7.7.

Ilustrasi metode iterasi titik tetap.

Gambar 7.7: Ilustrasi metode iterasi titik tetap.


Algoritma Metode Iterasi Titik Tetap

  1. Definisikan f(x)f(x) dan g(x)g(x)

  2. Tentukan nilai toleransi ee dan iterasi masimum (N)

  3. Tentukan tebakan awal x0x0

  4. Untuk iterasi i=1i=1 s/d NN atau f(xiterasi)≥e→xi=g(xi−1)f(xiterasi)≥e→xi=g(xi−1), Hitung f(xi)f(xi)

  5. Akar persamaan adalah xx terakhir yang diperoleh


FUngsi root_fpi() dapat digunakan untuk melakukan iterasi dengan argumen fungsi berupa persamaan non-linier, nilai tebakan awal, nilai toleransi, dan jumlah iterasi maksimum. Berikut adalah sintaks fungsi tersebut:

root_fpi <- function(f, x0, tol=1e-7, N=100){
  iter <- 1
  xold <- x0
  xnew <- f(xold)
  
  while(abs(xnew-xold)>tol){
    iter <- iter+1
    if(iter>N){
      stop("No solutions found")
    }
    xold <- xnew
    xnew <- f(xold)
  }
  
  root <- xnew
  return(list(`function`=f, root=root, iter=iter))
}

Contoh 7.4 Selesaikan persamaan non-linier pada Contoh 7.2 menggunakan metode iterasi titik tetap?

Jawab:

Untuk menyelesaikan persamaan non-linier tersebut kita perlu mentransformasi persamaan non-linier tersebut terlebih dahulu.

xe−x+1=0 →x=−1e−xxe−x+1=0 →x=−1e−x

Untuk tebakan awal digunakan nilai x=−1x=−1

x1=−1e1=−2,718282x1=−1e1=−2,718282

Nilai xx tersebut selanjutnya dijadikan nilai input pada iterasi selanjutnya:

x2=−1e2,718282=−0,06598802x2=−1e2,718282=−0,06598802

iterasi terus dilakukan sampai diperoleh |xi+1−xi|≤e|xi+1−xi|≤e.

Untuk mempercepat proses iterasi kita dapat menggunakan bantuan fungsi root_fpi(). Berikut adalah sintaks yang digunakan:

root_fpi(function(x){-1/exp(-x)}, x0=-1)

## $`function`
## function (x) 
## {
##     -1/exp(-x)
## }
## <bytecode: 0x0000000018c9ee40>
## 
## $root
## [1] -0.5671
## 
## $iter
## [1] 29

Berdasarkan hasil iterasi diperoleh nilai x=−0,5671433x=−0,5671433 dengan jumlah iterasi yang diperlukan sebanyak 2929 kali. Jumlah iterasi akan bergantung dengan nilai tebakan awal yang kita berikan. Semakin dekat nilai tersebut dengan akar, semakin cepat nilai akar diperoleh.

Metode Newton-Raphson

Metode Newton-Raphson merupakan metode penyelesaian persamaan non-linier dengan menggunakan pendekatan satu titik awal dan mendekatinya dengan memperhatikan slope atau gradien. titik pendekatan dinyatakan pada Persamaan (7.7).

xn+1=xn−f(xn)f′(xn)(7.7)(7.7)xn+1=xn−f(xn)f′(xn)

Ilustrasi metode Newton-Raphson disajikan pada Gambar 7.8.

Ilustrasi metode Newton-Raphson.

Gambar 7.8: Ilustrasi metode Newton-Raphson.


Algoritma Metode Newton-Raphson

  1. Definisikan f(x)f(x) dan f′(x)f′(x)

  2. Tentukan nilai toleransi ee dan iterasi masimum (N)

  3. Tentukan tebakan awal x0x0

  4. Hitung f(x0)f(x0) dan f′(x0)f′(x0)

  5. Untuk iterasi i=1i=1 s/d NN atau |f(x)|≥e|f(x)|≥e, hitung xx menggunakan Persamaan (7.7)

  6. Akar persamaan merupakan nilai xixi terakhir yang diperoleh.


Fungsi root_newton() merupakan fungsi yang dibuat menggunakan algoritma di atas. Fungsi tersebut dituliskan pada sintaks berikut:

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

Contoh 7.5 Selesaikan persamaan non-linier x−e−x=0x−e−x=0 menggunakan metode Newton-Raphson?

Jawab:

Untuk dapat menggunakan metode Newton-Raphson, terlebih dahulu kita perlu memperoleh turunan pertama dari persamaan tersebut.

f(x)=x−e−x→f′(x)=1+e−xf(x)=x−e−x→f′(x)=1+e−x

Tebakan awal yang digunakan adalah x=0x=0.

f(x0)=0−e−0=−1f(x0)=0−e−0=−1f′(x0)=1+e−0=2f′(x0)=1+e−0=2

Hitung nilai xx baru:

x1=x0−f(x0)f′(x0)=0−−12=0,5x1=x0−f(x0)f′(x0)=0−−12=0,5

Untuk mempercepat proses iterasi, kita dapat menggunakan fungsi root_newton(). Berikut adalah sintaks yang digunakan:

root_newton(function(x){x-exp(-x)},
            function(x){1+exp(-x)},
              x0=0)

## $`function`
## function (x) 
## {
##     x - exp(-x)
## }
## <bytecode: 0x000000001c59e158>
## 
## $root
## [1] 0.5671
## 
## $iter
## [1] 5

Berdasarkan hasil iterasi diperoleh akar penyelesaian persamaan non-linier adalah x=0,5671433x=0,5671433 dengan jumlah iterasi yang diperlukan adalah 55 iterasi.

Dalam penerapannya metode Newton-Raphson dapat mengalami kendala. Kendala yang dihadapi adalah sebagai berikut:

  1. titik pendekatan tidak dapat digunakan jika merupakan titik ekstrim atau titik puncak. Hal ini disebabkan pada titik ini nilai f′(x)=0f′(x)=0. Untuk memahaminya perhatikan ilustasi yang disajikan pada Gambar 7.9. Untuk menatasi kendala ini biasanya titik pendekatan akan digeser.

Ilustrasi titik pendekatan di titik puncak.

Gambar 7.9: Ilustrasi titik pendekatan di titik puncak.

  1. Sulit memperoleh penyelesaian ketika titik pendekatan berada diantara 2 titik stasioner. Untuk memahami kendala ini perhatikan Gambar 7.10. Untuk menghindarinya, penentuan titik pendekatan dapat menggunakan bantuan metode tabel.

Ilustrasi titik pendekatan diantara 2 titik stasioner.

Gambar 7.10: Ilustrasi titik pendekatan diantara 2 titik stasioner.

  1. Turunan persamaan sering kali sulit untuk diperoleh (tidak dapat dikerjakan dengan metode analitik).

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. Persamaan yang dihasilkan disajikan pada Persamaan (7.8).

y−y0=m(x−x0)(7.8)(7.8)y−y0=m(x−x0)

Nilai mm merupakan transformasi persamaan tersebut.

mn=f(xn)−f(xn−1)xn−xn−1(7.9)(7.9)mn=f(xn)−f(xn−1)xn−xn−1

Bila y=f(x)y=f(x) dan ynyn dan xnxn diketahui, maka titik ke n+1n+1 adalah:

yn+1−yn=mn(xn+1−xn)(7.10)(7.10)yn+1−yn=mn(xn+1−xn)

Bila titik xn+1xn+1 dianggap akar persamaan maka nilai yn+1=0yn+1=0, sehingga diperoleh:

−yn=mn(xn+1−xn)(7.11)(7.11)−yn=mn(xn+1−xn)

mnxn−ynmn=xn+1(7.12)(7.12)mnxn−ynmn=xn+1

atau

xn+1=xn−yn1mn(7.13)(7.13)xn+1=xn−yn1mn

xn+1=xn−f(xn)xn−xn+1f(xn)−f(xn+1)(7.14)(7.14)xn+1=xn−f(xn)xn−xn+1f(xn)−f(xn+1)

Berdasarkan Persamaan (7.14) diketahui bahwa untuk memperoleh akar persamaan diperlukan 2 buah titik pendekatan. Dalam buku ini akan digunakan titik pendekatan kedua merupakan titik pendekatan pertama ditambah sepuluh kali nilai toleransi.

x1=x0+10∗tol(7.15)(7.15)x1=x0+10∗tol


Algoritma Metode Secant

  1. Definisikan f(x)f(x) dan f′(x)f′(x)

  2. Tentukan nilai toleransi ee dan iterasi masimum (N)

  3. Tentukan tebakan awal x0x0 dan x1x1

  4. Hitung f(x0)f(x0) dan f(x1)f(x1)

  5. Untuk iterasi i=1i=1 s/d NN atau |f(x)|≥e|f(x)|≥e, hitung xx menggunakan Persamaan (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))
}

Contoh 7.6 Selesaikan persamaan non-linier pada Contoh 7.5 menggunakan metode Secant?

Jawab:

Untuk menyelesaikan persamaan tersebut digunakan nilai pendekatan awal x0=0x0=0 dan x1=0+10∗10−7=10−6x1=0+10∗10−7=10−6.

f(x0)=0−e−0=−1f(x0)=0−e−0=−1

f(x1)=10−6−e−10−6=−0,999998f(x1)=10−6−e−10−6=−0,999998

Hitung nilai x2x2 dan f(x2)f(x2).

x2=0+0,99999810−6−0−0,999998+1=0,499999x2=0+0,99999810−6−0−0,999998+1=0,499999

Untuk mempercepat proses iterasi kita dapat menggunakan fungsi root_secant() pada R. Berikut sintaks yang digunakan:

root_secant(function(x){x-exp(-x)}, x=0)

## $`function`
## function (x) 
## {
##     x - exp(-x)
## }
## <bytecode: 0x000000001b4fc6b0>
## 
## $root
## [1] 0.5671
## 
## $iter
## [1] 6

Berdasarkan hasil iterasi diperoleh nilai akar penyelesaian adalah x=0,5671433x=0,5671433 dengan iterasi dilakukan sebanyak 66 kali.

Secara umum metode Secant menawarkan sejumlah keuntungan dibanding metode lainnya. Pertama, seperti metode Newton-Raphson dan tidak seperti metode tertutup lainnya, metode ini tidak memerlukan rentang pencarian akar penyelesaian. Kedua, tidak seperti metode Newton-Raphson, metode ini tidak memerlukan pencarian turunan pertama persamaan non-linier secara analitik, dimana tidak dapat dilakukan otomasi pada setiap kasus.

Adapun kerugian dari metode ini adalah berpotensi menghasilkan hasil yang tidak konvergen sama seperti metode terbuka lainnya. Selain itu, kecepatan konvergensinya lebih lambat dibanding metode Newton-Raphson.

REFERENSI

https://bookdown.org/moh_rosidi2610/Metode_Numerik/rootfinding.html\#openmethod

Suhartono.2015.Memahami Kalkulus Dasar Menggunakan Wolfram Mathematica 9.UIN Maliki Malang: Malang.