Interpolasi
Objektif :
⊲ Mengenalkan Interpolasi Lagrange
⊲ Mengenalkan Interpolasi Spline-cubic
Interpolasi adalah upaya untuk memprediksi suatu nilai berdasarkan data tertentu, di-
mana nilai prediksi berada dalam rentang data tersebut. Jika nilai prediksi berada di luar
rentang data yang ada, ini disebut ekstrapolasi. Nilai prediksi dapat diperoleh dari suatu
persamaan matematika atau yang dikenal dengan fungsi polinomial. Bab ini akan memba-
has bagaimana cara mendapatkan fungsi polinomial untuk keperluan interpolasi melalui
metode interpolasi Lagrange dan interpolasi Spline-cubic.
u − x1
L0 (u) = (8.2a)
x0 − x1
u − x0
L1 (u) = (8.2b)
x1 − x0
Untuk menguji apakah Persamaan (8.1) valid untuk data (x0 , y0 ) dan (x1 , y1 ), kita bisa
uji satu per satu, yaitu ketika u = x0
x0 − x1 x 0 − x0
P (x0 ) = y0 + y1 = y 0
x0 − x1 x 1 − x0
162
Kitab Komputasi untuk Geosains - Edisi 1 - Dr. Eng. Supriyanto, M.Sc 163
dan ketika u = x1
x1 − x1 x 1 − x0
P (x1 ) = y0 + y1 = y 1
x0 − x1 x 1 − x0
Berdasarkan hasil uji di atas, dapat disimpulkan bahwa Persamaan (8.1) valid untuk data
(x0 , y0 ) dan (x1 , y1 ).
Sekarang bagaimana jika data yang diberikan terdiri atas 3 pasang angka, misalnya
(x0 , y0 ), (x1 , y1 ) dan (x2 , y2 ). Fungsi polinomial Lagrange yang valid terhadap data ter-
sebut adalah
P (u) = L0 (u)y0 + L1 (u)y1 + L2 (u)y2 (8.3)
(u − x1 )(u − x2 )
L0 (u) = (8.4a)
(x0 − x1 )(x0 − x2 )
(u − x0 )(u − x2 )
L1 (u) = (8.4b)
(x1 − x0 )(x1 − x2 )
(u − x0 )(u − x1 )
L2 (u) = (8.4c)
(x2 − x0 )(x2 − x1 )
Bukti bahwa Persamaan (8.3) valid untuk (x0 , y0 ), (x1 , y1 ) dan (x2 , y2 ) adalah sebagai
berikut, ketika u = x0
pada saat u = x1
yang sesuai Persamaan (8.3) untuk 3 pasang nilai yang sudah diketahui, yaitu (2;4),
(4;6,3), dan (7,2;5). Polinomial Lagrange ditugaskan untuk memprediksi nilai pasang-
an dari angka 5.
1 import numpy as np
2 import matplotlib.pyplot as plt
3
4 #-----Menginputkan 3 pasangan nilai---------------------------------
5 x = np.array([2, 4, 7.2]) #pasangan nilai x dan y
6 y = np.array([4, 6.3, 5]) #yang sudah diketahui
7
8 #=====Metode Interpolasi Lagrange (derajat 2)=======================
9 u = 5 #berapa angka pasangan dari 5?
10 #-----Menghitung koefisien Lagrange---------------------------------
11 L = np.zeros(3)
12 L[0] = (u-x[1])*(u-x[2]) / ((x[0]-x[1])*(x[0]-x[2]))
13 L[1] = (u-x[0])*(u-x[2]) / ((x[1]-x[0])*(x[1]-x[2]))
14 L[2] = (u-x[0])*(u-x[1]) / ((x[2]-x[0])*(x[2]-x[1]))
15 #-----Menghitung interpolasi Lagrange-------------------------------
16 P = L[0]*y[0] + L[1]*y[1] + L[2]*y[2]; #inilah angka pasangan dari 5
17 #===================================================================
18
19 #-----Memplot seluruh pasangan angka--------------------------------
20 plt.plot(x,y,’or’) # memplot semua titik x,y
21 plt.plot(u,P,’sb’) # memplot titik u,P
22 plt.grid() # membuat grid
23 plt.title("Interpolasi Lagrange") # membuat judul grafik
24 plt.xlabel("nilai x") # membuat label sumbu x
25 plt.ylabel("P(x)") # membuat label sumbu y
26 plt.axhline(y=0, color=’#000000’) #menegaskan garis sumbu-x
27 plt.axvline(x=0, color=’#000000’) #menegaskan garis sumbu-y
28 plt.show() # menampilkan grafik
Gambar 8.1 memperlihatkan sebaran 3 titik data dan nilai prediksi berdasarkan script
Python di atas.
Optimasi terhadap script Python di atas menghasilkan script Python yang bisa me-
nyesuaikan jumlah pasangan titik data sekaligus, kemudian dilanjutkan dengan membuat
kurva persamaan polinomial Lagrange. script Python teroptimasi dimaksud adalah seba-
gai berikut:
1 import numpy as np
2 import matplotlib.pyplot as plt
3
4 x = np.array([2, 4, 7.2])
5 y = np.array([4, 6.3, 5])
6 n = np.size(x)
7
8 u = np.linspace(np.min(x), np.max(x), 50)
9 m = np.size(u)
10
11 P = np.zeros(m)
12 L = np.zeros(n)
Kitab Komputasi untuk Geosains - Edisi 1 - Dr. Eng. Supriyanto, M.Sc 165
Interpolasi Lagrange
4
P(x)
0 1 2 3 4 5 6 7
nilai x
Gambar 8.1 Nilai prediksi (titik biru) sebagai hasil dari interpolasi Lagrange berdasarkan data
yang terdiri atas 3 pasangan angka (titik merah)
4
P(x)
0
0 1 2 3 4 5 6 7
nilai x
Gambar 8.2 Kurva biru adalah kurva interpolasi Lagrange (dari script Python teroptimasi) berda-
sarkan 3 pasangan angka (titik merah)
Kitab Komputasi untuk Geosains - Edisi 1 - Dr. Eng. Supriyanto, M.Sc 166
13 for j in range(m):
14 for q in range(n):
15 M = 1
16 N = 1
17 for k in range(n):
18 if q != k:
19 M = M * (u[j]-x[k])
20 N = N * (x[q]-x[k])
21 L[q] = M/N
22 for i in range(n):
23 P[j] = P[j] + L[i]*y[i]
24
25 plt.plot(u,P,’-b’) # memplot kurva interpolasi Lagrange
26 plt.plot(x,y,’or’) # memplot titik x,y pada grafik
27 plt.grid() # membuat garis-garis pada grafik
28 plt.title("Kurva interpolasi Lagrange") # membuat judul grafik
29 plt.xlabel("nilai x") # membuat label sumbu x
30 plt.ylabel("P(x)") # membuat label sumbu y
31 plt.axhline(y=0, color=’#000000’) #menegaskan garis sumbu-x
32 plt.axvline(x=0, color=’#000000’) #menegaskan garis sumbu-y
33 plt.show() # menampilkan grafik