Prodi : Teknik Informatika

Lembaga : UIN Maulana Malik Ibrahim Malang

Metode Beda Hingga

Diferensiasi merupakan proses mencari slope suatu garis pada titik yang diberikan. Secara umum proses diferensiasi dinyatakan melalui Persamaan (9.1).

Kita dapat menyatakan secara formal proses diferensiasi sebagai limit Persamaan (9.1) dimana \(h\) mendekati nol. Jadi kita ingin membuat nilai \(h\) sekecil mungkin untuk memperoleh pendekatan terbaik terhadap nilai turunan suatu fungsi. Kita membatasi nilai \(h\) pada sejumlah nilai yang masuk akal untuk mencegah pembagian dengan nilai yang tidak biasa. Kita juga harus memastikan \(f(x)\) dan \(f(x+h)\) terpisah cukup jauh untuk mencegah floating point round off error mempengaruhi proses substraksi.

Terdapat 3 buah metode untuk memperoleh turunan pertama suatu fungsi dengan menggunakan metode numerik, yaitu: metode selisih maju, metode selisih mundur, dan metode selisih tengah. Error pada ketiga metode numerik tersebut ditaksir menggunakan deret Taylor. Persamaan (9.2) dan Persamaan (9.3) menunjukkan persamaan untuk memperoleh turunan pertama dan taksiran error menggunakan metode selisih maju dan metode selisih mundur.

Metode nilai tengah menggunakan ukuran langkah \(h\) dua kali dibandingkan dengan 2 metode lainnya. Error yang dihasilkan juga berbeda dengan kedua metode sebelumnya, dimana error dihasilkan dari pemotongan turunan ketiga pada deret Taylor. Secara umum metode selisih tengah memiliki akurasi yang lebih baik dibandingkan kedua metode sebelumnya karena metode ini mempertimbangkan dua sisi untuk memeriksa nilai \(x\) . Persamaan (9.4) merupakan persamaan untuk memperoleh nilai turunan pertama suatu fungsi dan estimasi error menggunakan deret Taylor.

Bagaimana menentukan \(h?\) beberapa literatur menggunakan pendekatan machine error \(ϵ\) berdasarkan program yang digunakan untuk melakukan proses perhitungan. Metode selisih maju dan selisih mundur menggunakan pendekatan yang ditunjukkan pada Persamaan (9.5).

Untuk metode selisih tengah pendekatan nilai \(h\) menggunakan Persamaan (9.6).

Kita dapat menggunakan Persamaan (9.2) sampai Persamaan (9.4) untuk membentuk sebuah program yang digunakan untuk menghitung turunan pertama suatu fungsi. Sintaks yang digunakan adalah sebagai berikut:

findiff <- function(f, x, h, method=NULL){
  if(is.null(method)){
    warning("please select a method")
  }else{
    if(method == "forward"){
      return((f(x+h)-f(x))/h)
    }else if(method=="backward"){
      return((f(x)-f(x-h))/h)
    }else if(method=="central"){
      return((f(x+h)-f(x-h))/(2*h))
    }else{
      warning("you can use method: forward, bacward, or central")
    }
  }
}

Contoh 9.1 Hitunglah turunan pertama persamaan berikut menggunakan metode selisih titik tengah pada x =1 dan nilai h=0,05!

Jawab:

Untuk menghitung turunan pertama menggunakan metode selisih tengah, kita dapat menggunakan Persamaan (9.4). Berikut adalah proses perhitungannya:

Dengan menggunakan fungsi findiff(), hasil yang diperoleh adalah sebagai berikut:

findiff(function(x)
  exp(-x)*sin(2*x)+1, x=1, h=0.05,
  method="central")

## [1] -0.639

Kita dapat memperkecil nilai \(h\) untuk memperoleh akurasi yang lebih baik berdasarkan pendekatan Persamaan (9.6).

findiff(function(x){  exp(-x)*sin(2*x)+1}, x=1,
        h=1*.Machine$double.eps^(1/3), 
        method="central")

## [1] -0.6407

Penyelesaian persamaan matematik dalam bidang Teknik Lingkungan pada umumnya tidak hanya melibatkan turunan pertama, pada penyelesaian persamaan difusi umumnya menggunakan turunan kedua. Persamaan (9.7) merupakan pendekatan numerik untuk memperoleh nilai turunan kedua suatu persamaan dengan pendekatan deret Taylor.

Fungsi findiff2() merupakan fungsi yang digunakan untuk menghitung turunan kedua suatu persamaan yang didasarkan pada Persamaan (9.7).

findiff2 <- function(f, x, h){
  return((f(x+h)-2*f(x)+f(x-h))/(h^2))
}

Kita dapat menghitung kembali turunan kedua fungsi pada Contoh 9.1 menggunakan fungsi findiff2(). Berikut adalah sintaks yang digunakan:

findiff2(function(x){
  exp(-x)*sin(2*x)+1
}, x=1, h=0.05)

## [1] -0.3924

REFERENSI:

https://bookdown.org/moh_rosidi2610/Metode_Numerik/diffinteg.html#finitediff