Metode Numerik – Interpolasi Lagrange


KONSEP INTERPOLASI

Aproksimasi merupakan salah satu usaha untuk menyajikan data berbentuk grafis menjadi kalimat matematis. Secara umum aproksimasi harus mendapatkan suatu fungsi yang melewati semua titik yang diketahui. Aproksimasi ini dikenal sebagai interpolasi. Karena harus melewati semua titik yang ada, maka ada banyak fungsi yang memenuhi, kecuali jika fungsi tersebut mempunyai syarat tertentu.
x = xi → f(xi) = yi
Sedangkan secara khusus aproksimasi tidak mensyaratkan melewati semua titik. Walaupun demikian solusi yang didapat haruslah merupakan hasil terbaik yang mendekati semua titik yang diketahui. Aproksimasi secara khusus lebih dikenal dengan istillah regresi.
x = xi → f(xi) ≈ yi
Ada banyak metode interpolasi yang dapat diterapkan, diantaranya adalah:

  1. Interpolasi Newton
  2. Interpolasi Lagrange
  3. Interpolasi Hermite
  4. Interpolasi Invers

KONSEP INTERPOLASI LAGRANGE

Interpolasi Lagrange merupakan teknik yang popular, karena menggunakan fungsi dalam bentuk polinom. Jika fungsi yang dicari adalah f(x) dan cacah data n maka :

1

2

3

4

5

ALGORITMA INTERPOLASI LAGRANGE

Dari manual diatas dapat dituliskan algoritma kasarnya sebagai berikut :

  1. Tetapkan jumlah titik yang diketahui. Untuk menginputkan titik yang diketahui dapat meenggunakan dua array x dan y dengan jumlah data = jumlah titiknya. Dengan dua array akan lebih mudah mengatur perilaku data didalam program. Bisa juga menggunakan banyak array sejumlah titik yang diketahui, sehingga masing-masing pasang data disimpan dalam satu array. Cara ini terlihat lebih sederhana, tetapi lebih sulit dalam mengatur perilaku data. Dalam implementasi ini nantinya akan dipilih cara yang pertama, yakni menggunakan dua array x dan y.
  2. Mencari Li(x) dan P(x) Li(x) didapat sejumlah titik yang diketahui, sehingga diperlukan perulangan sebanyak titik yang diketahui. Demikian pula P(x) merupakan jumlahan dari perkalian yi dan Li(x), sehingga memerlukan perulangan yang jumlahnya sana dengan proses pencarian Li(x). Untuk mencari Li(x) diperlukan Qi(x) dan Qi(xi). Karena Qi(x) merupakan hasil perkalian (x-xi) sejumlah titik yang diketahui, maka diperlukan perulangan lagi untuk mencarinya. Tetapi yang harus diingat disini adalah bahwa, untuk (x-xi) tersebut tidak ikut dalam hasil perkalian. Sehingga proses hanya akan dilakukan untuk nilai selain (x-xi). Untuk Qi(xi) dapat dicari setelah Qi(x) diketahui dengan cara mensubstitusi nilai xi ke dalam Qi(x). Setelah Qi(x) dan Qi(xi) diketahui dapat dicari Li(x). Dan untuk selanjutnya mencari P(x). Misalnya banyaknya titik yang diketahui adalah b, maka algoritma diatas dapat diperhalus menjadi sebagai berikut:
  • Inputkan b.
  • Dari i = 1 s.d b
    Inputkan titik ke i
  • Dari i = 1 s.d b
    Cari Qi(x)
    Cari Qi(xi)
    Cari Li(x)
    Cari P(x)

PEMROGRAMAN DAN PENGETESAN INTERPOLASI LAGRANGE

Algoritma interpolasi lagrange di atas diimplementasikan menjadi sebuah program Matlab. Listing programnya sebagai berikut:

clc;clear;
%membangun objek simbolik x
syms x;
%menginputkan banyaknya titik
b=input('Banyak titik = ');
%menginputkan masing-masing titik
for i=1:b
  fprintf('x%d',i)
  bx(i)=input(' = ');
  fprintf('y%d',i)
   by(i)=input(' = ');
end
clc;
%menampilkan titik-titik yang sudah diinputkan ke layar
disp('Titik-titik yang diketahui adalah sebagai berikut:');
for i=1:b
   fprintf('(%d,%1.1f)',bx(i),by(i));
