Inilah Materi dan Rumus-rumus dari Akar Persamaan Non-Linier (+ Video Materi)

Assalamu‘alaikum wr. wb.

Halo gais! Dalam Metode Numerik, ada salah satu Metode yang tak dapat diselesaikan dengan Metode Analitik, yaitu dalam menyelesaikan Akar Persamaan Non-Linear. Jika Akar Persamaan Kuadrat bersifat Analitik karena memiliki Rumus ABC, sedangkan untuk Akar Pangkat-n atau Non-Linear tidak memiliki Rumus yang Eksak. Mari kita bahas sampai tuntas pada Artikel ini.




MATERI

Persamaan non-linier dapat diartikan sebagai persamaan yang tidak mengandung syarat seperti persamaan linier, sehingga persamaan non-linier dapat merupakan :
  • Persamaan yang memiliki pangkat selain satu (misal:  x2)
  • Persamaan yang mempunyai produk dua variabel (misal:  xy)

Dalam penyelesaian persamaan non-linier diperlukan akar-akar persamaan non-linier, dimana akar sebuah persamaan non-linier f(x) = 0  merupakan nilai  x  yang menyebabkan nilai f(x) sama dengan nol. Dalam hal ini dapat disimpulkan bahwa akar-akar penyelesaian persamaan non-linier merupakan titik potong antara kurva f(x) dengan sumbu x. Ilustrasi penjelasan tersebut ditampilkan pada Gambar di bawah ini.

Penyelesaian Persamaan Non-Linier

Contoh sederhana dari penentuan akar persamaan non-linier adalah penentuan akar persamaan kuadratik. Secara analitik penentuan akar persamaan kuadratik dapat dilakukan menggunakan Persamaan ini.


Untuk masalah yang lebih rumit, penyelesaian analitik sudah tidak mungkin dilakukan. Metode numerik dapat digunakan untuk menyelesaikan masalah yang lebih kompleks. Untuk mengetahui apakah suatu persamaan non-linier memiliki akar-akar penyelesaian atau tidak, diperlukan analisa menggunakan Teorema berikut :

Suatu range x = [a, b] mempunyai akar bila f(a) dan f(b) berlawanan tanda atau memenuhi f(a) • f(b) < 0

Untuk memahami Teorema tersebut perhatikan ilustrasi pada Gambar di bawah ini.

Teorema Bolzano

Akan dilakukan sejumlah pembahasan antara lain :
  • penentuan akar persamaan dengan metode tertutup
  • penentuan akar persamaan dengan metode terbuka
  • Fungsi-fungsi Python untuk menentukan akar persamaan non-linier
  • Studi kasus

A. Metode Tertutup


Metode tertutup disebut juga metode bracketing. Disebut sebagai metode tertutup karena dalam pencarian akar-akar persamaan non-linier dilakukan dalam suatu selang [a, b].

1. Metode Tabel

Penyelesaian persamaan non-linier menggunakan metode tabel dilakukan dengan membagi persamaan menjadi beberapa area, dimana untuk  x = [a, b] dibagi sebanyak  
N bagian dan pada masing-masing bagian dihitung nilai  f(x)  sehingga diperoleh nilai f(x) pada setiap N bagian.

Bila nilai  f(xk) = 0  atau mendekati nol, dimana a ≤ k ≤ b , maka dikatakan bahwa xk adalah penyelesaian persamaan f(x). Bila tidak ditemukan, dicari nilai f(xk) dan f(xk+1)  yang berlawanan tanda. Bila tidak ditemukan, maka persamaan tersebut dapat dikatakan tidak mempunyai akar untuk rentang [a, b].

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 di bawah ini.

Metode Tabel

