Download - Linear Splines

Transcript

Splines and Piecewise Interpolation

SPLINES AND PIECEWISEINTERPOLATIONLINEAR SPLINESQUADRATIC SPLINESCUBIC SPLINESPada 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

Suatu fungsi f (x) dinamakan suatu spline berderajat k jikaDomain 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.

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 LookupTable 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 searchiL = 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 SPLINESTidak 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), yaituSi (xi) = yi dan Si (xi+1) = yi+1Syarat 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:

26