Interpolasi Cubic Spline Dr. Eng. Supriyanto, M.Sc Lab. Komputer, Departemen Fisika, Universitas Indonesia email: supri@fisika.ui.ac.id atau supri92@gmail.com December 13, 2006 Figure 1: Fungsi f(x) dengan sejumlah titik data Diketahui suatu fungsi f(x) (Figure 1) yang dibatasi oleh interval a dan b, dan memiliki sejumlah titik data a = x 0 < x 1 <... < x n = b. Interpolasi cubic spline S(x) adalah sebuah potongan fungsi polinomial kecil-kecil (Figure 2) berderajat tiga (cubic) yang menghubungkan dua titik data yang bersebelahan dengan ketentuan sebagai berikut: 1. S j (x) adalah potongan fungsi yang berada pada sub-interval dari x j hingga x j+1 untuk nilai j = 0, 1,...,n 1; 2. S(x j ) = f(x j ), artinya pada setiap titik data (x j ), nilai f(x j ) bersesuaian dengan S(x j ) dimana j = 0, 1,...,n; 1
Figure 2: Pendekatan dengan polinomial cubic spline 3. S j+1 (x j+1 ) = S j (x j+1 ). Perhatikan titik x j+1 pada Figure 2. Ya.. tentu saja jika fungsi itu kontinyu, maka titik x j+1 menjadi titik sambungan antara S j dan S j+1. 4. S j+1(x j+1 ) = S j(x j+1 ), artinya kontinyuitas menuntut turunan pertama dari S j dan S j+1 pada titik x j+1 harus bersesuaian. 5. S j+1(x j+1 ) = S j (x j+1 ), artinya kontinyuitas menuntut turunan kedua dari S j dan S j+1 pada titik x j+1 harus bersesuaian juga. 6. Salah satu syarat batas diantara 2 syarat batas x 0 dan x n berikut ini mesti terpenuhi: S (x 0 ) = S (x n ) = 0 ini disebut natural boundary S (x 0 ) = f (x 0 ) dan S (x n ) = f (x n ) ini disebut clamped boundary Polinomial cubic spline S (polinomial pangkat 3) untuk suatu fungsi f berdasarkan ketentuan di atas adalah S j (x) = a j + b j (x x j ) + c j (x x j ) 2 + d j (x x j ) 3 (1) dimana j = 0, 1,...,n 1. Maka ketika x = x j S j (x j ) = a j + b j (x j x j ) + c j (x j x j ) 2 + d j (x j x j ) 3 S j (x j ) = a j = f(x j ) Itu artinya, a j selalu jadi pasangan titik data dari x j. Dengan pola ini maka pasangan titik data x j+1 adalah a j+1, konsekuensinya S(x j+1 ) = a j+1. Berdasarkan ketentuan (3), yaitu ketika 2
x = x j+1 dimasukan ke persamaan (1) a j+1 = S j+1 (x j+1 ) = S j (x j+1 ) = a j + b j (x j+1 x j ) + c j (x j+1 x j ) 2 + d j (x j+1 x j ) 3 dimana j = 0, 1,...,n 2. Sekarang, kita nyatakan h j = x j+1 x j, sehingga a j+1 = a j + b j h j + c j h 2 j + d j h 3 j (2) Kemudian, turunan pertama dari persamaan (1) adalah S j(x) = b j + 2c j (x x j ) + 3d j (x x j ) 2 ketika x = x j, S j(x j ) = b j + 2c j (x j x j ) + 3d j (x j x j ) 2 = b j dan ketika x = x j+1, b j+1 = S j(x j+1 ) = b j + 2c j (x j+1 x j ) + 3d j (x j+1 x j ) 2 Ini dapat dinyatakan sebagai b j+1 = b j + 2c j (x j+1 x j ) + 3d j (x j+1 x j ) 2 dan dinyatakan dalam h j b j+1 = b j + 2c j h j + 3d j h 2 j (3) Berikutnya, kita hitung turunan kedua dari persamaan (1) S j (x) = 2c j + 6d j (x x j ) (4) tapi dengan ketentuan tambahan yaitu S (x)/2, sehingga persamaan ini dimodifikasi menjadi S j (x) = c j + 3d j (x x j ) dengan cara yang sama, ketika x = x j S j (x j ) = c j + 3d j (x j x j ) = c j dan ketika x = x j+1 c j+1 = S j (x j+1 ) = c j + 3d j (x j+1 x j ) c j+1 = c j + 3d j h j (5) 3
dan d j bisa dinyatakan dari sini, persamaan (2) dapat ditulis kembali d j = 1 3h j (c j+1 c j ) a j+1 = a j + b j h j + c j h 2 j + d j h 3 j sementara persamaan (3) menjadi = a j + b j h j + c j h 2 j + h2 j 3 (c j+1 c j ) = a j + b j h j + h2 j 3 (2c j + c j+1 ) (6) b j+1 = b j + 2c j h j + 3d j h 2 j = b j + 2c j h j + h j (c j+1 c j ) = b j + h j (c j + c j+1 ) (7) Sampai sini masih bisa diikuti, bukan? Selanjutnya, kita coba mendapatkan b j dari persamaan (6) b j = 1 h j (a j+1 a j ) h j 3 (2c j + c j+1 ) (8) dan untuk b j 1 b j 1 = 1 h j 1 (a j a j 1 ) h j 1 3 (2c j 1 + c j ) (9) Langkah berikutnya adalah mensubtitusikan persamaan (8) dan persamaan (9) kedalam persamaan (7), h j 1 c j 1 + 2(h j 1 + h j )c j + h j c j+1 = 3 h j (a j+1 a j ) 3 h j 1 (a j a j 1 ) (10) dimana j = 1, 2,...,n 1. Dalam sistem persamaan ini, nilai {h j } n 1 j=0 dan nilai {a j} n j=0 sudah diketahui, sementara nilai {c j } n j=0 belum diketahui dan memang nilai inilah yang akan dihitung dari persamaan ini. Sekarang coba perhatikan ketentuan nomor (6), ketika S (x 0 ) = S (x n ) = 0, berapakah nilai c 0 dan c n? Nah, kita bisa evaluasi persamaan (4) S (x 0 ) = 2c 0 + 6d 0 (x 0 x 0 ) = 0 jelas sekali c 0 harus berharga nol. Demikian halnya dengan c n harganya harus nol. Jadi untuk natural boundary, nilai c 0 = c n = 0. 4
Persamaan (10) dapat dihitung dengan operasi matrik Ax = b dimana 1 0 0......... 0 h 0 2(h 0 + h 1 ) h 1 0...... 0 A = 0 h 1 2(h 1 + h 2 ) h 2 0... 0................................. h n 2 2(h n 2 + h n 1 ) h n 1 0......... 0 0 1 c 0 c 1 x =. 0 3 h 1 (a 2 a 1 ) 3 h 0 (a 1 a 0 ) b =. 3 h n 1 (a n a n 1 ) 3 h n 2 (a n 1 a 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) dengan j = 0, dimana f (a) = S (a) = S (x 0 ) = b 0, sehingga c n konsekuensinya, f (a) = 1 h 0 (a 1 a 0 ) h 0 3 (2c 0 + c 1 ) 2h 0 c 0 + h 0 c 1 = 3 h 0 (a 1 a 0 ) 3f (a) (11) Sementara pada x n = b n dengan persamaan (7) f (b) = b n = b n 1 + h n 1 (c n 1 + c n ) sedangkan b n 1 bisa didapat dari persamaan (9) dengan j = n 1 Jadi f (b) = = b n 1 = 1 h n 1 (a n a n 1 ) h n 1 3 (2c n 1j + c n ) 1 (a n a n 1 ) h n 1 h n 1 3 (2c n 1j + c n ) + h n 1 (c n 1 + c n ) 1 (a n a n 1 + h n 1 h n 1 3 (c n 1j + 2c n ) 5
dan akhirnya kita peroleh h n 1 c n 1 + 2h n 1 C n = 3f (b) 3 h n 1 (a n a n 1 ) (12) Persamaan (11) dan persamaan (12) ditambah persamaan (10 membentuk operasi matrik Ax = b dimana 2h 0 h 0 0......... 0 h 0 2(h 0 + h 1 ) h 1 0...... 0 A = 0 h 1 2(h 1 + h 2 ) h 2 0... 0................................. h n 2 2(h n 2 + h n 1 ) h n 1 0......... 0 h n 1 2h n 1 c 0 c 1 x =. 3 h 0 (a 1 a 0 ) 3f (a) 3 h 1 (a 2 a 1 ) 3 h 0 (a 1 a 0 ) b =. 3 h n 1 (a n a n 1 ) 3 h n 2 (a n 1 a n 2 ) 3f (b) 3 h n 1 (a n a n 1 ) c n 6
Figure 3: Profil suatu object Figure 4: Sampling titik data 7
Figure 5: Hasil interpolasi cubic spline 8
Figure 6: Hasil interpolasi lagrange 9
j x j a j b j c j d j 0 0,9 1,3 5,4 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 10