1
1
1
1
1
2
3
1
(30)
Dengan mensubtitusikan nilai-nilai ini ke dalam persamaan (28), kita akan memperoleh persamaan
berikut ini yang menjadi inti dari metoda ini, yaitu
( ) | | | |
1
1
1 1 1 1 1
3 3
2
+ +
= + + +
i i
i
i i
i
i i i i i i i
r r
h
p p
h
r h r h h r h (31)
Persamaan (31) ini berlaku untuk i = 1, 2, , n 1. Sekarang, kalau kita memasukkan semua indeks
yang berlaku untuk persamaan ini, maka kita akan mendapatkan suatu sistem persamaan linear yang
mengikuti
Tx = d (32)
Dengan A, adalah matriks
( )
( )
( )
(
(
(
(
(
(
(
(
(
+
+
+
=
1 0 0 0
2
0
2 0
0 0 2
0 0 0 1
1 1
3 3 2 2
2 2 1 1
n n n n
h h h h
h h h h
h h h h
T (33)
dan vektor solusi adalah
x = [r
1
r
2
r
n+1
]
T
(34)
Sedangkan vektor d dihitung dari persamaan berikut ini.
( ) ( )
( ) ( )
( ) ( )
( ) ( )
(
(
(
(
(
(
(
(
(
(
(
(
(
(
0
3 3
3 3
.
.
3 3
3 3
0
1
1
1
2 1
2
1
1
2 3
2
3 4
3
1 2
1
2 3
2
n n
n
n n
n
n n
n
n n
n
p p
h
p p
h
p p
h
p p
h
p p
h
p p
h
p p
h
p p
h
d (35)
Dengan menggunakan algoritma Thomas yang sudah dibahas dalam Bab 3, kita dapat menhitung
vektor jawaban, yaitu persamaan (34) berdasarkan persamaan-persamaan (33) dan (35).
Perlu kita catat di sini bahwa nilai h
i
untuk i = 1, 2, , n, dihitung dengan menggunakan persamaan
(17). Sedangkan p
i
untuk i = 1, 2, , n + 1 dihitung dari persamaan (21) dan nilai-nilai q
i
untuk
semua i = 1, 2, , n dengan menggunakan persamaan (29). Nilai-nilai s
k
untuk i = 1, 2, , n,
dihitung berdasarkan persamaan (26) yang telah disusun kembali menjadi
i
i i
i
h
r r
s
3
1
=
+
(36)
Dari pembahasan yang kita lakukan di atas kita dapat menyusun algoritama yang terdiri dari lima
bagian utama. Pertama, menghitung h
i
dengan menggunakan persamaan (17) dan p
i
dengan
menggunakan persamaan (21). Kedua, menghitung elemen-elemen dari matriks tridiagonal; ketiga,
menghitung vektor d, keempat menyelesaikan sistem persamaan linear dengan algoritma Thomas
untuk menghitung vektor x = [r
1
r
2
r
n+1
]
T
. Kelima, menghitung q
i
dengan persamaan (29) dan s
i
dengan persamaan (36).
Algoritma 7. Spline Kubik
Step 1. Set i = 1
Step 2. Hitung h
i
= t
i+1
- t
i
Hitung p
i
= f(t
i
)
Output(h
i
, p
i
)
Step 3. Apakah i = N?
Jika tidak, naikkan counter i satu point, yaitu i = i + 1 dan kembali ke Step 2.
Jika ya, Set a
1
= 1; a
n+1
= 1; b
1
= 0; b
n+1
= 0; c
1
= 0; c
n
= 0; Set i =2 lanjutkan ke Step 4.
Step 4. Hitung a
i
= 2(h
i
h
i-1
); b
i
= h
i-1
; c
i
= h
i
;
Step 5. Apakah i = n?
Jika tidak, naikkan counter i satu point, yaitu i = i + 1 dan kembali ke Step 4.
Jika ya, Set d
1
= 0 dan d
n+1
= 0; Set i = 2, Lanjutkan ke Step 6.
Step 6. Hitung ( ) ( )
1
1
1
3 3
+
=
i i
i
i i
i
i
p p
h
p p
h
d
Step 7. Apakah i = n?
Jika tidak, naikkan counter i satu point, yaitu i = i + 1 dan kembali ke Step 6.
Jika ya, lanjutkan ke Step 8.
Step 8. Panggil algoritma Thomas untuk menghitung vektor x masukkan harga ini ke dalam vektor
[r
1
r
2
r
n+1
]
T
= x. Set i = 1 dan lanjut ke Step 9.
Step 9. Hitung | | | |
1 1
2
3
1
+ +
+ =
i i
i
i i
i
i
r r
h
p p
h
q ; Hitung
i
i i
i
h
r r
s
3
1
=
+
OUTPUT(p
i
, q
i
, r
i
, s
i
)
Step 10. Apakah i = n?
Jika tidak, naikkan counter i satu point, yaitu i = i + 1 dan kembali ke Step 9.
Jika ya, Proses komputasi selesai. STOP
Berdasarkan Algoritma ini kita bisa menyusun file script yang diberi nama kubikspline.m dengan
listing program script Matlab seperti yang ditunjukkan berikut ini.
Clamped Cubic Spline. Jenis spline ini adalah problema spline dengan kondisi batas g(t
1
) dan
g(t
n+1
) = 0 dan dapat diperoleh dari teorema berikut ini.
Teorema. Jika suatu fungsi f yang didefinisikan pada [a, b] mempunyai interpolan spline yang
memenuhi syarat konidisi batas yang terklem (clamped boundary conditions), yaitu g(a) = f(a) dan
g(b) = f(b).
Bukti. Dapat dilihat dengan menggunakan fakta bahwa dari persamaan (20) dengan i = 1
mengimplikasikan bahwa
( ) ( )
2 1
1
1
1 2
2
3
' r r
h
h
p p
a f +
= (37)
Dan ini mengisyaratkan bahwa
( ) ( ) a f p p
h
r h r h ' 3
3
2
1 2
1
2 1 1 1
= + (38)
Dengan cara yang sama
( ) ( )
1 1
'
+ +
+ + = =
n n n n n
r r h q q b f (39)
Dengan demikian, persamaan (29) dengan indeks i = n memberikan implikasi
( ) ( ) ( )
( )
1
1
1 1
1
2
3
2
3
'
+
+
+ +
+
+
=
+ + +
=
n n
n
n
n n
n n n n n
n
n
n n
r r
h
h
p p
r r h r r
h
h
p p
b f
(40)
Dan
( ) ( )
n n
n
n n n n
p p
h
b f r h r h = +
+ + 1 1
3
' 3 2 (41)
Kemudian, persamaan (30) bersama-sama dengan persamaan-persamaan
( ) ( ) a f p p
h
r h r h ' 3
3
2
1 2
1
2 1 1 1
= + (42)
dan persamaan (41) akan memberikan sistem linear seperti yang dinyatakan oleh persamaan (32),
yaitu Tx = d, dengan
( )
( )
( )
(
(
(
(
(
(
(
(
(
+
+
+
=
n n
n n n n
h h
h h h h
h h h h
h h h h
h h
2 0 0
2
0
2 0
0 0 2
0 0 2
1 1
3 3 2 2
2 2 1 1
1 1
T (43)
dan vektor solusi seperti yang dinyatakan oleh persamaan (34), yaitu x = [r
1
r
2
r
n+1
]
T
.
Sedangkan vektor d dihitung dari persamaan berikut ini.
( ) ( )
( ) ( )
( ) ( )
( ) ( )
( ) ( )
( ) ( )
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
(
=
+
n n
n
n n
n
n n
n
n n
n
n n
n
p p
h
b f
p p
h
p p
h
p p
h
p p
h
p p
h
p p
h
p p
h
p p
h
a f p p
h
1
1
1
1
2 1
2
1
1
2 3
2
3 4
3
1 2
1
2 3
2
1 2
1
3
' 3
3 3
3 3
.
.
3 3
3 3
' 3
3
d (44)
Dari pembahasan yang kita lakukan di atas kita dapat menyusun algoritama yang terdiri dari lima
bagian utama. Pertama, menghitung h
i
dengan menggunakan persamaan (17) dan p
i
dengan
menggunakan persamaan (21). Kedua, menghitung elemen-elemen dari matriks tridiagonal; ketiga,
menghitung vektor d, keempat menyelesaikan sistem persamaan linear dengan algoritma Thomas
untuk menghitung vektor x = [r
1
r
2
r
n+1
]
T
. Kelima, menghitung q
i
dengan persamaan (29) dan s
i
dengan persamaan (36).
Algoritma 8. Spline Kubik yang ujung-ujungnya diklem (clamped cubic spline)
Step 1. Set i = 1
Step 2. Hitung h
i
= t
i+1
- t
i
Hitung p
i
= f(t
i
)
Output(h
i
, p
i
)
Step 3. Apakah i = N?
Jika tidak, naikkan counter i satu point, yaitu i = i + 1 dan kembali ke Step 2.
Jika ya, Set a
1
= h
1
; a
n+1
= h
n
; b
1
= h
1
; b
n+1
= h
n
; c
1
= h
1
; c
n
= h
n
; Set i =2 lanjutkan ke Step 4.
Step 4. Hitung a
i
= 2(h
i
h
i-1
); b
i
= h
i-1
; c
i
= h
i
;
Step 5. Apakah i = n?
Jika tidak, naikkan counter i satu point, yaitu i = i + 1 dan kembali ke Step 4.
Jika ya, Set ( ) ( ) a f p p
h
d ' 3
3
1 2
1
1
= dan ( ) ( )
n n
n
n
p p
h
a f d =
+ + 1 1
3
' 3 ; Set i = 2,lanjut ke
Step 6.
Step 6. Hitung ( ) ( )
1
1
1
3 3
+
=
i i
i
i i
i
i
p p
h
p p
h
d
Step 7. Apakah i = n?
Jika tidak, naikkan counter i satu point, yaitu i = i + 1 dan kembali ke Step 6.
Jika ya, lanjutkan ke Step 8.
Step 8. Panggil algoritma untuk menghitung vektor x = [r
1
r
2
r
n+1
]
T
. Set i = 1 lanjut ke Step 9.
Step 9. Hitung | | | |
1 1
2
3
1
+ +
+ =
i i
i
i i
i
i
r r
h
p p
h
q ; Hitung
i
i i
i
h
r r
s
3
1
=
+
OUTPUT(p
i
, q
i
, r
i
, s
i
)
Step 10. Apakah i = n?
Jika tidak, naikkan counter i satu point, yaitu i = i + 1 dan kembali ke Step 9.
Jika ya, Proses komputasi selesai. STOP
Berdasarkan Algoritma ini kita bisa menyusun file script yang diberi nama clampedcubicspline.m
dengan listing program script MATLAB seperti yang ditunjukkan berikut ini.