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.
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] 66
Berdasarkan hasil iterasi diperoleh nilai akar penyelesaian adalah x=0,5671433 dengan iterasi dilakukan sebanyak 6 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.
Jawablah soal dibawah ini menggunakan metode secant pada RStudio
________________________________________________________________________________________________________________
Penyelesaian:
root_secant(function(x){((x + 2)^2)*((x − 1)^4)*(x + 5)}, x=0)
## $`function`
## function(x){((x + 2)^2)*((x - 1)^4)*(x + 5
## <bytecode: 0x0000000015b6f728>
##
## $root
## [1] 0.9999996
##
## $iter
## [1] 72
Berdasarkan hasil iterasi diperoleh nilai akar penyelesaian adalah x=0.9999996 dengan iterasi dilakukan sebanyak 72 kali.
________________________________________________________________________________________________________________
Penyelesaian:
root_secant(function(x){6*(x^4)+11*(x^3)-56*(x^2)+60}, x=0)
## $`function`
## function(x){6*(x^4)+11*(x^3)-56*(x^2)+60}
## <bytecode: 0x0000000013165cc8>
##
## $root
## [1] 1.000008e-06
##
## $iter
## [1] 3
Berdasarkan hasil iterasi diperoleh nilai akar penyelesaian adalah x=1.000008e-06 dengan iterasi dilakukan sebanyak 3 kali.
________________________________________________________________________________________________________________
root_secant(function(x){x^4-5*(x^3)+3*(x^2)+x}, x=0)
## $`function`
## function(x){x^4-5*(x^3)+3*(x^2)+x}
## <bytecode: 0x00000000153e3e90>
##
## $root
## [1] 0
##
## $iter
## [1] 2
Berdasarkan hasil iterasi diperoleh nilai akar penyelesaian adalah x=0 dengan iterasi dilakukan sebanyak 2 kali.
________________________________________________________________________________________________________________
Penyelesaian:
root_secant(function(x){7*x + 2*x - 1 - 3}, x=0)
## $`function`
## function(x){7*x + 2*x - 1 - 3}
## <bytecode: 0x0000000015e09f38>
##
## $root
## [1] 0.4444444
##
## $iter
## [1] 2
Berdasarkan hasil iterasi diperoleh nilai akar penyelesaian adalah x= 0.4444444 dengan iterasi dilakukan sebanyak 2 kali.
Suhartono.2015.Memahami Kalkulus Dasar Menggunakan Wolfram Mathematica 9.UIN Maliki Malang: Malang.