8
Interpolasi Newton 6 Votes Seperti pada tulisan sebelumnya yang membahas masalah Interpolasi Lagrange, dimana interpolasi secara umum digunakan untuk mengkonstruksi suatu fungsi dari himpunan titik yang diberikan atau yang telah diketahui. Pada tulisan ini akan dibahas interpolasi yang kedua yaitu Interpolasi Newton. Misal diberikan dua pasangan titik yaitu (x0, f(x0)) dan (x1, f(x1)) dengan x0 x1. Maka dengan menggunakan persamaan garis (P1(x)) yang telah diturunkan pada Interpolasi Lagrange dengan 2 titik, diperoleh P1(x) = y0 + y1 = y0 + y1 = y0 + y0 + y1 = y0 + y0 + y1 = y0 + (x – x0) P1(x) = a0 + a1(x – x0) dengan a1 = atau a1 = dan bentuk ini dinamakan bentuk selisih terbagi (divided differences) dan dapat ditulis a1 = f[x1, x0] Kemudian Interpolasi Newton untuk 3 titik yaitu (x0, f(x0)), (x1, f(x1)) dan (x1, f(x1)) dengan x0 x1 x2 atau menggunakan polinom derajat 2 diperoleh P2(x) = a0 + a1(x – x0) + a2(x – x0)(x – x1)

Interpolasi Newton

Embed Size (px)

DESCRIPTION

kjhg

Citation preview

Interpolasi Newton6 Votes

Seperti pada tulisan sebelumnya yang membahas masalahInterpolasi Lagrange, dimana interpolasi secara umum digunakan untuk mengkonstruksi suatu fungsi dari himpunan titik yang diberikan atau yang telah diketahui. Pada tulisan ini akan dibahas interpolasi yang kedua yaituInterpolasi Newton.

Misal diberikan dua pasangan titik yaitu (x0, f(x0)) dan (x1, f(x1)) dengan x0x1. Maka dengan menggunakan persamaan garis (P1(x)) yang telah diturunkan pada Interpolasi Lagrange dengan 2 titik, diperoleh

P1(x) =y0+y1

=y0+y1

=y0+y0+y1

=y0+ y0+y1

= y0+(x x0)

P1(x) = a0+ a1(x x0)

dengan a1=atau a1=dan bentuk ini dinamakan bentuk selisih terbagi (divided differences) dan dapat ditulis a1= f[x1, x0]

KemudianInterpolasi Newtonuntuk 3 titik yaitu (x0, f(x0)), (x1, f(x1)) dan (x1, f(x1)) dengan x0x1x2atau menggunakan polinom derajat 2 diperoleh

P2(x) = a0+ a1(x x0) + a2(x x0)(x x1)

Substitusi titik-titik (x0, f(x0)), (x1, f(x1)) dan (x2, f(x2)) ke P2(x)

f(x0) = a0+ a1(x0 x0) + a2(x0 x0)(x0 x1)

f(x0) = a0+ a1(0) + a2(0)(0)

a0= f(x0)

= f[x0]

f(x1) = a0+ a1(x1 x0) + a2(x1 x0)(x1 x1)

f(x1) = f(x0) + a1(x1 x0) + a2(x1 x0)(0)

a1=

=

= f[x0, x1]

f(x2) = a0+ a1(x2 x0) + a2(x2 x0)(x2 x1)

f(x2) = f(x0) +(x2 x0) + a2(x2 x0)(x2 x1)

a2(x2 x0)(x2 x1) = f(x2) f(x0) + f(x1) f(x1) (x2 x0)

=(x2 x1) +(x1 x0) (x2 x0)

=(x2 x1) +

=(x2 x1) (x2 x1)

a2(x2 x0) =

a2=

=

Jadi tahap pembentukan rumus Interpolasi Newton adalah sebagai berikut

P1(x) = a0+ a1(x x0)

P2(x) = a0+ a1(x x0) + a2(x x0)(x x1)

P3(x) = a0+ a1(x x0) + a2(x x0)(x x1) + a3(x x0)(x x1)(x x2)

.

.

.

Pn(x) = a0+ a1(x x0) + + an(x x0)(x x1)(x xn-1)(x xn)

dengan selisih terbaginya masing-masing

a0= f[x0] = f(x0) = y0

a1= f[x0, x1] ==

a2= f[x0, x1, x2] =

a3= f[x0, x1, x2, x3] =

.

.

.

an= f[x0,, x3] =

Contoh :

Konstruksikan fungsi f(x) = cos x dari titik-titik x0= 0.2, x1= 0.3 dan x2= 0.4 menggunakanInterpolasi Newton