end
%inisialisasi fx
fx=0;
fprintf('\n\n');
disp('Nilai masing-masing L(x)');

% mulai proses pencarian q(x), qx1, lx, dan px
for i=1:b
  %inisialisasi qx
  qx=1;

   %perulangan untuk mencari qx
  for j=1:b
    if (i~=j)
     qx=qx*(x-bx(j));
    end
  end
%mencari qx1 dengan substitusi x ke gx
qx1=subs(qx,x,bx(i));
%mencari lx
lx=qx/qx1;
lx1=collect(lx);

  %menampilkan lx
  fprintf('L%d(x) = ',i); 
  disp(lx1);

%mencari fx
  fx=fx+by(i)*lx;
end
%menyederhanakan fx menjadi px dan menampilkan ke layar
px=collect(fx);
fprintf('Hasilnya = ');
disp(px);

Program diatas digunakan untuk menyelesaikan dua permasalahan yang sudah dibahas diatas.
Permasalahan pertama untuk 3 titik diketahui.
Inputnya sebagai berikut :
Banyak titik = 3
x1 = 1
y1 = -1
x2 = 3
y2 = 0.5
x3 = 4
y3 = 0
Input diatas memberikan output sebagai berikut:
Titik-titik yang diketahui adalah sebagai berikut:
(1,-1.0)(3,0.5)(4,0.0)
Nilai masing-masing L(x)
L1(x) = 1/6*x^2-7/6*x+2
L2(x) = -1/2*x^2+5/2*x-2
L3(x) = 1/3*x^2-4/3*x+1
Hasilnya = -5/12*x^2+29/12*x-3
Permasalahan kedua, untuk empat titik diketahui Inputnya sebagai berikut:
Banyak titik = 4
x1 = 0
y1 = 1
x2 = 1
y2 = 2
x3 = 3
y3 = 4
x4 = 6
y4 = -1
Input diatas memberikan output sebagai berikut:
Titik-titik yang diketahui adalah sebagai berikut:
(0,1.0)(1,2.0)(3,4.0)(6,-1.0)
Nilai masing-masing L(x)
L1(x) = -1/18*x^3+5/9*x^2-3/2*x+1
L2(x) = 1/10*x^3-9/10*x^2+9/5*x
L3(x) = -1/18*x^3+7/18*x^2-1/3*x
L4(x) = 1/90*x^3-2/45*x^2+1/30*x
Hasilnya = -4/45*x^3+16/45*x^2+11/15*x+1
Output program dibandingkan dengan manual yang ada sebelumnya memberikan hasil  yang sama. Selain dengan dua contoh diatas program melalui serangkaian tes dengan menggunakan berbagai macam jenis data.
Tetapi perlu menjadi catatan bahwa program hanya digunakan untuk data real, tidak menangani data kompleks

KESIMPULAN

Diperlukan teknik tersendiri dalam mengimplementasikan interpolasi Lagrange ke dalam program. Teknik tersebut sebenarnya tidak jauh berbeda dalam mengimplementasikan algoritma lain pada umumnya yakni : pemilihan tipe data yang tepat, yakni pada saat input data dilakukan. Dengan aplikasi ini akan lebih mudah dalam mencari fungsi dari titik-titik yang diketahui untuk memprediksi nilai lainnya.

DAFTAR PUSTAKA

  • Krisnawati, IMPLEMENTASI INTERPOLASI LAGRANGE UNTUK PREDIKSI NILAI DATA BERPASANGAN DENGAN MENGGUNAKAN MATLAB, STMIK AMIKOM Yogyakarta, e-mail : krisna@amikom.ac.id
  • Gary J. Lastman & Naresh K. Sinha, 2000, Microcomputer-Based Numerical Methods for Science and Enginering.
  • MatLab 6 Help.
  • William J Palm, 2004, Introduction to MatLab 6 for Engineers, The McGraw-Hill Companies, Inc.

One thought on “Metode Numerik – Interpolasi Lagrange

  1. Mas gimana caranya kalau kita mau langsung memasukkan nilai pada x? Biar pada output langsung keluar hasil tanpa memuat variabel x lagi.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s