uniroot dan uniroot.allPaket base pada R menyediakan fungsi uniroot() untuk mencari akar persamaan suatu fungsi pada rentang spesifik. Fungsi ini menggunakan metode Brent yaitu kombinasi antara root bracketing, biseksi, dan interpolasi invers kuadrat. Format fungsi tersebut secara sederhana adalah sebagai berikut:
uniroot(f, interval, tol=.Machine$double.eps^0.25,
maxiter=1000)
Catatan:
f: persamaan non-linier
interval: vektor interval batas bawah dan atas
tol: nilai toleransi
maxiter: iterasi maksimum
Berikut adalah contoh penerapan fungsi uniroot():
uniroot(function(x){x*exp(-x)+1},
interval=c(-1,0), tol=1e-7)
## $root
## [1] -0.5671
##
## $f.root
## [1] 1.533e-08
##
## $iter
## [1] 7
##
## $init.it
## [1] NA
##
## $estim.prec
## [1] 5e-08
Berdasarkan hasil iterasi diperoleh akar persamaan tersebut adalah −0,5671433−0,5671433 dengan jumlah iterasi sebanyak 77 iterasi dan tingkat presisi sebesar 5e−085e−08.
Fungsi lain yang dapat digunakan untuk mencari akar persamaan adalah uniroot.all() dari paket rootSolve. Fungsi ini mengatasi kelemahan dari uniroot(), dimana uniroot() tidak bekerja jika fungsi hanya menyentuh dan tidak melewati sumbu nol y=0y=0. Untuk memahaminya perhatikan contoh berikut:
uniroot(function(x){sin(x)+1}, c(-pi,0))
Bandingkan dengan sintaks berikut:
uniroot(function(x){sin(x)+1}, c(-pi,-pi/2))
## $root
## [1] -1.571
##
## $f.root
## [1] 0
##
## $iter
## [1] 0
##
## $init.it
## [1] NA
##
## $estim.prec
## [1] 0
Untuk menggunakan fungsi uniroot.all(), jalankan sintaks berikut:
library(rootSolve)
Jalankan kembali fungsi dan rentang di mana uniroot() tidak dapat bekerja:
uniroot.all(function(x){sin(x)+1}, c(-pi,0))
## [1] -1.571
polyrootFungsi 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+1f(x)=x2+1:
polyroot(c(1,0,1))
## [1] 0+1i 0-1i
Contoh lainnya adalah mencari akar polinomial f(x)=4x2+5x+6f(x)=4x2+5x+6:
polyroot(c(4,5,6))
## [1] -0.4167+0.7022i -0.4167-0.7022i
Pembaca dapat mencoba membuktikan hasil yang diperoleh tersebut menggunakan metode analitik.