Linear Splines [PDF]

  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

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 > 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 dide…nisikan sepenuhnya oleh nilai- nilai di xi. Berikut ini kita perhatikan alasannya. Spline kuadratik dide…nisikan oleh Si (x) = aix2 + bix + ci Jadi terdapat 3n parameter untuk mende…nisikan 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 = S‘i (xi). Karena Si (xi) = yi, S‘i (xi). = zi, dan S‘ii (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: