A. METODE TERTUTUP
Metode Tabel
Penyelesaian persamaan non-linier menggunakan metode tabel dilakukan dengan membagi persamaan menjadi beberapa area, dimana untuk
dibagi sebanyak bagian dan pada masing-masing bagian dihitung nilai sehingga diperoleh nilai pada setian bagian.
Bila nilai atau mendekati nol, dimana , maka dikatakan bahwa adalah penyelesaian persamaan . Bila tidak ditemukan, dicari nilai dan yang berlawanan tanda. Bila tidak ditemukan, maka persamaan tersebut dapat dikatakan tidak mempunyai akar untuk rentang .
Bila akar persamaan tidak ditemukan, maka ada dua kemungkinan untuk menentukan akar persamaan, yaitu:
- Akar persamaan ditentukan oleh nilai mana yang lebih dekat. Bila f(xk)≤f(xk+1), maka akarnya xk. Bila f(xk+1)≤f(xk), maka akarnya xk+1.
- Perlu dicari lagi menggunakan rentang x=[xk,xk+1].
Secara grafis penyelesaian persamaan non-linier menggunakan metode table disajikan pada Gambar dibawah.
Algoritma Metode Tabel
- Definisikan fungsi
- Tentukan rentang untuk yang berupa batas bawah dan batas atas .
- Tentukan jumlah pembagi
- Hitung step pembagi:
Untuk i=0 s/d N, hitung:
- Bila , maka akarnya
- Bila , maka:
- , maka akarnya
- Bila tida, adalah penyelesaian atau dapat dikatakan penyelesaian berada diantara dan .
Kita dapat membuat suatu fungsi pada R
untuk melakukan proses iterasi pada metode Tabel. Fungsi root_table()
akan melakukan iterasi berdasarkan step algoritma 1 sampai 5. Berikut adalah sintaks yang digunakan:
root_table <- function(f, a, b, N=20){
h <- abs((a+b)/N)
x <- seq(from=a, to=b, by=h)
fx <- rep(0, N+1)
for(i in 1:(N+1)){
fx[i] <- f(x[i])
}
data <- data.frame(x=x, fx=fx)
return(data)
}
Contoh 7.1 Carilah akar persamaan pada rentang ?
Jawab:
Sebagai permulaan, jumlah pembagi yang digunakan adalah
. Dengan menggunakan fungsi root_table()
diperoleh hasil yang disajikan pada Tabel penyelesaian persamaan.
Berdasarkan Tabel diatas diperoleh penyelesaian di antara −0,6 dan −0,5
dengan nilaif(x)masing-masing sebesar −0,0512 dan −0,1065, sehingga dapat diambil penyelesaian x=−0,6. Kita dapat terus melakukan iterasi sampai memperoleh nilai f(x) < nilai toleransi dengan terus merubah rentang yang diberikan. Iterasi berikutnya dengan nilai pembagi sama dan rentang nilai x=[−0,6;−0,5]diperoleh nilai x=−0,57 dan f(x)=0,00447. Untuk melihat gambaran lokasi akar, kita dapat pulang mengeplotkan data
menggunakan fungsi plot. Berikut adalah fungsi yang digunakan:Untuk mengetahui lokasi akar dengan lebih jelas, kita dapat memperkecil lagi rentang nilai yang dimasukkan dalam fungsi curve()
.
Metode tabel pada dasarnya memiliki kelemahan yaitu cukup sulit untuk memdapatkan error penyelesaian yang cukup kecil, sehingga metode ini jarang sekali digunakan untuk menyelesaikan persamaan non-linier. Namun, metode ini cukup baik digunakan dalam menentukan area penyelesaian sehingga dapat dijadikan acuan metode lain yang lebih baik.
Metode Biseksi
Prinsip metode bagi dua adalah mengurung akar fungsi pada interval
atau pada nilai batas bawah dan batas atas. Selanjutnya interval tersebut terus menerus dibagi 2 hingga sekecil mungkin, sehingga nilai hampiran yang dicari dapat ditentukan dengan tingkat toleransi tertentu. Untuk lebih memahami metode biseksi, perhatikan visualisasi pada gambar berikut.

Metode biseksi merupakan metode yang paling mudah dan paling sederhana dibanding metode lainnya. Adapun sifat metode ini antara lain:
- Konvergensi lambat
- Caranya mudah
- Tidak dapat digunakan untuk mencari akar imaginer
- Hanya dapat mencari satu akar pada satu siklus.
Algoritma Metode Biseksi
1. Definisikan fungsi
2. Tentukan rentang untuk yang berupa batas bawah dan batas atas .
3. Tentukan nilai toleransi e dan iterasi maksimum N
4. Hitung f(a) dan f(b)
5.Hitung:
7. maka b=x dan f(b)=f(x). Bila tidak, a=x dan f(a)=f(x)
8. Bila |b−a|<eatau iterasi maksimum maka proses dihentikan dan didapatkan akar=x
, dan bila tidak ulangi langkah 6
Berdasarkan algoritma tersebut, kita dapat menyusun suatu fungsi pada R
yang dapat digunakan untuk melakukan iterasi tersebut. Fungsi root_bisection()
merupakan fungsi yang telah penulis susun untuk melakukan iterasi
menggunakan metode biseksi. Berikut adalah sintaks dari fungsi tersebut:
root_bisection <- function(f, a, b, tol=1e-7, N=100){
iter <- 0
fa <- f(a)
fb <- f(b)
while(abs(b-a)>tol){
iter <- iter+1
if(iter>N){
warning("iterations maximum exceeded")
break
}
x <- (a+b)/2
fx <- f(x)
if(fa*fx>0){
a <- x
fa <- fx
} else{
b <- x
fb <- fx
}
}
# iterasi nilai x sebagai return value
root <- (a+b)/2
return(list(`function`=f, root=root, iter=iter))
}
Jawab:
Langkah pertama dalam penghitungan adalah menghitung nilai
menggunakan Persamaan gambar diatas.
Hitung nilai
dan.
Berdasarkan hasil perhitungan diperoleh:
Sehingga
dan . Iterasi dilakukan kembali dengan menggunakan nilaitersebut.
Untuk mempersingkat waktu iterasi kita akan menggunakan fungsi root_bisection()
pada R
. Berikut adalah sintaks yang digunakan:
## $`function`
## function (x)
## {
## x * exp(-x) + 1
## }
## <bytecode: 0x000000001d62cab0>
##
## $root
## [1] -0.5671
##
## $iter
## [1] 24
Berdasarkan hasil iterasi diperoleh akar persamaan
dan iterasi yang diperlukan untuk memperolehnya sebanyak iterasi.Metode Regula Falsi
Metode regula falsi merupakan metode yang menyerupai metode biseksi, dimana iterasi dilakukan dengan terus melakukan pembaharuan rentang untuk memperoleh akar persamaan. Hal yang membedakan metode ini dengan metode biseksi adalah pencarian akar didasarkan pada slope (kemiringan) dan selisih tinggi dari kedua titik rentang. Titik pendekatan pada metode regula-falsi disajikan pada Persamaan gambar dibawah.
Ilustrasi dari metode regula falsi disajikan pada Gambar berikut.

Algoritma Metode Regula Falsi
- Definisikan fungsi
- Hitung nilai
- .
- Akar persamaan adalah
Fungsi root_rf()
didasarkan pada langkah-langkah di atas. Sintaks fungsi tersebut adalah sebagai berikut:
root_rf <- function(f, a, b, tol=1e-7, N=100){
iter <- 1
fa <- f(a)
fb <- f(b)
x <- ((fb*a)-(fa*b))/(fb-fa)
fx <- f(x)
while(abs(fx)>tol){
iter <- iter+1
if(iter>N){
warning("iterations maximum exceeded")
break
}
if(fa*fx>0){
a <- x
fa <- fx
} else{
b <- x
fb <- fx
}
x <- (fb*a-fa*b)/(fb-fa)
fx <- f(x)
}
# iterasi nilai x sebagai return value
root <- x
return(list(`function`=f, root=root, iter=iter))
}
Jawab:
Langkah pertama penyelesaian dilakukan dengan mencari nilai
dan.
Hitung nilai dan
.
Berdasarkan hasil perhitungan diperoleh:
Sehingga
dan . Iterasi dilakukan kembali dengan menggunakan nilaitersebut.
Untuk mempercepat proses iterasi, kita dapat pula menggunakan fungsi root_rf()
pada R
. Berikut adalah sintaks yang digunakan:
## $`function`
## function (x)
## {
## x * exp(-x) + 1
## }
## <bytecode: 0x000000001c7931a8>
##
## $root
## [1] -0.5671
##
## $iter
## [1] 15
Berdasarkan hasil perhitungan diperoleh nilai

