BAB 8
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.
8.1 Interpolasi Lagrange
Metode interpolasi Lagrange diterapkan untuk mendapatkan fungsi polinomial, P (u),
berderajat tertentu. Kurva dari fungsi polinomial harus terbukti melewati sejumlah titik
data. Misalnya, kita ingin mendapatkan fungsi polinomial yang kurvanya akan melewati
dua buah titik data yaitu (x1 , y1 ) dan (x2 , y2 ). Langkah pertama yang kita lakukan adalah
mendefinisikan fungsi polinomial P (u) sebagai berikut
P (u) = L0 (u)y1 + L1 (u)y2 (8.1)
dimana L0 (u) dan L1 (u) merupakan koefisien-koefisien Lagrange yang memenuhi
u − x2
L0 (u) = (8.2a)
x1 − x2
u − x1
L1 (u) = (8.2b)
x2 − x1
Untuk menguji apakah Persamaan (8.1) valid untuk data (x1 , y1 ) dan (x2 , y2 ), kita bisa
uji satu per satu, yaitu ketika u = x1
x1 − x2 x 1 − x1
P (x1 ) = y1 + y2 = y 1
x1 − x2 x 2 − x1
153
Kitab Komputasi untuk Geosains - Edisi 1 154
dan ketika u = x2
x2 − x2 x 2 − x1
P (x2 ) = y1 + y2 = y 2
x1 − x2 x 2 − x1
Berdasarkan hasil uji di atas, dapat disimpulkan bahwa Persamaan (8.1) valid untuk
data (x1 , y1 ) dan (x2 , y2 ).
Sekarang bagaimana jika data yang diberikan terdiri atas 3 pasang angka, misalnya
(x1 , y1 ), (x2 , y2 ) dan (x3 , y3 ). Fungsi polinomial Lagrange yang valid terhadap data ter-
sebut adalah
P (u) = L1 (u)y1 + L2 (u)y2 + L3 (u)y3 (8.3)
dimana koefisien-koefisien Lagrange didefinisikan sebagai
(u − x2 )(u − x3 )
L1 (u) = (8.4a)
(x1 − x2 )(x1 − x3 )
(u − x1 )(u − x3 )
L2 (u) = (8.4b)
(x2 − x1 )(x2 − x3 )
(u − x1 )(u − x2 )
L3 (u) = (8.4c)
(x3 − x1 )(x3 − x2 )
Bukti bahwa Persamaan (8.3) valid untuk (x1 , y1 ), (x2 , y2 ) dan (x3 , y3 ) adalah sebagai
berikut, ketika u = x1
(x1 − x2 )(x1 − x3 ) (x1 − x1 )(x1 − x3 ) (x1 − x1 )(x1 − x2 )
P (x1 ) = y1 + y2 + y3 = y1
(x1 − x2 )(x1 − x3 ) (x2 − x1 )(x2 − x3 ) (x3 − x1 )(x3 − x2 )
pada saat u = x2
(x2 − x2 )(x2 − x3 ) (x2 − x1 )(x2 − x3 ) (x2 − x1 )(x2 − x2 )
P (x2 ) = y1 + y2 + y3 = y2
(x1 − x2 )(x1 − x3 ) (x2 − x1 )(x2 − x3 ) (x3 − x1 )(x3 − x2 )
dan pada saat u = x3
(x3 − x2 )(x3 − x3 ) (x3 − x1 )(x3 − x3 ) (x3 − x1 )(x3 − x2 )
P (x3 ) = y1 + y2 + y3 = y3
(x1 − x2 )(x1 − x3 ) (x2 − x1 )(x2 − x3 ) (x3 − x1 )(x3 − x2 )
Terbukti bahwa Persamaan (8.3) valid.
Kalau kita bandingkan antara Persamaan (8.1) dan Persamaan (8.3), terlihat bahwa
derajat Persamaan (8.3) lebih tinggi dibandingkan dengan derajat Persamaan (8.1). Hal
ini terlihat dari adanya faktor u2 yang dikandung oleh Persamaan (8.3); sementara pada
Persamaan (8.1) hanya ada u saja. Berdasarkan hal ini, Persamaan (8.3) disebut fungsi
polinomial berderajat 2, sedangkan Persamaan (8.1) disebut fungsi polinomial berderajat
1.
Skrip Matlab untuk menerapkan fungsi polinomial Lagrange berderajat 2 yang sesuai
Kitab Komputasi untuk Geosains - Edisi 1 155
7 nilai prediksi
data
6
data
5
P(x)
4
data
0
0 1 2 3 4 5 6 7 8
x
Gambar 8.1 Nilai prediksi sebagai hasil dari interpolasi Lagrange berdasarkan data yang terdiri
atas 3 pasangan angka
Persamaan (8.3) adalah sebagai berikut:
1 clc; clear all; close all
2
3 x = [2 4 7.2 ];
4 y = [4 6.3 5];
5
6 plot(x,y,’sr’);
7 axis([0 8 0 8]);
8
9 u = 5;
10 % =========== Menghitung koefisien Lagrange ============
11 L(1) = (u-x(2))*(u-x(3)) / ((x(1)-x(2))*(x(1)-x(3)));
12 L(2) = (u-x(1))*(u-x(3)) / ((x(2)-x(1))*(x(2)-x(3)));
13 L(3) = (u-x(1))*(u-x(2)) / ((x(3)-x(1))*(x(3)-x(2)));
14 % =========== Menghitung interpolasi Lagrange ==========
15 P = L(1)*y(1) + L(2)*y(2) + L(3)*y(3);
16
17 hold on
18 plot(u,P,’bs’); grid on;
19 xlabel(’\fontsize{12} x’);
20 ylabel(’\fontsize{12} P(x)’);
Gambar 8.1 memperlihatkan sebaran titik data dan nilai prediksi berdasarkan skrip Matlab
di atas.
Optimasi terhadap skrip Matlab di atas menghasilkan skrip Matlab yang bisa me-
nyesuaikan jumlah pasangan titik data sekaligus membuat kurva persamaan polinomial
Lagrange. Skrip Matlab teroptimasi dimaksud adalah sebagai berikut:
Kitab Komputasi untuk Geosains - Edisi 1 156
2
P(x)
−2
−4
−6
−6 −4 −2 0 2 4 6 8
x
Gambar 8.2 Kurva interpolasi Lagrange dari skrip Matlab teroptimasi
1 clc; clear all; close all;
2
3 x = [2 7.2 -6 4 -1];
4 y = [4 6.3 5 3 0];
5 u = min(x):0.001:max(x);
6
7 plot(x,y,’sr’)
8 axis([-7 8 -6 7]);
9
10 n = length(x);
11 w = length(u);
12 for h = 1:w
13 % =========== Menghitung koefisien-koefisien Lagrange ============
14 for q = 1:n
15 M = 1; N = 1;
16 for k = 1:n
17 if k ~= q
18 M = M * (u(h)-x(k));
19 N = N * (x(q)-x(k));
20 end
21 end
22 L(q) = M/N;
23 end
24 % =========== Menghitung interpolasi Lagrange ==========
25 P = 0;
26 for k = 1:n
27 P = P + L(k)*y(k);
28 end
29 B(h) = P;
30 end
31 hold on
Kitab Komputasi untuk Geosains - Edisi 1 157
32 plot(u,B); grid on;
33 xlabel(’\fontsize{12} x’);
34 ylabel(’\fontsize{12} P(x)’);
8.2 Interpolasi Cubic Spline
Sekarang mari kita bahas konsep dari interpolasi cubic spline. Ngomong-ngomong,
kapan anda biasa mendengar kata cubic (baca: kubik)? Kata kubik sering dihubungkan
dengan satuan volume, misalnya meter-kubik (m3 ) atau centimeter-kubik (cm3 ). Kubik
itu sendiri artinya adalah pangkat 3. Bandingkan dengan kata persegi yang berhubungan
dengan satuan luas, misalnya meter-persegi (m2 ) atau kilometer-persegi (km2 ). Dalam
konteks pembahasan interpolasi cubic spline, kita akan menggunakan pendekatan poli-
nomial pangkat 3 atau berderajat 3 untuk menghubungkan sejumlah titik dalam suatu
koordinat.
Apa bedanya dengan Lagrange? Disini kita akan menciptakan segmen-segmen ku-
rva polinomial berderajat 3 diantara titik-titik yang sudah diketahui. Itulah penjelasan
dari kata spline yang merupakan singkatan dari separation line. Ok, mari kita masuki
pembahasan ini lebih dalam lagi..
Gambar (8.3) memperlihatkan sebaran dari sejumlah titik yang masing-masing me-
miliki pasangan koordinat (x, y). Pertanyaannya adalah bagaimanakah cara cubic spline
menciptakan suatu kurva yang bisa menghubungkan semua titik tersebut? Atau pertanya-
an yang lebih tepat adalah bagaimanakah cara cubic spline menciptakan fungsi polinomial
yang bisa menghubungkan semua titik tersebut? Agar nantinya fungsi polinomial itu da-
pat digunakan untuk memperkirakan titik-titik yang belum terlihat pada Gambar (8.3)
sehingga kita akan dapatkan kurvanya seperti Gambar (8.4)
Gambar 8.3 Sejumlah titik terdistribusi pada koordinat kartesian. Masing-masing titik memiliki
pasangan koordinat (x, y)
Kitab Komputasi untuk Geosains - Edisi 1 158
Gambar 8.4 Kurva interpolasi cubic spline yang menghubungkan semua titik
Gambar 8.5 Sejumlah polinomial cubic yaitu S0 , S1 , S2 ... dan seterusnya yang saling sambung-
menyambung sehingga mampu menghubungkan seluruh titik
Untuk bisa menghasilkan kurva seperti yang tampak pada Gambar (8.4), interpolasi
cubic spline menciptakan sejumlah fungsi polinomial S(x) yang merupakan potongan
fungsi polinomial kecil-kecil (Gambar 8.5) berderajat tiga (cubic ) yang saling sambung-
menyambung untuk menghubungkan dua titik yang bersebelahan
Agar tujuan interpolasi cubic spline dapat tercapai, diperlukan sejumlah ketentuan-
ketentuan sebagai berikut:
1. Sj (x) adalah potongan fungsi yang berada pada sub-interval dari xj hingga xj+1
untuk nilai j = 0, 1, ..., n − 1;
2. S(xj ) = f (xj ), artinya pada setiap titik data (xj ), nilai f (xj ) bersesuaian dengan
S(xj ) dimana j = 0, 1, ..., n;
3. Sj+1 (xj+1 ) = Sj (xj+1 ). Perhatikan titik xj+1 pada Gambar (8.5). Ya.. tentu saja
jika fungsi itu kontinyu, maka titik xj+1 menjadi titik sambungan antara Sj dan
Kitab Komputasi untuk Geosains - Edisi 1 159
Sj+1 .
4. Sj+1
′
(xj+1 ) = Sj′ (xj+1 ), artinya kontinyuitas menuntut turunan pertama dari Sj dan
Sj+1 pada titik xj+1 harus bersesuaian.
5. Sj+1
′′
(xj+1 ) = Sj′′ (xj+1 ), artinya kontinyuitas menuntut turunan kedua dari Sj dan
Sj+1 pada titik xj+1 harus bersesuaian juga.
6. Salah satu syarat batas diantara 2 syarat batas x0 dan xn berikut ini mesti terpenuhi:
• S ′′ (x0 ) = S ′′ (xn ) = 0 ini disebut natural boundary
• S ′ (x0 ) = f ′ (x0 ) dan S ′ (xn ) = f ′ (xn ) ini disebut clamped boundary
Suatu potongan fungsi polinomial cubic spline Sj (x) dinyatakan oleh
Sj (x) = aj + bj (x − xj ) + cj (x − xj )2 + dj (x − xj )3 (8.5)
dimana j = 0, 1, ..., n − 1. Maka ketika x = xj
Sj (xj ) = aj + bj (xj − xj ) + cj (xj − xj )2 + dj (xj − xj )3
Sj (xj ) = aj = f (xj )
Itu artinya, aj selalu jadi pasangan titik data dari xj . Dengan pola ini maka pasangan titik
data xj+1 adalah aj+1 , konsekuensinya S(xj+1 ) = aj+1 . Berdasarkan ketentuan (3), yaitu
ketika x = xj+1 dimasukan ke persamaan (8.5)
aj+1 = Sj+1 (xj+1 ) = Sj (xj+1 ) = aj + bj (xj+1 − xj ) + cj (xj+1 − xj )2 + dj (xj+1 − xj )3
dimana j = 0, 1, ..., n − 2. Sekarang, kita nyatakan hj = xj+1 − xj , sehingga
aj+1 = aj + bj hj + cj h2j + dj h3j (8.6)
Kemudian, turunan pertama dari persamaan (8.5) adalah
Sj′ (x) = bj + 2cj (x − xj ) + 3dj (x − xj )2
ketika x = xj ,
Sj′ (xj ) = bj + 2cj (xj − xj ) + 3dj (xj − xj )2 = bj
dan ketika x = xj+1 ,
bj+1 = Sj′ (xj+1 ) = bj + 2cj (xj+1 − xj ) + 3dj (xj+1 − xj )2
Kitab Komputasi untuk Geosains - Edisi 1 160
Ini dapat dinyatakan sebagai
bj+1 = bj + 2cj (xj+1 − xj ) + 3dj (xj+1 − xj )2
dan dinyatakan dalam hj
bj+1 = bj + 2cj hj + 3dj h2j (8.7)
Berikutnya, kita hitung turunan kedua dari persamaan (8.5)
Sj′′ (x) = 2cj + 6dj (x − xj ) (8.8)
tapi dengan ketentuan tambahan yaitu S ′′ (x)/2, sehingga persamaan ini dimodifikasi
menjadi
Sj′′ (x) = cj + 3dj (x − xj )
dengan cara yang sama, ketika x = xj
Sj′′ (xj ) = cj + 3dj (xj − xj ) = cj
dan ketika x = xj+1
cj+1 = Sj′′ (xj+1 ) = cj + 3dj (xj+1 − xj )
cj+1 = cj + 3dj hj (8.9)
dan dj bisa dinyatakan
1
dj = (cj+1 − cj ) (8.10)
3hj
dari sini, persamaan (8.6) dapat ditulis kembali
aj+1 = aj + bj hj + cj h2j + dj h3j
h2j
= aj + bj hj + cj h2j + (cj+1 − cj )
3
h2j
= aj + b j h j + (2cj + cj+1 ) (8.11)
3
sementara persamaan (8.7) menjadi
bj+1 = bj + 2cj hj + 3dj h2j
= bj + 2cj hj + hj (cj+1 − cj )
= bj + hj (cj + cj+1 ) (8.12)
Kitab Komputasi untuk Geosains - Edisi 1 161
Sampai sini masih bisa diikuti, bukan? Selanjutnya, kita coba mendapatkan bj dari persa-
maan (8.11)
1 hj
bj = (aj+1 − aj ) − (2cj + cj+1 ) (8.13)
hj 3
dan untuk bj−1
1 hj−1
bj−1 = (aj − aj−1 ) − (2cj−1 + cj ) (8.14)
hj−1 3
Langkah berikutnya adalah mensubtitusikan persamaan (8.13) dan persamaan (8.14) ke-
dalam persamaan (8.12),
3 3
hj−1 cj−1 + 2(hj−1 + hj )cj + hj cj+1 = (aj+1 − aj ) − (aj − aj−1 ) (8.15)
hj hj−1
dimana j = 1, 2, ..., n − 1. Dalam sistem persamaan ini, nilai {hj }n−1 n
j=0 dan nilai {aj }j=0
sudah diketahui, sementara nilai {cj }nj=0 belum diketahui dan memang nilai inilah yang
akan dihitung dari persamaan ini.
Sekarang coba perhatikan ketentuan nomor (6), ketika S ′′ (x0 ) = S ′′ (xn ) = 0, berapakah
nilai c0 dan cn ? Nah, kita bisa evaluasi persamaan (8.8)
S ′′ (x0 ) = 2c0 + 6d0 (x0 − x0 ) = 0
jelas sekali c0 harus berharga nol. Demikian halnya dengan cn harganya harus nol. Jadi
untuk natural boundary, nilai c0 = cn = 0.
Persamaan (8.15) dapat dihitung dengan operasi matrik Hc = d dimana
1 0 0 ... ... ... 0
h0 2(h0 + h1 ) h1 0 ... ... 0
0 h1 2(h1 + h2 ) h2 0 ... 0
H=
. . . ... ... ... ... ... ...
. . . ... ... . . . hn−2 2(hn−2 + hn−1 ) hn−1
0 ... ... ... 0 0 1
c0
c1
c=
..
.
cn
Kitab Komputasi untuk Geosains - Edisi 1 162
0
3 3
h1
(a2 − a1 ) −
h 0
(a 1 − a 0 )
..
d=
.
3 (a − a ) − 3 (a − a )
hn−1 n n−1 hn−2 n−1 n−2
0
Sekarang kita beralih ke clamped boundary dimana S ′ (a) = f ′ (a) dan S ′ (b) = f ′ (b).
Nah, kita bisa evaluasi persamaan (8.13) dengan j = 0, dimana f ′ (a) = S ′ (a) =
S ′ (x0 ) = b0 , sehingga
1 h0
f ′ (a) = (a1 − a0 ) − (2c0 + c1 )
h0 3
konsekuensinya,
3
2h0 c0 + h0 c1 = (a1 − a0 ) − 3f ′ (a) (8.16)
h0
Sementara pada xn = bn dengan persamaan (8.12)
f ′ (b) = bn = bn−1 + hn−1 (cn−1 + cn )
sedangkan bn−1 bisa didapat dari persamaan (8.14) dengan j = n − 1
1 hn−1
bn−1 = (an − an−1 ) − (2cn−1 j + cn )
hn−1 3
Jadi
1 hn−1
f ′ (b) = (an − an−1 ) − (2cn−1 j + cn ) + hn−1 (cn−1 + cn )
hn−1 3
1 hn−1
= (an − an−1 + (cn−1 j + 2cn )
hn−1 3
dan akhirnya kita peroleh
3
hn−1 cn−1 + 2hn−1 Cn = 3f ′ (b) − (an − an−1 ) (8.17)
hn−1
Persamaan (8.16) dan persamaan (8.17) ditambah persamaan (8.15 membentuk operasi
Kitab Komputasi untuk Geosains - Edisi 1 163
matrik Ax = b dimana
2h0 h0 0 ... ... ... 0
h0 2(h0 + h1 ) h1 0 ... ... 0
0 h1 2(h1 + h2 ) h2 0 ... 0
A=
... ... ... ... ... ... ...
... ... ... . . . hn−2 2(hn−2 + hn−1 ) hn−1
0 ... ... ... 0 hn−1 2hn−1
c0
c1
x=
..
.
cn
3
h0
(a1− a0 ) − 3f ′ (a)
3
(a2 − a1 ) − h30 (a1 − a0 )
h1
..
b=
.
3 (a − a ) − 3 (a − a )
hn−1 n n−1 hn−2 n−1 n−2
3
3f ′ (b) − hn−1 (an − an−1 )
1 % ==============================================================
2 % PROGRAM - Interpolasi Cubic Spline
3 % diaplikasikan pada punggung burung
4 % dibuat oleh Supriyanto, 17 Desember 2012
5 % ==============================================================
6
7 clc
8 close
9 clear
10
11 data = load(’[Link]’);
12 x = data(:,1);
13 y = data(:,2);
14
15 plot(x,y,’sr’);
16
17 n = length(x);
18 for k = 1:n-1
19 h(k) = x(k+1) - x(k);
20 end
21
22 H = zeros(n);
23 H(1,1) = 1;
24 H(n,n) = 1;
25
26 a = y;
27 r(1,1) = 0;
28 for k = 2:n-1
29 H(k,k) = 2*(h(k-1)+h(k));
Kitab Komputasi untuk Geosains - Edisi 1 164
Gambar 8.6 Profil suatu object
30 H(k,k-1) = h(k-1);
31 H(k,k+1) = h(k);
32 r(k,1) = 3/h(k)*(a(k+1)-a(k)) - 3/h(k-1)*(a(k)-a(k-1));
33 end
34 r(n,1) = 0;
35
36 c = inv(H)*r;
37
38 for k = 1:n-1
39 b(k,1) = 1/h(k)*(a(k+1)-a(k)) - h(k)/3*(2*c(k)+c(k+1));
40 d(k,1) = 1/(3*h(k))*(c(k+1)-c(k));
41 end
42
43 hold on
44
45 for k = 2:n
46 xx = x(k-1):0.01:x(k);
47 S = a(k-1)+b(k-1)*(xx-x(k-1))+c(k-1)*(xx-x(k-1)).^2+d(k-1)*(xx-x(k-1)).^3;
48 plot(xx,S);
49 end
Kitab Komputasi untuk Geosains - Edisi 1 165
Gambar 8.7 Sampling titik data
2.5
1.5
0.5
0
0 2 4 6 8 10 12 14
Gambar 8.8 Hasil interpolasi cubic spline
Kitab Komputasi untuk Geosains - Edisi 1 166
j xj aj bj cj dj
0 0,9 1,3 0,54 0,00 -0,25
1 1,3 1,5 0,42 -0,30 0,95
2 1,9 1,85 1,09 1,41 -2,96
3 2,1 2,1 1,29 -0,37 -0,45
4 2,6 2,6 0,59 -1,04 0,45
5 3,0 2,7 -0,02 -0,50 0,17
6 3,9 2,4 -0,5 -0,03 0,08
7 4,4 2,15 -0,48 0,08 1,31
8 4,7 2,05 -0,07 1,27 -1,58
9 5,0 2,1 0,26 -0,16 0,04
10 6,0 2,25 0,08 -0,03 0,00
11 7,0 2,3 0,01 -0,04 -0,02
12 8,0 2,25 -0,14 -0,11 0,02
13 9,2 1,95 -0,34 -0,05 -0,01
14 10,5 1,4 -0,53 -0,1 -0,02
15 11,3 0,9 -0,73 -0,15 1,21
16 11,6 0,7 -0,49 0,94 -0,84
17 12,0 0,6 -0,14 -0,06 0,04
18 12,6 0,5 -0,18 0 -0,45
19 13,0 0,4 -0,39 -0,54 0,60
20 13,3 0,25
−1
−2
0 2 4 6 8 10 12 14
Gambar 8.9 Hasil interpolasi lagrange