Anda di halaman 1dari 23

LAPORAN PRAKTIKUM

KOMPUTASI GEOFISIKA
TG 2204

MODUL KE – 03
INTERPOLASI

Oleh:
Muhammad Ichsan - 12117143

Asisten :
1. Putu Pradnya Andika (12115017)
2. Diana Rizky Yuliza (12115024)
3. Felik Destian Putra Amijaya (12116007)
4. M. Fadel Hotman (12116062)
5. Sadrak Siregar (12116085)
6. Kris Hamonangan Parulian David (12116133)
7. Nugroho Prasetyo (12116155)
8. Prana Al Makhya (12116160)

PROGRAM STUDI TEKNIK GEOFISIKA


JURUSAN TEKNOLOGI PRODUKSI DAN INDUSTRI
INSTITUT TEKNOLOGI SUMATERA
2019
I. TUJUAN PRAKTIKUM
Adapun tujuan praktikum pada modul Interpolasi ini adalah :
Kita mampu menyelesaikan permasalahan Interpolasi menggunakan metode
Lagrange, Newton Divide Difference dan Newton – Gregory Forward.

II. DASAR TEORI

2.1. Interpolasi Lagrange

Interpolasi polinomial digunakan untuk mencari titik – titik antara dari n buah titik

𝑃1(𝑥1, 𝑦1), 𝑃2(𝑥2, 𝑦2), 𝑃3(𝑥3, 𝑦3), … , 𝑃𝑛(𝑥𝑛, 𝑦𝑛) dengan menggunakan pendekatan
polinomial :

Persamaan ini dapat diatur kembali sedemikian rupa sehingga menjadi


atau dapat dinyatakan dalam bentuk

Yang dalam hal ini

Dan

Bentuk umum polinom Lagrange berderajat ≤ n untuk (n+1) titik berbeda adalah

Yang dalam hal ini

2.2. Interpolasi Newton Divide Difference

Formula interpolasi metode Newton Divided Difference dijabarkan dalam


persamaan berikut :
2.3. Interpolasi Newton – Gregory Forward

Interpolasi polinom Newton – Gregory merupakan metode interpolasi dengan


kasus khusus, dimana selisih jarak antar data harus berjarak sama. Sehingga,
dikarenakan selisih jarak yang sama maka rumus polinom Newton Divide

dimana,
Persamaan ini dinamakan sebagai polinom Newton – Gregory maju.
Jika titik – titik berjarak sama dinyatakan sebagai : 𝑥𝑖 = 𝑥𝑜 + 𝑖ℎ , 𝑖 = 0, 1, 2, … ,
𝑛

Dan nilai x yang diinterpolasikan adalah 𝑥 = 𝑥𝑜 + 𝑠ℎ, 𝑠 ∈ 𝑅

Maka, persamaan di atas dapat juga ditulis dalam parameter s sebagai berikut :

Yang menghasilkan bentuk peramaan :

III. LANGKAH KERJA


Soal Nomor 1
Screenshot hasil run dari program metode Lagrange, Newton Divide
Difference dan Newton – Greogry Forward! Jelaskan perbedaan pada
program tersebut?
Langkah-langkah yang harus dilakukan yaitu sebagai berikut :

1. Buka aplikasi PyCharm Community Edition 2017.3.3 sebagai teks editor


pemrograman bahasa python.

2. Pada folder project kita, klik File → New → Python Project.


3. Beri nama file python sesuai persoalan yang akan dikerjakan

4. Untuk metode Lagrange maka tuliskan kode sebagai berikut :


#Metode Lagrange

n = int(input('Masukkan Jumlah Data Yang Akan Diinput :'))


x = []
#Input Data X
for i in range(n):
data = float(input('Masukkan Data X ke-%d :' %i))
x.append(data)

#Input Data Y
y = []
for i in range(n):
Y = float(input('Masukkan Data Y ke-%d :' %i))
y.append(Y)

print('Data Input :')


print('Data X :',x)
print('Data Y :',y)
d=1
k=0
t=1
while(d==1):
find = float(input('Masukkan Nilai X Yang Akan Dicari:'))
for i in range (n):
s=1
t=1
for j in range(n):
if(j !=i):
s = s*(find-x[j])
t = t*(x[i]-x[j])
print(s,t)
k = k+((s/t)*y[i])
print('Maka Nilai y(x) : %f' %k)
k=0