Algoritma Metode Tabel :
  1. Definisikan fungsi  f(x)
  2. Tentukan rentang untuk x yang berupa batas bawah a dan batas atas b.
  3. Tentukan jumlah pembagi N 
  4. Hitung step pembagi
  5. Untuk i = 0 s/d N, hitung :
  6. Untuk i = 0 s/d N, dimana
    • Bila f(x) = 0, maka akarnya xk
    • Bila  f(a) • f(b) < 0, maka :
      • f(xk) ≤ f(xk+1), maka akarnya xk
      • Bila tidak, xk+1 adalah penyelesaian atau dapat dikatakan penyelesaian berada diantara xk dan xk+1.

Kita dapat membuat suatu fungsi pada Python untuk melakukan proses iterasi pada metode Tabel. Fungsi root_table() akan melakukan iterasi berdasarkan langkah Algoritma 1 sampai 5. Berikut adalah sintaks yang digunakan :

import pandas as pd
import numpy as np

def root_table(f, a, b, N=20):
    h = np.abs((a+b)/N)
    x = np.arange(a, b+h, h)
    fx = np.zeros(N+1)
    for i in range(N+1):
        fx[i] = f(x[i])
    data = pd.DataFrame({'x': x, 'fx': fx})
    return data
Contoh : Carilah akar persamaan  pada rentang [10]?

Sebagai permulaan, jumlah pembagi yang digunakan adalah N = 10. Dengan menggunakan fungsi root_table() diperoleh hasil yang disajikan pada Tabel dan program di bawah ini.

import math

def f(x):
    return x + math.exp(x)

table = root_table(f, -1, 0, 10)
print(table)
Penyelesaian persamaan x+exp(x) = 0
x
fx
-1.0
-0.6321
-0.9
-0.4934
-0.8
-0.3507
-0.7
-0.2034
-0.6
-0.0512
-0.5
0.1065
-0.4
0.2703
-0.3
0.4408
-0.2
0.6187
-0.1
0.8048
0.0
1.0000

Sehingga, menjadi seperti ini programnya :

import math
import pandas as pd
import numpy as np

def root_table(f, a, b, N=20):
    h = np.abs((a+b)/N)
    x = np.arange(a, b+h, h)
    fx = np.zeros(N+1)
    for i in range(N+1):
        fx[i] = f(x[i])
    data = pd.DataFrame({'x': x, 'fx': fx})
    return data

def f(x):
    return x + math.exp(x)

table = root_table(f, -1, 0, 10)
print(table)
Berdasarkan tabel diatas, diperoleh penyelesaian di antara —0,6 dan —0,5 dengan nilai f (c) masing-masing sebesar —0,0512 dan —0,1065, sehingga dapat diambil penyelesaian —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 :

Plot fungsi x+exp(x) pada rentang -1 sampai 0

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.

2. Metode Biseksi

Prinsip metode bagi dua adalah mengurung akar fungsi pada interval x = [a, b] atau pada nilai x batas bawah a dan batas atas b. 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 di bawah ini.

Metode Biseksi

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 f(x)
  2. Tentukan rentang untuk yang berupa batas bawah a dan batas atas b.
  3. Tentukan nilai toleransi e dan iterasi maksimum N.
  4. Hitung f(a) dan f(b)
  5. Hitung : 
  6. Hitung f(x)
  7. Bila  f(x) • f(a) < 0, maka b = x dan f(b) = f(x). Bila tidak, a = x dan f(a) = f(x)
  8. Bila |b−a| < e atau iterasi maksimum maka proses dihentikan dan didapatkan akar = x, dan bila tidak ulangi langkah 6.
  9. Jika sudah diperoleh nilai dibawah nilai toleransi, nilai akar selanjutnya dihitung berdasarkan Persamaan di atas dengan nilai a dan b merupakan nilai baru yang diperoleh dari proses iterasi.

Berdasarkan algoritma tersebut, kita dapat menyusun suatu fungsi pada Python 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 :

def root_bisection(f, a, b, tol=1e-7, N=100):
    iter = 0
    fa = f(a)
    fb = f(b)

    while abs(b-a) > tol:
        iter += 1
        if iter > N:
            print("iterations maximum exceeded")
            break
        x = (a+b)/2
        fx = f(x)
        if fa*fx > 0:
            a = x
            fa = fx
        else:
            b = x
            fb = fx

    # Return value of the iteration and root value of x
    root = (a+b)/2
    return {'function': f, 'root': root, 'iter': iter}