Penyelesaian :

a0= f[x0] = f(0.2) = cos (0.2) = 0.98

a1= f[x0, x1] =

=

= -0.247

f[x1, x2] =

=

= -0.332

a2= f[x0, x1, x2] =

=

= -0.425

P2(x) = a0+ a1(x x0) + a2(x x0)(x x1)

= 0.98 0.247(x 0.2) 0.425(x 0.2)(x 0.3)

= 0.98 0.247x + 0.0494 0.425x2+ 0.2125x 0.0255

= 1.0039 0.0345x 0.425x2

Analisis dan Metode NumerikMenjelaskan algoritma dan struktur data yang digunakan untuk menentukan nilai interpolasi newton pada formula interpolasi beda terbagi newton.1. Struktur Data Interpolasi NewtonAlgoritma diambil dari referensi pemrograman dengan bahasa Fortran seperti terlihat pada lampiran halaman 6-7.1. Deklarasi Variabel1. Mendefinisikan nilai dari titik-titik yang diketahui yaituxbertipe array real2. Mendefinisikan nilai fungsi dari x yaknif(x)yang bertipe array real3. Mendefinisikan nilai koofisien interpolasi yaituayang bertipe array real.4. Mendefinisikan jumlah titik yang di input dalamnbertipe integer5. Mendefinisikanxcari, yang digunakan untuk mencari nilai fungsi bertipe real6. Mendefinisikan nilaipatau nilai interpolasi f(x) bertipe real1. Algoritma dari polinomial newton :1. Menginput banyaknya titik yang diberikan yakni n2. Menginput dan membaca nilai titik xcari3. Menginput dan membaca nilai x sebanyak n dalam array 1 dimensi4. Menginput dan membaca nilai f(x) sebanyak n dalam array 1 dimensi5. Membuat tabel selisih terbagi dengan mendefinisikan 2 buah variabel yakni i dan j yang di iterasi sebanyak n kali, dimana :1. Koofisien a ke a(1) adalah f(1)2. Variabel i akan di iterasi mulai dari 2 sampai n3. Variabel j akan di iterasi mulai dari n=1 sampai (n+1-i) untuk menghitung nilai F(1) sampai F(n+1-i), dengan rumus sebagai berikut :F(j):= (f(j+1) f(j) / x(j+1-1) x(j)1. Nilai F(j) yang dimasukan dalam variabel a(i)2. Hasil perhitungan koefisien interpolasi(a1-an) akan digunakan untuk menghitung nilai fungsi Pn(x)=a0+a1(x-x1)+a2(x-x1)(x-x2)++an(x-x1)(x-x2)(x-xn) dengan algoritma sebagai berikut :1. Mendefinisikan variabel temp untuk menampung hasil perhitungan sementara2. Nilai awal p diisi dengan a(1)3. Iterasi dilakukan dari i = 2 sampai n dengan nilai temp=a(i)4. Lakukan iterasi didalamnya dari j=2 sampai i untuk mendapatkan nilai temp baru yakni a1*(x-x1), a2*(x-x1)(x-x2), dan seterusnya yang didefinisikan temp := temp * temp (xdicari x(j-i))5. Update nilai p dari i=2 sampai n dimana p:=p + temp3. Setelah iterasi berakhir nilai p adalah nilai fungsi dari x yang dicari4. Mencetak nilai P sebagai hasil dari interpolasi terbagi newton2. Algoritma diatas diambil dari referensi program fortran yang dimodifikasi ke program pascal sebagai berikut :program interpolasi_newton;uses crt;var x:array[0..10] of real; y:array[0..10] of real; a:array[0..10] of real; i,j,k,n:integer; p,temp,x_dicari:real;begin write('Masukkan jumlah titik='); readln(n); write('masukkan nilai X yang dicari='); readln(x_dicari); for i:=1 to n do begin write('masukkan nilai titik x',i,':' );readln(x[i]); write('masukkan nilai fungsi F(x',i,'): '); readln(y[i]); end; for i:=2 to n do begin for j:=1 to n+1-i do begin y[j]:=(y[j+1]-y[j]) / (x[j+i-1]-x[j]); if j=1 then begin a[i]:=y[j]; end; writeln('Nilai beda terbagi ke ',i-1,' untuk baris ke ',j,'= ',y[j]:8:6); end; end; p:=a[1]; for i:=2 to n do begin temp:=a[i]; for j:=2 to i do begin temp:=temp*(x_dicari-x[j-1]); end; p:=p+temp; end; writeln('nilai Px = ',p:2:4);readln;end.Output dari Program diatas sbb :Contoh data diambil dari lampiran halaman 6 contoh 4.6