Kemudian compile dan run kode tersebut. Jika tidak ada kesalahan ketik,
maka outputnya berupa tampilan nilai y(x) sebagai berikut :

5. Untuk metode Newton Divide Difference maka tuliskan kode sebagai


berikut :
#Metode : Newton Divide Difference

#Function to find the product term


def proterm(i, value, x):
pro = 1
for j in range(i):
pro = pro*(value-x[j])
return pro;

#Function for calculating


#Divide difference table
def dividedDiffTable(x,y,n):
for i in range(1,n):
for j in range(n-i):
y[j][i] = ((y[j][i-1]-y[j+1][i-1])/(x[j]-x[i+j]));
return y

#divided difference formula


def applyFormula(value,x,y,n):
sum = y[0][0]
for i in range(1,n):
sum = sum+(proterm(i,value,x)*y[0][i])
return sum

#difference table
def printDiffTable(y,n):
for i in range(n):
for j in range(n-i):
print(round(y[i][j],4), '\t', end = '')
print('')

#Number of inputs given


n = int(input('Masukkan Jumlah Data :'))
x = []
y = [[0 for i in range(n)]
for j in range(n)]

#Input Data X
for i in range(n):
dataX = float(input('data x ke-%d :' %i))
x.append(dataX)
for i in range(n):
y[i][0] = float(input('data y ke-%d :' %i))

value = float(input('Masukkan Nilai X Yang Ingin Dicari :'))

print('___________________________________________')
print('x(i) \t y(i) \t y1(i) \t y2(i) \t y3(i)')
print('___________________________________________')

#Calculating Divided Difference Table


y = dividedDiffTable(x,y,n)

#Displaying Divided Difference Table


printDiffTable(y,n)

#Printing the value


print('\n Nilai X :', value, 'Adalah :', round(applyFormula(value,x,y,n),2))

Kemudian compile dan run kode tersebut. Jika tidak ada kesalahan ketik,
maka outputnya berupa tampilan nilai X sebagai berikut :

6. Untuk metode Newton Divide Difference maka tuliskan kode sebagai


berikut :
#Metode : Newton - Gregory Forward

#Caluculating u mentioned in the formula


def u_call(u,n):
temp = u
for i in range(1,n):
temp = temp*(u-i)
return temp

#Calculating factorial of given number n


def fact(n):
f=1
for i in range(2, n+1):
f *= i
return f

n = int(input('Masukkan Jumlah Data :'))


x = []

#Input Data X
for i in range(n):
dataX = float(input('data x ke-%d :' %i))
x.append(dataX)

#Input Data Y
y = [[0 for i in range(n)]
for j in range(n)]
for i in range(n):
y[i][0] = float(input('data y ke-%d :' %i))

print('Data Input \n _____________________')


print('X : ',x)
print('Y : ',y)

value = float(input('Masukkan Nilai X Yang Ingin Dicari :'))

#Calculating the forward difference

for i in range(1,n):
for j in range(n-1):
y[j][i] = y[j+1][i-1]-y[j][i-1]
print('_________________________________')
print('x(i) \t y(i) \t y1(i) \t y2(i) \t y3(i) \t y4(i)')
print('_________________________________')
for i in range(n):
print(x[i], end="\t")
for j in range(n-i):
print(y[i][j], end="\t")
print("")

#Initializing u and sum


sum = y[0][0]
u = (value-x[0])/(x[1]-x[0])
for i in range(1,n):
sum = sum+(u_call(u,i)*y[0][i])/fact(i)

print('\n Nilai X: ', value, 'Adalah :', round(sum, 6))

Kemudian compile dan run kode tersebut. Jika tidak ada kesalahan ketik,
maka outputnya berupa tampilan nilai X sebagai berikut :
Soal Nomor 2
Buatlah program Newton – Gregory Backward dan bandingkan hasil dengan
metode lainnya?
Adapun langkah-langkah yang dilakukan sebagai berikut :

1. Tuliskan kode sebagai berikut :


#Metode : Newton - Gregory backward

#Caluculating u mentioned in the formula


def u_call(u,n):
temp = u
for i in range(1,n):
temp = temp*(u+i)
return temp

#Calculating factorial of given number n


