Interpolasi Neville
Interpolasi Neville

Interpolasi Neville

INTERPOLASI NEVILLE

Pada artikel ini, kita akan belajar Interpolasi Neville. oh iya, untuk lebih jelasnya, anda harus merefresh materi tentang interpolasi Lagrange pada video ini:

 

Interpolasi Neville didasarkan pada Polimonial Lagrange yang kemudian dikomputasi secara rekursif sehingga menghasilkan tabel yang bentuknya sebagai berikut:

x           y

------------------------------------------------------------------------------------------------------------

X0             P0=Q0,0

X1             P1=Q1,0            P0,1=Q1,1

X2             P2=Q2,0            P1,2=Q2,1            P0,1,2=Q2,2           

X3             P3=Q3,0            P2,3=Q3,1            P1,2,3=Q3,2             P0,1,2,3=Q3,3

X            P4=Q4,0            P3,4=Q4,1            P2,3,4=Q4,2             P1,2,3,4=Q4,3             P0,1,2,3,4=Q4,4

------------------------------------------------------------------------------------------------------------------------------------------------------

 Misalkan Qi,j(x) untuk 0 < j < i merupakan polimonial derajat j pada (j+1) titik, yaitu xi-j   xi-j+1    xi-j+2  ...  xi-1   xi, maka:

Qi,j(x) = Pi-j, i-j+1, ...,i=1,i

Sehingga,

Q1,1(x) = [(x-x0)Q1,0 - (x-x1)Q0,0] / (x1-x0)

Q2,1(x) = [(x-x1)Q2,0 - (x-x2)Q1,0] / (x2-x1)

Q3,1(x) = [(x-x2)Q3,0 - (x-x3)Q2,0] / (x3-x2)

...

Q2,2(x) = [(x-x0)Q2,1 - (x-x2)Q1,1] / (x2-x0)

Q3,2(x) = [(x-x1)Q3,1 - (x-x2)Q2,1] / (x3-x1)

...

dan seterusnya. Nilai interpolasi pada titix x adalah P(x) = Qn,n.

 

ALGORITMA NEVILLE

input : pasangan data (x,y) dimana kolom pertama adalah x, kolom kedua adalah y

output : tabel Neville, dimana P(x) = Qn,n

1. Masukkan pasangan data (xi,yi)

2. Masukkan titik interpolasi x

3. Lakukan perulangan untuk i = 1,2 ... n

     a. Lakukan perulangan untuk j = 1, 2 ... i

         i) hitung Q(i,j)=(x-x(i-j))*Q(i,j-1)-(x-x(i))*Q(i-1,j-1);

         ii) Q(i,j) = Q(i,j) / (x(i) - x(i-j));

4. Tampilkan tabel Q

5. Selesai

Program MATLAB INTERPOLASI NEVILLE

clear;

help Neville;

n = input('Derajat n  :  ');

x = zeros (n+1,1);

y = zeros (n+1,1);

Q = zeros (n+1, n+1);

disp('Masukkan data:   ');

for i=1:n+1

     fprintf('data ke  %3d\n',i-1);

     x(i) = input('x  :   ');

     y(i) = input('x  :   ');

     Q(i,1) = y(i);

end

lagi = 1;

while (lagi == 1)

        xk = input('Masukkan titik interpolasi  :  ');

        for  1=2:(n+1)

              for  j = 2:1

                     Q(i,j) = (xk-x(i-j+1))*Q(i,j-1) - (xk-x(i))*Q(i-1,j-1);

                     Q(i,j) = Q(i,j) / (x(i) - x(i-j+1));

             end

       end

       for i = 1:n+1

             for j = 1:n+1

                   fprint('%12.8f          ',Q(i,j));

             end

             fprint('\n');

             end

             fprint('Hasil interpolasi y=%12.8f pada x=%8.4f\n', Q(n+1, n+1),xk);

             lagi = input('Lanjut Interpolasi? ya = 1, tidak = 0   :   ');

end