Interpolasi adalah permasalahan pencarian titik-titik di antara sejumlah diskret titik data yang diketahui. Interpolasi dapat diterapkan dalam ranah 2 dimensi maupun 3 dimensi. Dalam ranah 2 dimensi, interpolasi dapat menghasilkan kurva perkiraan yang mengkaitkan antara dua besaran fisis, atau bisa juga nilai medan skalar pada setiap titik pada bidang datar. Dalam dunia pengolahan citra seperti di dunia fisika medis, nilai medan skalar yang dimaksud bisa berupa nilai skala keabuan dari suatu citra. Dalam ranah 3 dimensi, interpolasi dapat menghasilkan nilai medan skalar pada setiap titik dalam ruang. Contoh penggunaan dalam ranah 3 dimensi seperti yang dilakukan di artikel ini. Dalam artikel tersebut, dicari pola persebaran radiasi sinar X di suatu ruang general X-ray dengan menggunakan metode interpolasi berdasarkan data radiasi di beberapa titik dalam ruang tersebut.
Salah satu metode interpolasi dalam ranah 2 dimensi yang dapat digunakan untuk menghasilkan polinomial pendekatan untuk sejumlah diskret data adalah metode polinomial interpolasi Lagrange (PIL). Andaikan kita memilik sejumlah data berikut
Maka PIL orde yang nilainya setiap adalah , yakni , diberikan oleh rumus berikut
dengan
Berikut ini akan dicontohkan perhitungan PIL dengan menggunakan scilab. Kode scilabnya diberikan di bawah ini (https://github.com/ardhi175/Metode-Numerik)
clc function HitungLnk=Lnk(x, n, i, datax) // indeks datax = i pembilangLnk=1 penyebutLnk=1 for j=1:n+1 if j<>i then pembilangLnk=pembilangLnk*(x-datax(j)) penyebutLnk=penyebutLnk*(datax(i)-datax(j)) end end HitungLnk=pembilangLnk/penyebutLnk endfunction maksimaldata=100 datax=zeros(1,maksimaldata) datay=zeros(1,maksimaldata) //jumlah data = n+1 jumlahdata=input("Berapa jumlah data (maksimal 100 data)?") n=jumlahdata-1 printf("Anda akan mencari polinomial order %i dari sejumlah %i data\n",n,jumlahdata) for i=1:jumlahdata printf("\n Masukkan data ke-%i\n",i-1) datax(i)=input("data x =") datay(i)=input("data y =") end xcari=input("Berapa nilai x yang ingin dicari nilai polinomialnya?") Pn=0 for i=1:jumlahdata Pn=Pn+datay(i)*Lnk(xcari,n,i,datax) end printf("P_%i (%g) = %g\n",n,xcari,Pn)
Pada kode di atas dibuat fungsi Lnk untuk menghitung , untuk setiap . Program akan meminta berapa jumlah data yang dimiliki oleh pengguna dan nilainya disimpan dalam variabel jumlahdata. Nilai pada variabel jumlahdata ini akan digunakan sebagai batas iterasi yang diperlukan untuk meminta masukan data-data yang diketahui. Selain itu, banyaknya jumlah data yang diberikan oleh pengguna juga diperlukan untuk menentukan batas iterasi ketika menghitung semua dan terakhir untuk menghitung . Data yang diketahui akan disimpan dalam array datax, sementara data yang bersesuaian akan disimpan dalam array datay.
Pada kode program tersebut telah ditentukan batas maksimal data yang diinput sebesar 100. Namun demikian pengguna dapat menggantinya menjadi nilai yang lebih tinggi ataupun lebih rendah, asalkan jumlah data yang diinputkan oleh pengguna tidak melebih batas maksimal data tersebut. Untuk lebih memahami penjelasan terkait polinomial interpolasi lagrange dan juga perhitungannya dengan menggunakan scilab, silahkan simak video pada tautan ini.
Comments
Post a Comment