Contoh : Carilah akar persamaan  pada rentang x = [-1, 0] dengan nilai toleransi sebesar 10-7?

Langkah pertama dalam penghitungan adalah menghitung nilai x menggunakan Persamaan di bawah ini.


Kemudian, hitung nilai f(x) dan f(a).


Berdasarkan hasil perhitungan diperoleh :


Sehingga b = x dan f(b) = f(x). Iterasi dilakukan kembali dengan menggunakan nilai b tersebut.

Untuk mempersingkat waktu iterasi kita akan menggunakan fungsi root_bisection() pada Python. Berikut adalah sintaks yang digunakan :

import math

def f(x):
    return x*math.exp(-x)+1

result = root_bisection(f, -1, 0)
print(result)
Sehingga, menjadi seperti ini programnya :

import math

def root_bisection(f, a, b, tol=1e-7, N=100):
    iter = 0
    fa = f(a)
    fb = f(b)

    while abs(b-a) > tol:
        iter += 1
        if iter > N:
            print("iterations maximum exceeded")
            break
        x = (a+b)/2
        fx = f(x)
        if fa*fx > 0:
            a = x
            fa = fx
        else:
            b = x
            fb = fx

    # Return value of the iteration and root value of x
    root = (a+b)/2
    return {'function': f, 'root': root, 'iter': iter}

def f(x):
    return x*math.exp(-x)+1

result = root_bisection(f, -1, 0)
print(result)
Output :

{'function': <function f at 0x7fd26ccb0700>, 'root': -0.5671432912349701, 'iter': 24}

Berdasarkan hasil iterasi diperoleh akar persamaan x = −2.980232e−08 dan iterasi yang diperlukan untuk memperolehnya sebanyak 24 iterasi.

3. 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 di bawah ini.


Ilustrasi dari Metode Regula Falsi disajikan pada Gambar di bawah ini.

Metode Regula Falsi

Algoritma Metode Regula Falsi :
  1. Definisikan fungsi f(x)
  2. Tentukan rentang untuk x yang berupa batas bawah a dan batas atas b.
  3. Tentukan nilai toleransi e dan iterasi maksimum N.
  4. Hitung f(a) dan f(b)
  5. Untuk iterasi i = 1 s/d N.
    • Hitung nilai berdasarkan Persamaan di atas (Rumus Metode Regula Falsi).
    • Hitung f(x)
    • Hitung error = |f(x)|
    • Jika f (c) • f (a) < 0, maka b = x dan f(b) = f(x). Jika tidak, a = x dan f(a) = f(x).
  6. Akar persamaan adalah x.

Fungsi root_rf() didasarkan pada langkah-langkah di atas. Sintaks fungsi tersebut adalah sebagai berikut :

