Metode Newton untuk solusi persamaan taklinier

Diberikan fungsi \(f(x)\). Pilih satu titik, misalkan \(x_0\), sehingga didapatkan pasangan titik \((x_0,f(x_0))\). Pada titik \(x=x_0\) dibuat garis singgung, dengan kemiringan \(f'(x_0)\). Garis lurus yang melewati titik \(x_0\) dengan kemiringan \(f(x_0)\) adalah

$$y-f(x_0)=f'(x_0)(x-x_0)$$

Misalkan garis lurus \(y(x)\) memotong sumbu-x di titik \(x=x_1\), dimana \(y(x_1)=0\), akan diperoleh

$$x_1=x_0-f(x_0)/f'(x_0)$$

Jadi, sekarang diperoleh titik \((x_1,f(x_1))\).

Pada titik \((x_1,f(x_1))\) dibuat garis singgung. Kemiringan pada titik ini adalah \(f'(x_1)\). Garis lurus yang melewati titik \(x_1\) dengan kemiringan \(f'(x_1)\) adalah

$$y-f(x_1)=f'(x_1)(x-x_1)$$

Misalkan garis lurus \(y(x)\) memotong sumbu-x di \(x=x_2\), dimana \(y(x_2)=0\), maka diperoleh

$$x_2=x_1-f(x_1)/f'(x_1)$$

Jika proses ini diteruskan, maka diperoleh bentuk umum,

$$x_n+1=x_n-f(x_n)/f'(x_n)$$

dengan \(n=0,1,2,N-1\) dan \(x_0\) adalah tebakan awal.

Komputasi dengan python

Diberikan fungsi \(f(x)=x^2-6x+8\) yang akarnya adalah \(\{2,4\}\). Akan ditentukan akarnya menggunakan metode Newton dengan tebakan awal \(x_0=8\). Untuk bekerja dengan python, 2 modul dianggap cukup. (1) modul numpy digunakan untuk bekerja dengan array dan (2) matplotlib digunakan untuk visualisasi. Jika proses visualisasi dianggap tidak diperlukan, modul ini bisa tidak diikutsertakan.

import numpy as np
import matplotlib.pyplot as plt

Buat procedure untuk fungsi \(f(x)\)

def f(x):
return x**2-6*x+8

Buat procedure untuk turunan fungsi \(f'(x)\)

 
def df(x): return 2*x-6

Buat procedure untuk metode Newton. Metode Newton membutuhkan input fungsi \(f(x)\), turunan fungsi \(f'(x)\) tebakan awal \(x_0\), toleransi eror maksimum (tolmax), jumlah iterasi maksimum (itmax).

def newton(f,init,tolmax,itmax):
    x=np.zeros(itmax)
    x[0]=init
    for i in range(itmax-1):
        x[i+1]=x[i]-f(x[i])/df(x[i])
        if np.abs(f(x[i+1]))<tolmax
            break
return i,x[i+1],f(x[i+1])

Hasil ditampilkan pada Gambar 1 dan 2.

Gambar 1. Gerakan x[i] per iterasi
Gambar 2. Perbandingan x[i] dan f(x) di tiap iterasi