B. 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
. Secara grafis metode ini diilustrasikan seperti Gambar dibawah.

Algoritma Metode Iterasi Titik Tetap
- Definisikan f(x) dan g(x)
- Tentukan nilai toleransi e dan iterasi masimum (N)
- Tentukan tebakan awal x0
- Untuk iterasi i=1 s/d N atau f(xiterasi)≥e→xi=g(xi−1), Hitung f(xi)
- Akar persamaan adalah x 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))
}
Jawab:
Untuk menyelesaikan persamaan non-linier tersebut kita perlu mentransformasi persamaan non-linier tersebut terlebih dahulu.
Untuk tebakan awal digunakan nilai
Nilai
tersebut selanjutnya dijadikan nilai input pada iterasi selanjutnya:
iterasi terus dilakukan sampai diperoleh
.
Untuk mempercepat proses iterasi kita dapat menggunakan bantuan fungsi root_fpi()
. Berikut adalah sintaks yang digunakan:
## $`function`
## function (x)
## {
## -1/exp(-x)
## }
## <bytecode: 0x0000000018c9ee40>
##
## $root
## [1] -0.5671
##
## $iter
## [1] 29
Berdasarkan hasil iterasi diperoleh nilai
dengan jumlah iterasi yang diperlukan sebanyak 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 berikut.

Algoritma Metode Newton-Raphson
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))
}
Jawab:
Untuk dapat menggunakan metode Newton-Raphson, terlebih dahulu kita perlu memperoleh turunan pertama dari persamaan tersebut.
Tebakan awal yang digunakan adalah
.
Hitung nilai
baru:
Untuk mempercepat proses iterasi, kita dapat menggunakan fungsi root_newton()
. Berikut adalah sintaks yang digunakan:
## $`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
dengan jumlah iterasi yang diperlukan adalahiterasi.
Dalam penerapannya metode Newton-Raphson dapat mengalami kendala. Kendala yang dihadapi adalah sebagai berikut:
- titik pendekatan tidak dapat digunakan jika merupakan titik ekstrim atau titik puncak. Hal ini disebabkan pada titik ini nilai . Untuk memahaminya perhatikan ilustasi yang disajikan pada Gambar dibawah Untuk menatasi kendala ini biasanya titik pendekatan akan digeser.

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

- 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 dibawah.
Nilai
merupakan transformasi persamaan tersebut.
Bila
dan dan diketahui, maka titik keadalah:
Bila titik
dianggap akar persamaan maka nilai, sehingga diperoleh:
atau
Berdasarkan Persamaan 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.
Algoritma Metode Secant
- Definisikan f(x) dan f′(x)
- Tentukan nilai toleransi e dan iterasi masimum (N)
- Tentukan tebakan awal x0 dan x1
- Hitung f(x0) dan f(x1)
- Untuk iterasi i=1 s/d N atau |f(x)|≥e, hitung x menggunakan Persamaan
- 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))
}
Untuk dapat menggunakan metode Newton-Raphson, terlebih dahulu kita perlu memperoleh turunan pertama dari persamaan tersebut.
Tebakan awal yang digunakan adalah
.
Hitung nilai
baru:
Jawab:
Untuk menyelesaikan persamaan tersebut digunakan nilai pendekatan awal
dan.
Hitung nilai
dan.
Untuk mempercepat proses iterasi kita dapat menggunakan fungsi root_secant()
pada R
. Berikut sintaks yang digunakan:
## $`function`
## function (x)
## {
## x - exp(-x)
## }
## <bytecode: 0x000000001b4fc6b0>
##
## $root
## [1] 0.5671
##
## $iter
## [1] 6
Berdasarkan hasil iterasi diperoleh nilai akar penyelesaian adalah
dengan iterasi dilakukan sebanyakkali.
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.
Tidak ada komentar:
Posting Komentar