NIM :19301244017
Kelas :Pendidikan Matematika C 2019
Interpolasi
Secara umum, interpolasi adalah suatu metode atau proses menyusun suatu fungsi atau persamaan
dengan menggunakan beberapa titik yang diketahui atau beberapa contoh titik untuk memprediksi atau
estimasi nilai pada titik lain yang belum diketahui nilainya.
Misalnya terdapat beberapa titik (x1, y1), (x2, y2), (x3, y3), dan seterusnya. Dari titik-titik tersebut akan
dibentuk suatu fungsi atau persamaan f(x) sehingga untuk nilai x yang lain dapat diprediksi/estimasi
nilai dari y.
Interpolasi merupakan teknik untuk mencari nilai suatu variabel yang hilang pada rentang data yang
diketahui.
Interpolasi merupakan teknik mencari harga suatu fungsi pada suatu titik di antara 2 titik yang nilai
fungsi pada ke-2 titik tersebut sudah diketahui.
Diberikan n titik:
Masalah: untuk menentukan fungsi f, sehingga kurva y=f(x) melalui (interpolasi) n titik.
Masalah interpolasi: untuk menghitung nilai f(x) untuk
min(x1 ) ≤ x ≤ max(x1 )
Untuk setiap himpunan n titik dengan absis yang berbeda, terdapat polinomial dengan derajat maksimum
(n-1). Memperkirakan polinomial yang menginterpolasi n titik yang diberikan
adalah
Nilai dari a 0,a 1,a 2,. . . ,a {n-1} dapat diperoleh dengan menyelesaikan SLE. SLE dapat direpresen-
tasikan dalam persamaan matriks: Va=y dengan
x1 ̸= x2 ̸= x3 ̸= ... ̸= xn
Karena V itu nantinya akan membentuk matriks non singular dan nilai determinannya tidak sama dengan
nol
Matriks V disebut matriks Vandermonde.
Contoh:
Tentukan polinomial interpolasi titik (0,-5), (1,-3), (-1,-15), (2,39), (-2,-9).
Jawab:
1 0 0 0 0
1 1 1 1 1
1 -1 1 -1 1
1 2 4 8 16
1 -2 4 -8 16
-5
4
-7
2
3
>V.a
-5
-3
-15
39
-9
>t=-2:0.1:2;
>u=a[1]+a[2]*t+a[3]*t^2+a[4]*t^3+a[5]*t^4; // menggambar kurva y=P(x)
>aspect(25,15); plot2d(t,u, grid=5); plot2d(x,y, >points, style="o", >add):
Berikut adalah program EMT untuk menghitung koefisien-koefisien polinomial interpolasi dan menggam-
bar polinomial interpolasinya.
n=length(x);
V=zeros(n,n);
for k=1:n
V[:,k]=x^(k-1);
end
a=V\y;
t0=min(x’);
tn=max(x’);
t=t0:0.1:tn;
u=a[1];
for k=2:n;
u=u+a[k]*t^(k-1);
end
plot2d(t,u, grid=5); plot2d(x,y, >points, style="o", >add);
return a;
endfunction
Soal
Tentukan polinomial yang menginterpolasikan titik-titik (0,1), (1,1), (2,2) dan (4,5). Lakukan pengecekan
polinomial yang diperoleh dengan menggunakan titik-titik tersebut. Gambar kurva polinomial bersama
titik-titik tersebut!
>x=[0;1;2;4]; y=[1;1;2;5];
>a=polint(x,y):
>fraction a
1
-2/3
3/4
-1/12
Pertanyaan:
Jika urutan titik (data) diubah, apakah polinomik interpolasi akan berubah? Mengapa?
Jawab:
>x=[4;1;0;2]; y=[5;1;1;2];
>a=polint(x,y):
>fraction a
1
-2/3
3/4
-1/12
Jadi, jika urutan titik (data) diubah, polinomik interpolasi tidak berubah karena pasangan titik tidak
berubah
Latihan Soal
Tentukan polinomial yang menginterpolasikan titik-titik dibawah ini. Lakukan pengecekan polinomial
yang diperoleh dengan menggunakan titik
(0.1, 0.6204), (0.2, -0.2839), (0.3, 0.0066), (0.4, 0.2484) tersebut.
>x=[0.1;0.2;0.3;0.4]; y=[0.6204;-0.2839;0.0066;0.2484];
>a=polint(x,y):
>fraction a
3963/1000
-3981/80
18409/100
-829/4
Interpolasi adalah proses pencarian dan perhitungan nilai suatu fungsi yang grafiknya melewati sekumpu-
lan titik yang diberikan. Titik-titik tersebut mungkin merupakan hasil eksperimen dalam sebuah per-
cobaa, atau diperoleh dari sebuah fungsi yang diketahui, salah satunya yang sering dipakai yaitu fungsi
polinomial.
Interpolasi polinomial merupakan teknik interpolasi dengan mengasumsikan pola data yang kita miliki
mengikuti pola polinomial baik berderajat satu (linier) maupun berderajat tinggi. Interpolasi dengan
metode ini dilakukan dengan terlebih dahulu membentuk persamaan polinomial. Persamaan polino-
mial yang terbentuk selanjutnya digunakan untuk melakukan interpolasi dari nilai yang diketahui atau
ekstrapolasi (prediksi) dari nilai diluar rentang data yang diketahui.
Dua alasan penting pemakaian polinomial interpolasi:
1. Polinomial interpolasi digunakan untuk menghitung hampiran nilai suatu fungsi f (x), karena nilai
polinomial mudah dihitung, polinomial mudah diturunkan dan diintegralkan.
2. Polinomial digunakan dalam penentuan kurva mulus yang melalui sekumpulan data titik, biasanya
diinginkan sebuah kurva yang tidak osilatif. Penyelesaiannya mengarah ke fungsi-fungsi spline. Poli-
nomial Newton dan Metode Selisih terbagi Newton
Polinomial Newton adalah polinomial interpolasi untuk sekumpulan titik data tertentu. Polinomial New-
ton kadang-kadang disebut polinomial interpolasi perbedaan terbagi Newton karena koefisien polinomial
dihitung menggunakan metode perbedaan terbagi Newton.
Diberikan satu set k + 1 titik data
di mana tidak ada dua xj yang sama, polinomial interpolasi Newton adalah kombinasi linier dari polino-
mial basis Newton
k
X k
X
N (x) := aj nj (x)N (x) := aj nj (x)
j=0 j=0
j−1
Y j−1
Y
nj (x) := (x − xi )nj (x) := (x − xi )f orj > 0andn0 (x) ≡ 1n0 (x) ≡ 1.
i=0 i=0
[y0 , . . . , yj ][y0 , . . . , yj ]
N (x) = [y0 ] + [y0 , y1 ](x − x0 ) + · · · + [y0 , . . . , yk ](x − x0 )(x − x1 ) · · · (x − xk−1 ).N (x) = [y0 ]+[y0 , y1 ](x−x0 )+· · ·+[y0 , . . . ,
D(i + 1, j − 1) − D(i, j − 1)
D(i, j) = untuk j = 2, 2, 3, ...., n dan i = 1, 2, ..., (n − j + 1)
xi+j−1 − xi
Nilai dari
a0 , a1 , a2 , ..., an−1
y1 = P (x1 ) ⇒ a0 = y1
y2 − y1
y2 = P (x2 ) ⇒ a1 =
x2 − x1
−y1
y3 − y1 − ( xy22 −x )(x3 − x1 ) ( y3 −y2 ) − ( xy22 −y
−x1 )
1
y3 = P (x3 ) ⇒ a2 = 1
= x3 −x2
(x3 − x1 )(x3 − x2 ) x3 − x1
...
dengan
Pertanyaan:
Dengan menggunakan titik-titik yang diberikan dalam contoh sebelumnya, tentukan interpolasi polino-
mial Newton, dan kemudian sederhanakan ke dalam bentuk polinomial standar. Mendapatkan apa?
Jawaban:
I. Urutan titik yang diketahui: (0,1), (1,1), (2,2), (4,5)
II. Urutan titik yang diketahui: (4, 5), (1,1), (0,1), (2,2)
4 1 1
P (x) = 5 + (x − 4) + (x − 4)(x − 1) − (x − 4)(x − 1)x
3 3 12
2 3 2 1 3
=1− x+ x − x
3 4 12
Ini adalah fakta bahwa interpolasi polinomial Newton ketika disederhanakan akan menjadi polinomial
standar sebagai hasil dari SLE yang sesuai. Juga, perhatikan bahwa urutan (x (k,) y k) tidak akan
mengubah polinomial yang diperoleh.
x0 , x1 , . . . , xk x0 , x1 , . . . , xk
h = xi+1 − xi h = xi+1 −xi f oreachi = 0, 1, . . . , k − 1i = 0, 1, . . . , k−1andx = x0 + shx = x0 +sh, thedif f erencex − xi x−x
N (x) = [y0 ] + [y0 , y1 ]sh + · · · + [y0 , . . . , yk ]s(s − 1) · · · (s − k + 1)hk N (x) = [y0 ] + [y0 , y1 ]sh + · · · + [y0 , . . . , yk ]s(s − 1) · · ·
k
X k
X
= s(s − 1) · · · (s − i + 1)hi [y0 , . . . , yi ] = s(s − 1) · · · (s − i + 1)hi [y0 , . . . , yi ]
i=0 i=0
k k
X s X s
= i!hi [y0 , . . . , yi ]. = i!hi [y0 , . . . , yi ].
i=0
i i=0
i
Untuk mendapatkan koefisien polinomial Newton kita dapat menggunakan metode selisih terbagi Newton:
a0 = D(1, 1), a1 = D(2, 1), a2 = D(3, 1), ..., an−1 = D(n, 1).
f (x2 ) − f (x1 )
f ′ (c) = = f [x1 , x2 ].
x2 − x − 1
2. Jika diberikan (n+1) titik berlainan, (x k,y k) dengan y k=f(x k) untuk k=1,2,...,(n+1) terhadap
simpul x 1,x 2,...,x n+1 dinyatakan sebagai
n+1
X yk
f [x1 , x2 , ..., xn+1 ] = Qn+1
k=1 j=1j̸=k (xk − xj
4. Apabila polinomial f(x) berderajat n, dika diketahui m <= n, maka fungsi yang dapat didefinisakan
sebagai berikut
Contoh:
Diberikan poin (0, 1), (1,1), (2,2), (4,5)
Perhitungan selisih terbagi Newton adalah sebagai berikut.
Program EMT untuk menghitung matriks selisih terbagi Newton.
n=length(x);
D=zeros(n,n); D[1,:]=y’;
for i=2:n;
for j=1:(n-i+1);
D[i,j]=(D[i-1,j+1]-D[i-1,j])/(x[i+j-1]-x[j]);
end;
end;
return D;
endfunction
1 1 2 5
0 1 1.5 0
0.5 0.166667 0 0
-0.0833333 0 0 0
>fraction(D)
1 1 2 5
0 1 3/2 0
1/2 1/6 0 0
-1/12 0 0 0
Polinomial Newton yang menginterpolasikan titik-titik yang diketahui adalah:
1 1
P (x) = 1 + 0.x + x(x − 1) − x(x − 1)(x − 2).
2 12
>x=[0;1;-1;2;-2]; y=[-5;-3;-15;39;-9];
>D=stn(x,y)
-5 -3 -15 39 -9
2 6 18 12 0
-4 12 6 0 0
8 2 0 0 0
3 0 0 0 0
>x=[0;10;30;50;70;90;100]
0
10
30
50
70
90
100
>y=[1.792;1.308;0.801;0.549;0.406;0.317;0.284] // dari data ini akan ditentukan nilai y untuk x=40
1.792
1.308
0.801
0.549
0.406
0.317
0.284
Column 1 to 5:
1.792 1.308 0.801 0.549 0.406
-0.0484 -0.02535 -0.0126 -0.00715 -0.00445
0.000768333 0.00031875 0.00013625 6.75e-05 3.83333e-05
-8.99167e-06 -3.04167e-06 -1.14583e-06 -5.83333e-07 0
8.5e-08 2.36979e-08 8.03571e-09 0 0
-6.81134e-10 -1.74024e-10 0 0 0
5.0711e-12 0 0 0 0
Column 6 to 7:
0.317 0.284
-0.0033 0
0 0
0 0
0 0
0 0
0 0
Berikut adalah fungsi EMT untuk menghitung nilai polinomial interpolasi Newton P(z), berdasarkan
data x dan y.
D=stn(x,y);
n=length(D);
Pz=D[1,1];
for i=2:n;
suku=D[i,1];
for j=2:i;
suku=suku*(z-x[j-1]);
end
Pz=Pz+suku;
end;
return Pz;
endfunction
>Pz=politon(x,y,40)
0.656535119048
Pertanyaan:
Coba gambar polinomial interpolasi yang didapat tersebut beserta titik-titik datanya!
Jawab:
>z=0:0.1:100; Pz=zeros(length(z));
>for i=1:length(z), Pz[i]=politon(x,y,z[i]); end
>plot2d(z,Pz); plot2d(x,y,>points, style="o",>add):
Latihan Soal
Gunakan polinomial interpolasi Newton untuk menentukan yat x = 3,5 untuk akurasi terbaik. Hitung
terbagi hingga perbedaan seperti pada Gambar 17.5, dan urutan poin Anda untuk mencapai akurasi dan
konvergensi yang optimal. Artinya, intinya harus berpusat di sekitar dan sedekat mungkin dengan yang
tidak diketahui.
>x=[0;1;2.5;3;4.5;5;6]; y=[2;5.4375;7.3516;7.5625;8.4453;9.1875;12];
>D=stn(x,y)
Column 1 to 5:
2 5.4375 7.3516 7.5625 8.4453
3.4375 1.27607 0.4218 0.588533 1.4844
-0.864573 -0.427133 0.0833667 0.447933 0.8854
0.145813 0.145857 0.145827 0.145822 0
9.73545e-06 -7.61905e-06 -1.26984e-06 0 0
-3.4709e-06 1.26984e-06 0 0 0
7.90123e-07 0 0 0 0
Column 6 to 7:
9.1875 12
2.8125 0
0 0
0 0
0 0
0 0
0 0
>fraction(D)
>Pz=politon(x,y,3.5)
7.74216296296
Perkalian Tersarang
Rumus pada metode Newton merupakan bentuk umum yang dapat diterapkan pada sebarang fungsi.
Biala fungsi yang akan dicari akarnya berupa polinom, maka perhitungan pada rumus tersebut dapat
dibuat efisien, dalam arti lebih singkat dan akurat (proses pembulatan di komputer menjadi lebih sedikit).
Hal ini dilakukan dengan mengoptimalkan proses pada perhitungan nilai fungsi dan nilai turunannya.
Perhatikan suatu polinom derajat n,
p(x) = a0 + a1 x + a2 x2 + . . . + an xn , a0 ̸= 0.
Di dalam komputer/kalkulator, untuk menghitung xˆn setara dengan proses perkalian sebanyak n kali.
Misalkan z suatu bilangan real. Bila kita menghitung nilai p(z) dari rumus tersebut secara langsung,
yaitu
p(z) = a0 + a1 z + a2 z 2 + . . . + an z n
maka banyaknya operasi perkaliannya berorde O(nˆ2). Untuk penerapan metode Newton, kita juga perlu
menghitung p’(z) dan jumlah operasi perkaliannya berorde O(nˆ2). Pada pasal ini kita akan membahas
metode untuk menghitung nilai tersebut dengan cara yang lebih efisien.
CATATAN: Pada perhitungan di tas kita tidak memerdulikan operasi pertambahan karena operasi ini
memerlukan waktu komputasi yang jauh lebih kecil dari operasi perkalian.
Untuk mengefisienkan perhitungan p(z), kita susun urutan operasi perhitungannya sebagai berikut:
Dengan cara seperti di atas, maka operasi kali yang diperlukan hanya sebanyak n buah, suatu penurunan
yang sangat drastis dari operasi perhitungan langsung. Cara seperti ini dinamakan perkalian tersarang
yang ekivalen dengan metode Horner.
Dalam bentuk algoritma, proses perkalian tersebut dapat dilakukan sebagai berikut:
bn := an , untuki := n − 1, n − 2, . . . , 0 bi := ai + bi+1 ∗ z
bila algoritma tersebut dijalankan maka ilai p(z) akan tersimpan pada variabel b 0
Misalkan
bn , bn−1 , . . . , b1
adalah koefisien-koefisien yang dihasilkan dari algoritma persamaan diatas, sebut
maka
p(x) = (x − z)q(x) + b0
untuk kembali menerapkan perkalian bersaranng untuk mengitung nilai p’(z). Bila algoritma perhitungan
p(z) dan p’(z) ditulis bersamaan maka bentuknya adalah
Bila algoritma diatas dijalankan maka p(z) dan p’(z) akan tersimpan di variabel b 0 dan c 1
Berdasarkan metode perkalian tersarang, maka algoritma penerapan metode Newton untuk polinom akan
berbentuk sebagai berikut:
Polinomial Lagrange
xj xj
yang sama, polinomial interpolasi dalam bentuk Lagrange adalah kombinasi linier
k
X k
X
L(x) := yj ℓj (x)L(x) := yj ℓj (x)
j=0 j=0
Y x − xm (x − x0 ) (x − xj−1 ) (x − xj+1 ) (x − xk ) Y x − xm (x − x0 )
ℓj (x) := = ··· ··· ,ℓj (x) := = ···
xj − xm (xj − x0 ) (xj − xj−1 ) (xj − xj+1 ) (xj − xk ) xj − xm (xj − x0 ) (
0≤m≤k 0≤m≤k
m̸=j m̸=j
dimana
0 ≤ j ≤ k0 ≤ j ≤ k.
xj xj
m ̸= jm ̸= jxj − xm ̸= 0xj − xm ̸= 0,
xi = xj xi = xj dengan yi ̸= yj yi ̸= yj
akan ada; fungsi hanya bisa mendapatkan satu nilai untuk setiap argumen
xi xi .
Di sisi lain, jika juga
yi = yj yi = yj ,
maka kedua titik tersebut sebenarnya akan menjadi satu titik tunggal.
n
X Y x − xj
P (x) = yk
xk − xj
k=1 j̸=k
n
X Y z − xj
P (z) = yk
xk − xj
k=1 j̸=k
Contoh:
Polinomial Lagrange yang menginterpolasikan titik-titik:
(x − 1)(x − 2)(x − 4)
P (x) =1
(0 − 1)(0 − 2)(0 − 4)
(x − 0)(x − 2)(x − 4)
+1
(1 − 0)(1 − 2)(1 − 4)
(x − 0)(x − 1)(x − 4)
+2
(2 − 0)(2 − 1)(2 − 4)
(x − 0)(x − 1)(x − 2)
+5 .
(4 − 0)(4 − 1)(4 − 2)
2 3 1
P (x) = 1 − x + x2 − x3 , 0 ≤ x ≤ 4,
3 4 12
sama dengan hasil, baik menggunakan langsung ke polinomial bentuk baku maupun dengan polinomial
Newton.
Berikut adalah program EMT untuk menghitung nilai polinomial interpolasi di z dengan data x dan y,
menggunakan polinomial Lagrange.
n=length(x);
P=0;
for k=1:n;
S=y[k];
for j=1:n;
if j<>k then S=S*(z-x[j])/(x[k]-x[j]); endif;
end;
P=P+S;
end;
return P;
endfunction
0
10
30
50
70
90
100
> y
1.792
1.308
0.801
0.549
0.406
0.317
0.284
>PL(x,y,40)
0.656535119048
>t=0:1:100;
>p=PL(x,y,t);
>plot2d(t,p); plot2d(x,y,>points, style="o",>add):
Latihan:
Pilih soal-soal interpolasi dari LATIHAN pada buku-buku referensi yang sudah saya sebutakn/berikan
dan kerjakan dengan polinomial Lagrange, seperti contoh di atas.
Latihan Soal
>x=[8.1;8.3;8.6;8.7]
8.1
8.3
8.6
8.7
>y=[16.94410;17.56492;18.50515;18.82091]
16.9441
17.5649
18.5052
18.8209
>PL(x,y,8.4)
17.8771425
>x=[-0.5;-0.25;0.25;0.5]
-0.5
-0.25
0.25
0.5
>y=[1.93750;1.33202;0.800781;0.687500]
1.9375
1.33202
0.800781
0.6875
>PL(x,y,0)
0.984367333333
Nilai f(0) = 0.984367333333
Carilah fungsi-fungsi kardinalnya dan Polinomial Interpolasi Lagrange yang menginterpolasikan titik-
titik:
(0, −3), (1, −2), (−1, 5), (2, 10), (−2, 16), (3, −10)
Penyelesaian :
Berikut kita hitung fungsi-fungsi L 1, L 2, L 3, L 4, L 5, dan L 6
P5 (x) = −3L1 (x) − 2L2 (x) + 5L3 (x) + 10L4 (x) + 16L5 (x) − 10L6 (x).
Catatan :
Polinom Lagrange kurang disukai dalam praktek karena :
- Jumlah komputasi yang dibutuhkan untuk satu kali interpolasi adalah besar. Interpolasi untuk nilai x
yang lain memerlukan jumlah komputasi yang sama karena
tidak ada bagian komputasi sebelumnya yang dapat digunakan.
- Bila jumlah titik data meningkat atau menurun, hasil komputasi sebelumnya tidak dapat digunakan.
Karena tidak ada hubungannya antara p n-1(x) dan p n(x) pada polinom Lagrange
Interpolasi spline adalah bentuk interpolasi di mana interpolan adalah jenis khusus polinomial sepotong-
sepotong yang disebut spline. Interpolasi spline sering lebih digunakan daripada interpolasi polinomial
karena kesalahan interpolasi dapat dibuat kecil bahkan ketika menggunakan polinomial derajat rendah
untuk spline. Interpolasi spline juga menghindari masalah fenomena Runge, di mana osilasi dapat terjadi
antar titik saat interpolasi menggunakan polinomial derajat tinggi.
Awalnya, spline adalah istilah untuk penggaris elastis yang ditekuk untuk melewati sejumlah titik yang
telah ditentukan, atau simpul. Ini digunakan untuk membuat gambar teknis untuk pembuatan kapal dan
konstruksi dengan tangan, seperti yang diilustrasikan pada gambar.
Kami ingin memodelkan jenis kurva yang serupa menggunakan satu set persamaan matematika, dengan
satu polinomial
y = qi (x)y = qi (x)
(xi , yi )(xi , yi ),
dimana
i = 1, 2, . . . , ni = 1, 2, . . . , n.
Metode Spline adalah salah satu metode Interpolasi yaitu dengan memakai pendekatan fungsi-fungsi
Spline sebagai polinom penghubung. Interpolasi Spline merupakan polinom sepotong-sepotong. Suatu
fungsi f(x) yang sudah diketahui pada selang
a≤x≤b
dihampiri dengan sebuah fungsi lain g(x) dengan cara menyekat selang
a≤x≤b
Di dalam metode numerik, terdapat beberapa spline, diantaranya yakni Spline Linier, Spline Kuadrat,
dan Spline Kubik. Syarat-syarat dari masing-masing Spline akan dijelaskan sebagai berikut.
1. SPLINE LINIER
2. SPLINE KUADRAT
3. SPLINE KUBIK
Interpolasi dengan Spline
harus memenuhi:
S1 (x), x 1 ≤ x ≤ x2
S2 (x), x 2 ≤ x ≤ x3
... ..
.
S(x) =
Sk (x), xk ≤ x ≤ xk+1
.. ..
. .
S
n−1 (x), xn−1 ≤ x ≤ xn
dengan syarat:
(1) Setiap Sk (x) merupakan polinomial pada interval xk ≤ x ≤ xk+1 , untuk k = 1, 2, 3, ..., (n − 1).
(2) Fungsi S(x) dan semua turunannya (yang bukan konstan) bersifat kontinu pada interval [x1 , xn ].
(3) S(xk ) = yk untuk k = 1, 2, 3, ..., n (Syarat interpolasi).
Interpolasi Linear
Interpolasi linier adalah metode pemasangan kurva menggunakan polinomial linier untuk membangun
titik data baru dalam kisaran satu set diskrit titik data yang diketahui.
Jika dua titik yang diketahui diberikan oleh koordinat
interpolan linier adalah garis lurus antara titik-titik ini. Untuk nilai x dalam interval
y − y0 y1 − y0 y − y0 y1 − y0
= , = ,
x − x0 x1 − x0 x − x0 x1 − x0
yang dapat diturunkan secara geometris dari gambar di sebelah kanan. Ini adalah kasus khusus interpolasi
polinomial dengan n = 1.
Memecahkan persamaan ini untuk y, yang merupakan nilai yang tidak diketahui di x, memberikan
y1 − y0 y0 (x1 − x) + y1 (x − x0 ) y1 − y0 y0 (x1 − x) + y1 (x − x0 )
y = y0 + (x − x0 ) = ,y = y0 + (x − x0 ) = ,
x1 − x0 x1 − x0 x1 − x0 x1 − x0
Interpolasi Kuadratik
Misal diberi tiga buah titik data (x 0,y 0), (x 1,y 1), (x 2, y 2). Polinom yang menginterpolasi ketiga
buah titik itu adalah polinom yang berkuadrat.
Interpolasi Kubik
Misalkan diberikan empat titik data (x 0,y 0), (x 1,y 1), (x 2, y 2), (x 3,y 3). Polinom yang menginter-
polasi keempat buah titik berupa polinom kubik yang persamaannya adalah :
images: interpolasikubik.png
Spline Linier
Jadi,
(yk+1 − yk )
ak = dan bk = yk − ak xk .
(xk+1 − xk )
Jadi, spline linier berbentuk:
(y2 −y1 )
(x2 −x1 ) (x − x1 ) + y1 , x1 ≤ x ≤ x2
(y3 −y2 )
(x3 −x2 ) (x − x2 ) + y2 , x2 ≤ x ≤ x3
... ..
.
S(x) = (yk+1 −yk )
(xk+1 −xk ) (x − xk ) + yk , xk ≤ x ≤ xk+1
.
.. ..
.
(yn −yn−1 )
(xn −xn−1 ) (x − xn−1 + yn−1 , xn−1 ≤ x ≤ xn )
{x,i}=sort(x); y=y[i];
n=length(x);
m=zeros(n-1);
for k=1:n-1; m[k]=(y[k+1]-y[k])/(x[k+1]-x[k]); end
p=length(z);
s=zeros(p);
for i =1:p;
for k=1:n-1;
if z[i]>=x[k] and z[i]<=x[k+1] then s[i]= m[k]*(z[i]-x[k])+ y[k]; endif;
end
end
if p>n then s[p]= m[n-1]*(z[p]-x[n-1])+ y[n-1]; endif
return {s,m};
endfunction
>x=[0;1;-1;2;-2]; y=[-5;-3;-15;39;-9]; // spline linier yang menginterpolasikan ...
>// titik2 (0,-5), (1,-3), (-1,-15), (2,39), (-2,-9)
>spliner(x,y,x) // cek apakah program spliner menghasilnya nilai y yang sama dengan data
>z=-2:.1:2;
>{s,m}=spliner(x,y,z);
>m
Contoh 2:
Tentukan spline linier yang menginterpolasikan titik-titik (-2,16), (-1,5), (0,-3), (1,-2), (2, 10), dan (3,-10).
>x=[-2;-1;0;1;2;3]
-2
-1
0
1
2
3
>y=[16;5;-3;-2;10;-10]
16
5
-3
-2
10
-10
>spliner(x,y,x)
>z=-2:0.1:3;
>{s,m}=spliner(x,y,z);
>m
Latihan Soal
Diketahui data titik-titik(0,1), (1,1), (2,5). Tentukan spline linier yang menginterpolasikan titik-titik
tersebut.
>x=[0;1;2]
0
1
2
>y=[1;1;5]
1
1
5
>spliner(x,y,x)
[1, 1, 5]
>z=0:.1:2;
>{s,m}=spliner(x,y,z);
>m
[0, 4]
Nilai a k, b k, c k (k=1, 2, 3, ..., n-1) dapat ditemukan dengan menerapkan kondisi spline:
1) Kondisi interpolasi:
2) S dilanjutkan, artinya:
memberikan persamaan
3) S’ dilanjutkan, yaitu:
Dua persamaan terakhir dipilih salah satu, sesuai syarat yang diminta.
Contoh:
Temukan spline kuadrat S(x) yang menginterpolasi titik (-2, 16),
(-1, 5), (0,-3), (1,-2), (2, 10), dan (3,-10) dengan syarat tambahan S’(3) = 0. Selanjutnya, plot kurva dari
spline bersama dengan poin yang diberikan!
Solusi: Spline kuadrat adalah
2
a1 x + b1 x + c1 ,
−2 ≤ x ≤ −1
a2 x2 + b2 x + c2 , −1 ≤ x ≤ 0
S(x) = a3 x2 + b3 x + c3 , 0≤x≤1
a4 x2 + b4 x + c4 , 1≤x≤2
a x2 + b x + c ,
2≤x≤3
5 5 5
S(xk ) = yk ,
memberikan hasil:
4a1 − 2b1 + c1 = 16
a2 − b2 + c2 = 5
c3 = −3
a4 + b4 + c4 = −2
4a5 + 2b5 + c5 = 10
9a5 + 3b5 + c5 = −10
2) S dilanjutkan
maka:
a1 − b1 + c1 = a2 − b2 + c2 = 5
c2 = c3 = −3
a3 + b3 + c3 = a4 + b4 + c4 = −2
4a4 + 2b4 + c4 = 4a5 + 2b5 + c5 = 10
3) S’ dilanjutkan
maka:
−2a1 + b1 = −2a2 + b2
b2 = b3
2a3 + b3 = 2a4 + b4
4a4 + b4 = 4a5 + b5
4) Asumsi tambahan, S’(3)=0, artinya
6a5 + b5 = 0.
>function spline2a(x,y,a,b,c,z)
{x,i}=sort(x); y=y[i];
n=length(x);
m=length(z);
s=zeros(m);
for i =1:m;
for k=1:n-1;
if z[i]>=x[k] and z[i]<=x[k+1] then s[i]= a[k]*z[i]^2+b[k]*z[i]+c[k]; endif;
end
end
if m>n then s[m]= a[n-1]*z[m]^2+b[n-1]*z[m]+c[n-1]; endif
return s;
endfunction
>x=-2:3; y=[16,5,-3,-2,10,-10];
>a=[57;-54;63;-52;20]
57
-54
63
-52
20
>b=[160; -62; -62; 168; -120]
160
-62
-62
168
-120
108
-3
-3
-118
170
>z=-2:0.1:3;
>s=spline2a(x,y,a,b,c,z);
>plot2d(z,s); plot2d(x,y,>points, style="o", >add):
Latihan Soal
>x=1:3; y=[-19/2,77/2,-77/2];
>a=[-13/4;11/4]
-3.25
2.75
>b=[15;-21]
15
-21
>c=[-81/4;207/4]
-20.25
51.75
>z=1:.1:3;
>s=spline2a(x,y,a,b,c,z);
>plot2d(z,s); plot2d(x,y,>points, style="o", >add):
Terbukti dari plot siatas bahwa S1(2)=S2(2), S1’(2)=S1’(2), dan S1”(2)=S2”(2)
Berikut adalah alternatif untuk mencari spline kuadratik dengan menyelesaikan SPL yang memuat lebih
sedikit variabel.
(mk+1 − mk )
S(x) = Sk (x) = (x − xk )2 + mk (x − xk ) + Ck , untuk xk ≤ x ≤ xk+1 .
2(xk+1 − xk )
(mk+1 − mk )
S(x) = Sk (x) = (x−xk )2 +mk (x−xk )+yk , untuk xk ≤ x ≤ xk+1 , dan k = 1, 2, ..., (n−1).
2(xk+1 − xk )
sehingga didapatkan:
(mk+1 − mk )
+ mk (xk+1 − xk ) = yk+1 − yk ,
2(xk+1 − xk )
2(yk+1 − yk )
mk + mk+1 = , k = 1, 2, 3, ..., n − 1,
(xk+1 − xk )
yang merupakan SPL yang terdiri atas (n-1) equation dalam n variabel. Agar dapat diselesaikan, seperti
biasanya digunakan satu asumsi tambahan, yakni m 1=0 atau m n=0. (Tahukah Anda, apa arti asumsi
ini?)
Contoh:
Untuk contoh spline kuadratik di atas dapat diselesaikan dengan menggunakan SPL:
m1 + m2 = −22
m2 + m3 = 16
m3 + m4 = 2
m4 + m5 = 24
m5 + m6 = −40
m6 = 0
yakni:
{x,i}=sort(x); y=y[i];
n=length(x);
m=zeros(n);
if t==1 then
m[1]=0;
for k=1 to n-1; m[k+1]= 2*(y[k+1]-y[k])/(x[k+1]-x[k]) - m[k]; end
endif
if t==2 then
m[n]=0;
for k=1 to n-1; m[n-k]= 2*(y[n-k+1]-y[n-k])/(x[n-k+1]-x[n-k]) - m[n-k+1]; end
endif
p=length(z);
s=zeros(p);
for i =1:p;
for k=1:n-1;
if z[i]>=x[k] and z[i]<=x[k+1] then s[i]= 1/2*(m[k+1]-m[k])/(x[k+1]-x[k])*(z[i]-x[k])^2+m[k]*(
end
end
if p>n then s[p]=1/2*(m[n]-m[n-1])/(x[n]-x[n-1])*(z[p]-x[n-1])^2+m[n-1]*(z[p]-x[n-1])+y[n-1]; endif
return {s, m};
endfunction
>x=-2:3; y=[16,5,-3,-2,10,-10];
>z=-2:0.1:3;
>{s,m}=spline2(x,y,2,z); // menggunakan syarat tambahan untuk ujung kanan
>m
Spline Kubik
a1 x3 + b1 x2 + c1 x + d1 , x 1 ≤ x ≤ x2
a2 x3 + b2 x2 + c2 x + d2 ,
x 2 ≤ x ≤ x3
S(x) = .
..
an−1 x3 + bn−1 x2 + cn−1 x + dn−1 , xn−1 ≤ x ≤ xn
Syarat-syarat yang harus dipenuhi:
S(xk ) = yk , k = 1, 2, ..., n
Sk (xk+1 ) = Sk+1 (xk+1 ) = yk+1 , k = 1, 2, ..., n − 2
Sk′ (xk+1 ) = ′
Sk+1 (xk+1 ), k = 1, 2, ..., n − 2
Sk′′ (xk+1 ) = ′′
Sk+1 (xk+1 ), k = 1, 2, ..., n − 2
Dari keempat syarat diperoleh 4n-6 persamaan linier, padahal koefisien yang harus dicari sebanyak 4n-4.
Agar dapat diselesaikan digunakan dua asumsi, seperti biasanya menyangkut nilai-nilai S’(x) atau S”(x)
di kedua titik ujung.
Cara alternatif:
Misalkan
mk = S ′′ (xk ), k = 1 , 2, ..., n.
(mk+1 − mk )
S ′′ (x) = Sk′′ (x) = (x − xk ) + mk , untuk xk ≤ x ≤ xk+1 .
(xk+1 − xk )
(mk+1 − mk )
S ′ (x) = Sk′ (x) = (x − xk )2 + mk (x − xk ) + Ck , untuk xk ≤ x ≤ xk+1 .
2(xk+1 − xk )
(mk+1 − mk ) 1
S(x) = Sk (x) = (x − xk )3 + mk (x − xk )2 + Ck (x − xk ) + Dk , untuk xk ≤ x ≤ xk+1 .
6(xk+1 − xk ) 2
Karena S(x k)=y k, maka D k=y k.
Selanjutnya, untuk mendapatkan nilai-nilai m k dan C k digunakan syarat S dan S’ kontinu, yakni:
sehingga diperoleh:
1 1
(mk+1 − mk )(xk+1 − xk )2 + mk (xk+1 − xk )2 + Ck (xk+1 − xk ) = yk+1 − yk , untuk k = 1, 2, 3, ..., n − 1,
6 2
dan
1
(mk+1 − mk )(xk+1 − xk ) + mk (xk+1 − xk ) + Ck = Ck+1 , untuk k = 1, 2, 3, ..., n − 2,
2
atau
6(yk+1 − yk )
(xk+1 − xk )(2mk + mk+1 ) + 6Ck = , k = 1, 2, 3, ..., n − 1,
(xk+1 − xk )
S(xk ) = yk ,
sehingga :
d1 = 1
a2 + b2 + c2 + d2 = 1
8a3 + 4b3 + 2c3 + d3 = 2
64a3 + 16b3 + 4c3 + d3 = 5
2) S adalah continue
maka:
a1 + b1 + c1 + d1 = a2 + b2 + c2 + d2 = 1
8a2 + 4b2 + 2c2 + d2 = 8a3 + 4b3 + 2c3 + d3 = 2
3) S’ adalah continue
sehingga:
4) S” adalah continue
sehingga:
24a3 + 2b3 = 0.
1
3 1 2
6 (m4 − m3 )(x − 2) + 2 m1 (x − 2) + C1 (x − 2) + 1, 2 ≤ x ≤ 4.
Kemudian menggunakan syarat S dan S’ kontinu diperoleh SPL
2m1 + m2 + 6C1 = 0
2m2 + m3 + 6C2 = 0
m1 + m2 + 2(C1 − C2 ) = 0
m2 + m3 + 2(C2 − C3 ) = 0
m1 = 0 dan m3 = 2m4
Sehingga diperoleh
m1 = 0
13
m2 =
9
2
m3 =
9
1
m4 =
9
2. Gambarlah kurva spline tersebut.
Jawab:
>plot2d(xp,yp,>points,>add):
3. Tulis program EMT untuk spline kubik seperti contoh pada spline kuadratik. Gunakan program
tersebut untuk melakukan perhitungan dan menggambar spline kubik.
Jawab:
n=lenghth(x);
h=x(2:n)-x(1:n-1);
d=(y(2:n)-y(1:n-1))./h;
u=2*(h(1:n-2)+h(2:n-1));
v=6*(d(2:n-1)-d(2:n-1));
V=v’;
dia=h(2:n-2);dib=dia;
if st==1,
u(1)=3/2*h(1)+2*h(2);V(1)=V(1)-3*(d(1)-b1);
u(n-2)=2*h(n-2)+3/2*h(n-1);V(n-2)=V(n-2)-3*(bn-d(n-1));
A=diag(u)+ddiag(dib,-1)+diag(dia,1)
m=A\V;m=[0;m;0];
m(1)=3/h(1)*d(1)-b1)-m(2)/2;
V
m
end
if st==2,
A=diag(u)+diag(dib,-1)+diag(dia,1)
V
m=A\V;m[0;m;0]
end
if st==3,
u(1)=3*h+2*h(2)+h(1)^2/h(2);
dia(1)=h(2)-h(1)^2/h(2);
dib(n-3)=h(n-2)-h(n-1)^2/h(n-2);
u(n-2)=2*h(n-2)+3*h(n-1)+h(n-1)^2/h(n-2);
A=diag(u)+diag(dib,-1)+diag(dia,1)
m=A\V;m=[0;m;0];
m(1)=m(2)-h(1)*(m(3)-m(2))/h(2);
m(n)=m(n-1)+h(n-1)*(m(n-1)-m(n-2))/h(n-2);
V
m
end
if st==4,
u(1)=3*h(1)+2*h(2);
u(n-2)=2*h(n-2)+3*h(n-1);
A=diag(u)+diag(dib,-1)+diag(dia,1)
m=A\V;m=[0;m;0];
m(1)=m(2);m(n)=m(n-1);
V
m
end
if st==5,
V(1)=V(1)-h(1)*b1;
V(n-2)=V(n-2)-h(n-1)*bn;
A=diag(u)+diag(dib,-1)+diag(dia,1)
V
m=A\V;m=[b1;m;bn]
end
C=y(2:n)./h-h.*m(2:n)’/6
D=y(1:n-1)./h-h.*m(1:n-1)’6
for j=1:lenghth(z),
for k=1:n-1,
if z(j)<=x(k)&z(j)<=x(k+1),
S3(j)=(m(k+1)*(z(j)-x(k)).^3+m(k)*(x(k+1)-z(j)).^3)/(6*h(k))+C(k)*(z(j)-x(k))+D(k)*(x(k+1)-z(j));
end
end
endfunction