Linear Splines

Unduh sebagai pptx, pdf, atau txt
Unduh sebagai pptx, pdf, atau txt
Anda di halaman 1dari 26

SPLINES AND PIECEWISE

INTERPOLATION
LINEAR SPLINES
QUADRATIC SPLINES
CUBIC SPLINES

Pada bab sebelumnya telah dibahas mengenai


interpolasi titik-titik data (x0; y0) sampai (xn; yn)
menggunakan suatu polinomial berderajat n. Namun
terdapat kasus dimana fungsi-fungsi ini memberikan
hasil yang salah. Pendekatan alternatifnya adalah
menerapkan polinomial-polinomial berderajat lebih
rendah pada sebagian titik data. Polinomial
penghubung tersebut dinamakan fungsi-fungsi spline.

LINEAR SPLINES

1.
2.
3.

Suatu fungsi f (x) dinamakan suatu spline berderajat k jika


Domain dari S adalah suatu interval [a; b].
S; S0; :::; S(k-1)kontinu pada [a; b].
Terdapat titik-titik xi sedemikian sehingga a = x0 < x1 < ::: <
xn = b dan juga S adalah suatu polinomial berderajat k pada
setiap [xi; xi+1].
Dengan kata lain, spline adalah potongan-potongan fungsi
polinomial dengan turunan- turunan memenuhi kendala-kendala
kekontinuan tertentu. Ketika k = 1, spline dinamakan spline
linear. Ketika k = 2, spline dinamakan spline kuadratik. Ketika k
= 3, spline dinamakan spline kubik.

Kita
mencoba mencari suatu fungsi spline linear S (x)
sedemikian sehingga S (xi) = yi untuk 0 i n. Diambil dimana
setiap Si (x) adalah linear.

Diperhatikan fungsi linear Si (x). Garis ini melalui titik (xi; yi)
dan (xi+1; yi+1), sehingga kemiringan dari Si (x) yaitu

Kita dapat juga mengatakan bahwa garis tersebut melalui titik


(xi; yi) dan (x; S (x)) untuk sembarang x 2 [xi; xi+1], sehingga

yang memberikan

Table Lookup
Table Lookup berguna untuk menunjukkan perulangan
interpolasi dari sebuah tabel yang variabelnya independent dan
dependent.
Berikut merupakan contoh dari Table lookup :
Here is a MATLAB session illustrating how the binary search
function can be applied to calculate the air density at 350 C
based on the data from Table 17.1. The sequential search
would be similar.

by linear interpolation:
function yi = TableLookBin(x, y, xx)
n = length(x);
if xx < x(1) | xx > x(n)
error('Interpolation outside range')
end
% binary search
iL = 1; iU = n;
while (1)
if iU - iL <= 1, break, end
iM = fix((iL + iU) / 2);
if x(iM) < xx
iL = iM;
else
iU = iM;
end
end
% linear interpolation
yi = y(iL) + (y(iL+1)-y(iL))/(x(iL+1)-x(iL))*(xx - x(iL));

Berikut program Matlab :


>> clear
>> T = [-40 0 20 50 100 150 200 250
300 400 500];
>> density = [1.52 1.29 1.2 1.09 .
946 .935 .746 .675 .616...
.525 .457];
>> TableLookBin(T,density,350)

QUADRATIC SPLINES
Tidak seperti spline linear, spline kuadratik tidak didenisikan
sepenuhnya oleh nilai- nilai di xi. Berikut ini kita perhatikan
alasannya. Spline kuadratik didenisikan oleh
Si (x) = aix2 + bix + ci
Jadi terdapat 3n parameter untuk mendenisikan S (x).
Diperhatikan titik-titik data:

Syarat-syarat untuk menentukan 3n parameter dijelaskan


seperti berikut ini.
Setiap subinterval [xi; xi+1], untuk i = 0; 1; 2; :::; n - 1,
memberikan dua persamaan berkaitan dengan Si (x), yaitu
Si (xi) = yi dan Si (xi+1) = yi+1
Syarat pada kontinuitas dari S0 (x) memberikan suatu
persamaan tunggal untuk setiap titik dalam xi, i = 1; 2; :::; n-1,
yaitu

Jadi dari sini dipunyai n-1 persamaan. Sekarang totalnya terdapat


3n - 1 persamaan, tetapi karena terdapat 3n parameter yang tidak
diketahui maka sistem kekurangan ketentuan.
Pilihan-pilihan yang mungkin untuk melengkapi kekurangan
ketentuan yaitu

Sekarang dimisalkan zi = Si (xi). Karena Si (xi) = yi, Si (xi). =


zi, dan Sii (xi+1) = zi+1, maka kita dapat mendefenisikan

Selanjutnya, dengan pengambilan x = xi+1 diperoleh

Jadi, kita dapat menentukan zi+1 dari zi

Spline Interpolation in Matlab


Assume we want to interpolate the data (1,20), (3,17), (5,23), (7,19)
using splines, and then evaluate the interpolated function at x=2, 4,
6. In Matlab, we first define the data vectors:
>> x=[1 3 5 7];y=[20 17 23 19];xi=[2 4 6];
(1) Linear Splines:
The interpolated y-data are found by executing
>> yi=interp1(x,y,xi)
yi =
18.50000000000000 20.00000000000000 21.00000000000000

(2) Cubic Splines:


Here the interpolated data are found by executing
>> yi=interp1(x,y,xi,'spline')
yi =
16.18750000000000 20.06250000000000 23.43750000000000
We can also generate a large array of interpolated data points for
plotting the interpolation function (don't forget the semicolon)
>> xp=linspace(1,7,100);yp=interp1(x,y,xp,'spline');
and plot function and data (using a script):
plot(xp,yp,'k',x,y,'ko',xi,yi,'kv')
xlabel('x-values'),ylabel('y-values'),
legend('interpolated graph','given data','interpolated data')
axis([1 7 15 24])

Spline Kubik

Diketahui suatu fungsi f (x) yang dibatasi oleh interval a dan


b, dan memiliki sejumlah titik data a = x0 < x1 < x2 < ::: < xn
= b. Interpolasi spline kubik S (x) adalah suatu potongan
fungsi polinomial berderajat tiga (kubik) yang
menghubungkan dua titik yang bersebelahan, dengan
ketentuan, untuk i = 0; 1; :::; n-1:
(S0) Potongan fungsi pada subinterval [xi; xi+1], i = 0; 1; :::; n
1

(S1) Pada setiap titik data x = xi, i = 0; 1; :::; n:


S (xi) = f (xi)
(S2) Nilai-nilai fungsi harus sama pada titik-titik dalam:
Si (xi+1) = Si+1 (xi+1) ; i = 0; 1; :::; n - 2:
(S3) Turunan-turunan pertama pada titik dalam harus sama:
(S4) Turunan-turunan kedua pada titik dalam harus sama:
(S5) Salah satu syarat batas di antara dua syarat batas x0 dan
xn berikut ini harus dipenuhi:

Anda mungkin juga menyukai