Mencari Akar Persamaan menggunakan Python (Secant Method)

Iqbal Rahmadhan
4 min readMar 7, 2021

--

Permasalahan yang dihadapi jika menggunakan Newton-Raphson Method adalah kita perlu menentukan terlebih dahulu turunan pertama dari fungsi yang akan dicari nilai akarnya. Untuk pengguna tools pemrograman yang mendukung symbolic computation seperti Matlab dan Wolfram Mathematica hal ini tidak menjadi masalah karena kita dapat melakukan penurunan secara otomatis dengan mudah. Kedua contoh di atas memang sangat powerful, namun sayangnya kedua contoh di atas adalah tools yang tidak gratis.

Untuk menanggulangi hal ini, diperkenalkan Secant Method yang akan dibahas di tulisan ini.

Konsep

Walaupun terlihat seperti modifikasi untuk menghindari problem menentukan turunan fungsi, Secant Method muncul lebih dulu dari Newton-Raphson Method.

Sesuai namanya, metode ini memanfaatkan secant line(garis potong) dari suatu fungsi f(x) untuk mendekati nilai akarnya ketimbang tangen line (garis singgung) yang digunakan di Newton-Raphson Method.

Gambar 1: Secant line yang memotong fungsi di dua titik juga memotong sumbu-x di titik xᵢ₊₁

Pada gambar 1 terdapat secant line yang memotong fungsi di titik x=xᵢ-₁ dan x=xᵢ. Jika garis ini diteruskan hingga memotong sumbu-x maka kita akan mendapatkan titik potong di x=xᵢ₊₁ yang merupakan pendekatan kita ke nilai akar yang sebenarnya.

Untuk menentukan nilai dari xᵢ₊₁ kita dapat menurunkan persamaan yang digunakan di Newton-Raphson Method,

dimana nilai f’(x) dapat disubstitusi dengan

sehingga nilai dari xᵢ₊₁ dapat ditentukan sebagai berikut

Dapat dilihat disini bahwa kita dapat mendekati nilai akar yang sebenarnya tanpa harus menentukan turunan pertama dari fungsi yang diuji. Akan tetapi kita membutuhkan dua nilai tebakan yakni xᵢ dan xᵢ-₁. Hal ini mirip dengan Bisection Method, namun kita tidak perlu memastikan bahwa nilai berada di interval xᵢ dan xᵢ-₁ dengan kata lain kita tidak membutuhkan syarat f(xᵢ)f(xᵢ-₁)<0 agar metode dapat berjalan.

Jika perhitungan ini diteruskan dan maka kita bisa mendapatkan nilai f(xᵢ) yang mendekati nol seperti yang diilustrasikan di gambar 2.

Gambar 2: Proses menemukan akar menggunakan Secant Method untuk menentukan akar dari persamaan x⁴+x+10=0 dengan nilai tebakan awal di x=8 dan x=9.

Implementasi

Seperti yang telah dijelaskan di bagian konsep, kita membutuhkan dua nilai tebakan dan tentu saja fungsi yang akan diuji.

  • f : fungsi yang akan dicari nilai akarnya,
  • x0 : tebakan awal untuk nilai xᵢ-₁
  • x1 : tebakan awal untuk nilai xᵢ
  • e : batasan untuk memperkirakan apakah f(x) sudah mendekati 0
  • N : maksimum iterasi

Karena tidak membutuhkan syarat beda tanda, maka kita dapat langsung menguji terlebih dahulu apakah nilai f(xᵢ) (dalam kode digunakan x1) telah mendekati 0 atau belum. Jika belum kita dapat melakukan update nilai x0 dan x1 dengan menggunakan rumusan untuk mencari nilai xᵢ₊₁.

def secant(f,x0,x1,e=10**-4,N=100):
for i in range (0,N):
if abs(f(x1)) < e:
return x1
x2 = x1 - f(x1)*(x1-x0)/(f(x1)-f(x0))
x0 = x1
x1 = x2
print("Maximum iteration")
return x1

Misalkan kita akan memanggil fungsi secant() untuk mendapatkan nilai akar dari persamaan x⁴+x-10=0 menggunakan tebakan awal xᵢ-₁ dan xᵢ berturut-turut adalah 8 dan 9. Fungsi dapat dipanggil sebagai berikut:

x_root = secant(f,x0,x1)
print('Result : ', x_root)

Hasil dari pemanggilan fungsi tersebut adalah akar di x=1.6974736654325215 yang jika dijabarkan prosesnya adalah seperti tabel berikut.

n   | x1          | f(x1)
0 | 9.000000 | 6560.000000
1 | 6.339822 | 1611.844208
2 | 5.473278 | 892.881393
3 | 4.397115 | 368.224827
4 | 3.641822 | 169.545469
5 | 2.997283 | 73.704241
6 | 2.501617 | 31.665262
7 | 2.128263 | 12.644674
8 | 1.880062 | 4.373694
9 | 1.748813 | 1.102304
10 | 1.704589 | 0.147229
11 | 1.697771 | 0.006156
12 | 1.697474 | 0.000037

Konklusi

Jika dibandingkan dengan Bisection Method yang sama-sama membutuhkan dua nilai tebakan, metode ini memiliki keunggulan dimana nilai akar yang sebenarnya tidak perlu berada di antara dua nilai tebakan. Di lain sisi hal ini menyebabkan Secant Method tidak menjamin konvergensi dan tergolong metode terbuka seperti Newton Raphson Method.

Sedangkan jika dibandingkan Newton-Raphson, metode ini lebih praktis karena kita tidak perlu menurukan fungsi dari persamaan yang akan dicari nilai akarnya.

Untuk mana yang lebih cepat konvergensi, dari berbagai sumber didapatkan Newton-Raphson sering lebih cepat dibanding metode lain. Akan tetapi tidak menutup kemungkinan Bisection Method dan Secant Method bisa lebih cepat untuk kasus tertentu. Kita akan membahas lebih jauh perbandingan tiga metode ini lain waktu.

--

--