def root_rf(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 += 1
        if iter > N:
            print("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)

    # Return value of the iteration and root value of x
    root = x
    return {'function': f, 'root': root, 'iter': iter}
Contoh : Selesaikan persamaan non-linier pada Contoh di atas (Metode Biseksi) menggunakan Metode Regula Falsi pada rentang x = [-1, 0] dengan nilai toleransi sebesar 10-7?

Kemudian, hitung nilai x dan f(x).


Berdasarkan hasil perhitungan diperoleh :


Sehingga b = x dan f(b) = f(x). Iterasi dilakukan kembali dengan menggunakan nilai b tersebut.

Untuk mempercepat proses iterasi, kita dapat pula menggunakan fungsi root_rf() pada Python. Berikut adalah sintaks yang digunakan :

import math

def f(x):
    return x*math.exp(-x)+1

result = root_rf(f, -1, 0)
print(result)
Sehingga, menjadi seperti ini programnya :

import math

def root_rf(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 += 1
        if iter > N:
            print("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)

    # Return value of the iteration and root value of x
    root = x
    return {'function': f, 'root': root, 'iter': iter}

def f(x):
    return x*math.exp(-x)+1

result = root_rf(f, -1, 0)
print(result)
Output :

{'function': <function f at 0x000001526B74EB00>, 'root': -0.567143278067749, 'iter': 15}

Berdasarkan hasil perhitungan diperoleh nilai x = -0,5671433 dan jumlah iterasi yang diperlukan adalah 15. Jumlah ini lebih sedikit dari jumlah iterasi yang diperlukan pada metode iterasi biseksi yang juga menunjukkan metode ini lebih cepat memperoleh persamaan dibandingkan metode biseksi.

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.

1. Metode Iterasi Titik Tetap

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

Metode Iterasi Titik Tetap

Algoritma Metode Iterasi Titik Tetap :
  1. Definisikan f(x) dan g(x)
  2. Tentukan nilai toleransi e dan Iterasi Masimum (N)
  3. Tentukan tebakan awal x0
  4. Untuk iterasi i = 1 s/d N atau , Hitung f(xi).
  5. 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 :

def root_fpi(f, x0, tol=1e-7, N=100):
    iter = 1
    xold = x0
    xnew = f(xold)

    while abs(xnew-xold) > tol:
        iter += 1
        if iter > N:
            raise ValueError("No solutions found")
        xold = xnew
        xnew = f(xold)

    # Return value of the iteration and root value
    root = xnew
    return {'function': f, 'root': root, 'iter': iter}
Contoh : Selesaikan persamaan non-linier pada Contoh di atas (Metode Biseksi) menggunakan metode iterasi titik tetap?

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


Untuk tebakan awal digunakan nilai x = −1.


Nilai x 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 :

import math

def f(x):
    return -1/math.exp(-x)

result = root_fpi(f, -1)
print(result)
Sehingga, menjadi seperti ini programnya :

import math

def root_fpi(f, x0, tol=1e-7, N=100):
    iter = 1
    xold = x0
    xnew = f(xold)

    while abs(xnew-xold) > tol:
        iter += 1
        if iter > N:
            raise ValueError("No solutions found")
        xold = xnew
        xnew = f(xold)

    # Return value of the iteration and root value
    root = xnew
    return {'function': f, 'root': root, 'iter': iter}

def f(x):
    return -1/math.exp(-x)

result = root_fpi(f, -1)
print(result)
Output :

{'function': <function f at 0x00000241D34FEB00>, 'root': -0.5671432635541754, 'iter': 29}

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

2. 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 di bawah ini.


Ilustrasi metode Newton-Raphson disajikan pada Gambar di bawah ini.

Metode Newton-Raphson

Algoritma Metode Newton-Raphson :
  1. Definisikan f(x) dan f'(x)
  2. Tentukan nilai toleransi e dan iterasi masimum (N)
  3. Tentukan tebakan awal x_0
  4. Hitung f(x0) dan f'(x0)
  5. Untuk iterasi i = 1 s/d N atau |f(x)| ≥ e, hitung x menggunakan Persamaan di atas (Rumus Metode Newton-Raphson).
  6. Akar persamaan merupakan nilai xi terakhir yang diperoleh.

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

def root_newton(f, fp, x0, tol=1e-7, N=100):
    iter = 0
    xold = x0
    xnew = xold + 10*tol

    while abs(xnew - xold) > tol:
        iter += 1
        if iter > N:
            raise ValueError("No solutions found")
        xold = xnew
        xnew = xold - f(xold)/fp(xold)

    # Return value of the iteration and root value
    root = xnew
    return {'function': f, 'root': root, 'iter': iter}
Contoh : Selesaikan persamaan non-linier  menggunakan metode Newton-Raphson!

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


Tebakan awal yang digunakan adalah x = 0.


Hitung nilai x baru :


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

import math

root_newton(lambda x: x - exp(-x), lambda x: 1 + exp(-x), x0=0)
Sehingga, menjadi seperti ini programnya :

import math

def root_newton(f, fp, x0, tol=1e-7, N=100):
    iter = 0
    xold = x0
    xnew = xold + 10*tol

    while abs(xnew - xold) > tol:
        iter += 1
        if iter > N:
            raise ValueError("No solutions found")
        xold = xnew
        xnew = xold - f(xold)/fp(xold)

    # Return value of the iteration and root value
    root = xnew
    return {'function': f, 'root': root, 'iter': iter}
   
def f(x):
    return x - math.exp(-x)

def fp(x):
    return 1 + math.exp(-x)

result = root_newton(f, fp, 0)
print(result)
Output :

{'function': <function f at 0x000001C22D0CEB00>, 'root': 0.567143290409784, 'iter': 5}

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

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

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

Titik Pendekatan di Titik Puncak

b. Sulit memperoleh penyelesaian ketika titik pendekatan berada di antara 2 titik stasioner. Untuk memahami kendala ini perhatikan Gambar di bawah. Untuk menghindarinya, penentuan titik pendekatan dapat menggunakan bantuan metode tabel.

Titik Pendekatan di antara 2 Titik Stasioner

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

3. 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 di bawah ini.


Nilai m merupakan transformasi persamaan tersebut.


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


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


atau


Berdasarkan Persamaan di atas 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 :
  1. Definisikan f(x) dan f'(x).
  2. Tentukan nilai toleransi e dan iterasi masimum (N).
  3. Tentukan tebakan awal x0 dan x1.
  4. Hitung f(x0) dan f(x1).
  5. Untuk iterasi i = 1 s/d N atau |f(x)| ≥ e, hitung x menggunakan Persamaan di atas (Rumus xn+1 di atas).
  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 :

def root_secant(f, x, tol=1e-7, N=100):
    iter = 0
   
    xold = x
    fxold = f(x)
    x = xold + 10 * tol
   
    while abs(x - xold) > tol:
        iter += 1
        if iter > N:
            raise Exception("No solutions found")
       
        fx = f(x)
        xnew = x - fx * ((x - xold) / (fx - fxold))
        xold = x
        fxold = fx
        x = xnew
   
    root = xnew
    return {'function': f, 'root': root, 'iter': iter}
Contoh : Selesaikan persamaan non-linier pada Contoh di atas (Metode Newton-Raphson) menggunakan metode Secant!

Untuk menyelesaikan persamaan tersebut digunakan nilai pendekatan awal x0 = 0 dan .


Hitung nilai x2 dan f(x2).


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

import math

root_secant(lambda x: x - math.exp(-x), x=0)
Sehingga, menjadi seperti ini programnya :

import math

def root_secant(f, x, tol=1e-7, N=100):
    iter = 0
   
    xold = x
    fxold = f(x)
    x = xold + 10 * tol
   
    while abs(x - xold) > tol:
        iter += 1
        if iter > N:
            raise Exception("No solutions found")
       
        fx = f(x)
        xnew = x - fx * ((x - xold) / (fx - fxold))
        xold = x
        fxold = fx
        x = xnew
   
    root = xnew
    return {'function': f, 'root': root, 'iter': iter}

def f(x):
    return x - math.exp(-x)

result = root_secant(f, x=0)
print(result)
Output :

{'function': <function f at 0x00000227BB76EB00>, 'root': 0.5671432904097838, 'iter': 6}

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.

VIDEO (UNTUK MENGGUNAKAN EXCEL)

Untuk mengimplementasikan Akar Persamaan Non-Linier dengan menggunakan MS. Excel, lihatlah Video-video YouTube di bawah ini.

A. Metode Tertutup

1. Metode Biseksi


2. Metode Regula Falsi


B. Metode Terbuka

1. Metode Iterasi


2. Metode Secant


3. Metode Newton-Raphson



Semoga bermanfaat bagi semua Mahasiswa Teknik yang mengambil Mata Kuliah Metode Numerik.

Terima Kasih 😄😘👌👍 :)

Wassalamu‘alaikum wr. wb.

Post a Comment

Previous Post Next Post