def fact(n):
f=1
for i in range(2, n+1):
f *= i
return f

n = int(input('Masukkan Jumlah Data :'))


x = []

#Input Data X
for i in range(n):
dataX = float(input('data x ke-%d :' %i))
x.append(dataX)

#Input Data Y
y = [[0 for i in range(n)]
for j in range(n)]
for i in range(n):
y[i][0] = float(input('data y ke-%d :' %i))

print('Data Input \n _____________________')


print('X : ',x)
print('Y : ',y)

value = float(input('Masukkan Nilai X Yang Ingin Dicari :'))


#Calculating the backward difference

for i in range(1,n):
for j in range(n):
y[j][i] = y[j][i-1]-y[j-1][i-1]

print('_________________________________')
print('x(i) \t y(i) \t y1(i) \t y2(i) \t y3(i) \t y4(i)')
print('_________________________________')
for i in range(n):
print(x[i], end="\t")
for j in range(n-i):
print(y[i][j], end="\t")
print("")

#Initializing u and sum


sum = y[n-1][0]
u = (value-x[n-1])/(x[1]-x[0])
for i in range(1,n):
sum = sum+(u_call(u,i)*y[n-1][i])/fact(i)

print('\n Nilai X: ', value, 'Adalah :', round(sum, 6))

Kemudian compile dan run kode tersebut. Jika tidak ada kesalahan ketik,
maka outputnya berupa tampilan nilai X sebagai berikut :
IV. HASIL

4.1. Metode Lagrange


4.2. Metode Newton Divide Difference
4.3. Metode Newton Gregory Forward
4.4. Metode Newton Gregory Backward
V. ANALISIS
Pada praktikum kali ini membahas tentang Interpolasi. Interpolasi adalah teknik
mencari harga suatu fungsi pada suatu titik diantara dua titik yang nilai fungsi
pada kedua titik tersebut sudah diketahui. Untuk mencari interpolasi sendiri ada
beberapa metode, yaitu : Interpolasi Lagrange, Interpolasi Newton Divide
Difference, Interpolasi Newton – Gregory Forward, dan Interpolasi Newton-
Gregory Backward.
Interpolasi Lagrange adalah interpolasi polinomial yang digunakan untuk
mencari titik-titik antara dari n buah titik dengan menggunakan pendekatan
polinomial.
Interpolasi Newton – Gregory Forward adalah metode interpolasi dengan kasus
khusus, dimana selisih jarak antar data harus berjarak sama, sehingga
dikarenakan selisih jarak yang sama maka rumus polinom Newton Divide
Difference menjadi lebih sederhana.
Hasil nilai x yang dicari saat menggunakan Interpolasi Divided Difference,
Interpolasi Newton Gregory Forward dan Interpolasi Gregory Bacward
menghasilkan nilai x yang sama. Saat kita memasukkan x = [10,11,12] dan y =
[20,22,24] dan nilai x yang akan dicari adalah 10.5 pada semua metode
menghasilkan nilai x yaitu 21.

VI. KESIMPULAN

Adapun kesimpulan pada praktikum Interpolasi ini yaitu:

1. Interpolasi adalah teknik mencari harga suatu fungsi pada suatu titik diantara
dua titik yang nilai fungsi pada kedua titik tersebut sudah diketahui.

2. Dalam melakukan interpolasi terdapat empat metode yang dapat digunakan,


diantaranya : Interpolasi Lagrange, Interpolasi Newton Divide Difference,
Interpolasi Newton – Gregory Forward, dan Interpolasi Newton- Gregory
Backward
3. Saat dilakukan percobaan untuk mencari nilai x, Interpolasi Metode Lagrange,
Interpolasi Newton Divide Difference, Interpolasi Newton – Gregory Forward
dan Interpolasi Newton – Gregory Backward menghasilkan nilai x yang sama
yaitu 20.

VII. DAFTAR PUSTAKA


[1] Dahrin, Darharta, dkk. 2007. Modul Praktikum Komputasi ITB. ITB:
Bandung.
[2] Abdullah, Agus, dkk. 2007. Modul Praktikum Komputasi Universitas
Pertamina. UP: Bandung
[3] Sandy. 2017. Tutorial Pemrograman Python 2 Untuk Pemula. Bandung: ITB

Anda mungkin juga menyukai