Jurusan : Teknik Informatika
Dosen Pembimbing : Prof. Dr. Suhartono, M.Kom
Lembaga : Universitas Islam Negeri Maulana Malik Ibrahim Malang
Metode Newton-Cotes sangat powerful, tetapi metode tersebut memiliki dua fitur yang kurang diinginkan. Pertama, kita harus menggunakan evaluasi fungsi sejumlah n+1 untuk hasil presisi dan pada polinomial berderajat n
. Hal tersebut mungkin tampak seperti rasio yang baik, tetapi dalam praktiknya, jumlah titik evaluasi akan sering ditingkatkan untuk memperoleh akurasi yang lebih tinggi, namun hasil yang diperoleh juga tidak presisi. Sebagai contoh pembaca dapat melakukan simulasi dengan memvariasikan jumlah penel yang digunakan untuk memperoleh nilai integral sebuah fungsi. Jika kita plotkan hasil yang kita peroleh, grafik yang muncul berupa garis yang berosilasi khusunya pada penggunaan polinomial berderajat tinggi yang menunjukkan hasil yang diperoleh menjadi kurang presisi.
Kelemahan kedua, metode Newton-Cotes memerlukan fungsi terintegrasi untuk dievaluasi pada node yang berjarak sama. Ini benar terlepas dari fungsi yang digunakan. Setiap panel membutuhkan node dengan jarak yang sama di dalamnya. Ini bisa menjadi masalah dengan fungsi periodik, di mana diskontinuitas periodik dapat secara kebetulan mendarat di titik evaluasi. Jika panel Newton-Cotes dapat menyebabkan masalah, kita dapat menggunakan integrasi Gaussian untuk menyelesaikan integral.
Secara umum integrasi Gauss berusaha memperoleh pendekatan luas dibawah kurva fungsi dengan memecah fungsi tersebut menjadi faktor bobot c dan f(x) yang merupakan polinomial pendekatannya. Integral diperoleh melalui hasil kali dari bobot dan fungsi polinomial. Jumlah bobot dan fungsi yang digunakan bergantung pada orde n polinomial yang akan digunakan untuk mengestimasi integral suatu fungsi.
Bentuk umum dari kaidah Gauss:
dimana c merupakan faktor bobot dan x merupakan titik evaluasi.
Algoritma Kuadratur Gauss-Legendre
1. Tentukan fungsi f(x) dan selang integrasinya [a,b]
2. Lakukan transformasi fungsi tersebut hingga diperoleh fungsi dengan selang [−1,1]
3. Tentukan orde polinomial n
4. yang akan digunakan.
5. Lakukan proses integrasi dengan mengalikan faktor bobot c dengan f(xi)
Kita dapat membangun suatu fungsi pada R untuk melakukan integrasi Gauss berdasarkan algoritma tersebut. Sintaks fungsi tersebut adalah sebagai berikut:
gauss_legendre <- function(f, n){
if(n==2){
c <- c(1,1)
x <- c(-0.577350269, 0.577350269)
integral <- 0
for(i in 1:n){
integral <- integral + c[i]*f(x[i])
}
}else if(n==3){
c <- c(0.555555556,0.888888889,0.555555556)
x <- c(-0.774596669,0,0.774596669)
integral <- 0
for(i in 1:n){
integral <- integral + c[i]*f(x[i])
}
}else if(n==4){
c <- c(0.347854845,0.652145155,0.652145155,
0.347854845)
x <- c(-0.861136312,-0.339981044,0.339981044,
0.861136312)
integral <- 0
for(i in 1:n){
integral <- integral + c[i]*f(x[i])
}
}else if(n==5){
c <- c(0.236926885,0.478628670,0.568888889,
0.478628670,0.236926885)
x <- c(-0.906179846,-0.538469310,0,
0.538469310, 0.906179846)
integral <- 0
for(i in 1:n){
integral <- integral + c[i]*f(x[i])
}
}else if(n==6){
c <- c(0.171324492,0.360761573,0.467913935,
0.467913935,0.360761573,0.171324492)
x <- c(-0.932469514,-0.661209386,-0.238619186,
0.238619186, 0.661209386,0.932469514)
integral <- 0
for(i in 1:n){
integral <- integral + c[i]*f(x[i])
}
}else{
stop("n harus ditentukan")
}
return(integral)
}
Contoh:
Hitunglah integral fungsi berikut menggunakan metode Gauss-Legendre 2 titik!
Jawab:
Agar fungsi tersebut dapat dicari nilai integralnya menggunakan metode Gauss-Legendre, fungsi tersebut perlu ditransformasi terlebih dahulu:
jadi dalam ini:
maka :
Kita juga dapat menggunakan fungsi gauss_legendre() untuk melakukan integrasi Gauss-Legendre pada dua titik. Berikut adalah sintaks yang digunakan:
0.5*gauss_legendre(function(x)((1.5+0.5*x)^2)+1,
n=2)
## [1] 3.333333
Metode Gauss-Legendre Menggunakan Fungsi
Fungsi legendre.quadrature() dari Paket gaussquand dapat dijadikan alternatif untuk menghitung integral suatu fungsi menggunakan metode Gauss-Lagendre. Fortmat fungsi tersebut adalah sebagai berikut:
legendre.quadrature(functn, rule, lower=-1, upper=1,
weighted = TRUE, ...)
Catatan:
functn: fungsi yang akan dicari integralnya
rule: data frame yang terdiri atas orde n aturan kuadratur legendre
lower: batas atas.
upper: batas bawah.
weighted: nilai boolean yang menyatakan apakah bobot fungsi disertakan dalam integran
…: argumen tambahan functn
Untuk menentukan rule pada fungsi legendre.quadrature(), diperlukan fungsi lain yang tersedia pada Paket gaussquad. Fungsi tersebut adalah legendre.quadrature.rules(). Fungsi tersebut akan menampilkan list data frame berdasarkan orde polinomial yang digunakan sebagai taksiran yang terdiri atas faktor bobot dan titik evaluasi. Format fungsi tersebut adalah sebagai berikut:
legendre.quadrature.rules(n,normalized=FALSE)
Catatan:
n: orde tertinggi polinomial yang akan ditampilkan
normalized: nilai boolean. Jika bernilai TRUE, aturan digunakan untuk polinomial ortogonal.
Referensi:
https://bookdown.org/moh_rosidi2610/Metode_Numerik/diffinteg.html#kuadgauss