CURVE FITTING Risanuri Hidayat, Jurusan Teknik Elektro dan Teknologi Informasi FT UGM, 1.1 INTERPOLASI LINEAR Fungsi linear dinyatakan persamaan sebagai berikut, ff(xx) = AAAA + BB (1) Ketika data-data sumbu x dan fungsinya telah diketahui untuk sejumlah N titik, {(xx kk, yy kk )}, data tersebut biasanya dapat dinyatakan dalam bentuk tabel atau grafik. Sebagai contoh, x 1 y 1 x y x N y N Pasangan data tersebut akan berusaha di-selisih-kan dengan fungsi linear sebagaimana (1). Selisih antara keduanya disimbolkan dengan d k adalah, dd kk = ff kk (xx) yy kk dd kk = (AAxx kk + BB) yy kk () Pengkuadratan ke dua sisi menghasilkan, (dd kk ) = (AAxx kk + BB yy kk ) (3) Jika semua data dimasukkan, maka dihasilkan penjumlahan selisih yang dapat dinyatakan dengan persamaan berikut, (dd kk ) = (AAxx kk + BB yy kk ) (4)
Persamaan (4) merupakan nilai Ekspetasi yang merupakan fungsi A dan B, dan dinyatakan dengan E(A,B). Sehingga dapat dituliskan, EE(AA, BB) = (AAxx kk + BB yy kk ) (5) Nilai minimum E(A,B) dapat dicari ketika differensial parsial E/ A dan E/ B diset sama dengan nol, dan kemudian dicari nilai A dan B. Harap diingat bahwa sekarang x k dan y k adalah data yang telah ada nilainya, sedangkan justru A dan B merupakan variabel yang dicari. Ketika nilai B dibuat konstan, differensial parsial terhadap A, E/ A, adalah EE(AA,BB) AA = (AAxx kk + BB yy kk )xx kk = (AAxx kk + BBxx kk xx kk yy kk ) (6) Dan ketika nilai A dibuat konstan, EE(AA,BB) BB = (AAxx kk + BB yy kk ) = (AAxx kk + BB yy kk ) (7) Dengan men-set (6) dan (7) sama dengan nol, maka didapatkan AA xx kk + BB xx kk = xx kk yy kk (8) AA xx kk + = yy kk Dengan model matriks dapat dituliskan, xx kk AA xx kk = xx BB xx kk kkyy kk (9) yy kk Dari persamaan (9) di atas nilai A dan B dapat diperoleh dengan persamaan berikut ini, AA = xx kk xx kk BB xx kk 1 yy kk xx kkyy kk (10) Contoh:
x k y k 0.0000 1.0714 0.1000 1.14 0.3000 1.358 0.4000 1.354 0.5000 1.0906 0.8000 1.3600 0.9000 1.5190 1.0000 1.5816 Program MATLAB, function leastsquare_line0; close all; clear all; clc; fy = [... 0 1.0714;... 0.1000 1.14;... 0.3000 1.358;... 0.4000 1.354;... 0.5000 1.0906;... 0.8000 1.3600;... 0.9000 1.5190;... 1.0000 1.5816 ]; x = fy(:,1); y = fy(:,); N = length(x); sumx = x'*x; sumx = sum(x); sumxy = y'*x; sumy = sum(y); mata = [sumx sumx; sumx N]; A = inv(mata)*[sumxy sumy]'; xx = 0:0.1:1; yy = A(1)*xx + A(); plot(x,y,'-wo','linewidth',,'markeredgecolor','k','markerfacecolor',[.49 1.63],'MarkerSize',1); hold on; plot(xx,yy,'-bs','linewidth',1,'markeredgecolor','k','markerfacecolor',[.1.1.5],'markersize',6); grid on; end Hasil,
mata =.9600 4.0000 4.0000 8.0000 A = >> 0.430 1.0880 1. INTERPOLASI KUADRATIS Fungsi kuadrat dinyatakan persamaan sebagai berikut, ff(xx) = AAxx + BBxx + CC (11) Ketika data-data sumbu x dan fungsinya telah diketahui untuk sejumlah N titik, {(xx kk, yy kk )}, data tersebut dapat dinyatakan dalam bentuk tabel atau grafik, sebagai berikut,
x 1 y 1 x y x N y N Selisih antara ff kk (xx) dan yy kk yang disimbolkan dengan d k adalah, dd kk = ff kk (xx) yy kk dd kk = (AAxx kk + BBxx kk + CC) yy kk (1) Pengkuadratan ke dua sisi menghasilkan, (dd kk ) = (AAxx kk + BBxx kk + CC yy kk ) (13) Jika semua data dimasukkan, maka dihasilkan penjumlahan selisih yang dapat dinyatakan dengan persamaan berikut, (dd kk ) = (AAxx kk + BBxx kk + CC yy kk ) (14) Sebagaimana (4), persamaan (14) merupakan nilai Ekspetasi yang merupakan fungsi A, B dan C, yang dinyatakan dengan E(A,B,C), EE(AA, BB, CC) = (AAxx kk + BBxx kk + CC yy kk ) (15) Nilai x k dan y k adalah data yang telah ada nilainya, sedangkan nilai A dan B merupakan variabel yang dicari. Nilai minimum E(A,B) dapat dicari ketika differensial parsial E/ A dan E/ B diset sama dengan nol, Ketika nilai B dan C dibuat konstan, differensial parsial E/ A, adalah EE(AA,BB,CC) AA = (AAxx kk + BBxx kk + CC yy kk )xx kk = (AAxx 4 kk + BBxx 3 kk + CCxx kk xx kk yy kk ) (16) Ketika nilai A dan B berturut-turut dibuat konstan,
EE(AA,BB,CC) BB = (AAxx kk + BBxx kk + CC yy kk )xx kk = (AAxx 3 kk + BBxx kk + CCxx kk xx kk yy kk ) (17) EE(AA,BB,CC) CC = (AAxx kk + BBxx kk + CC yy kk ) = (AAxx kk + BBxx kk + CC yy kk ) (18) Dengan men-set (16)-(18) sama dengan nol, maka didapatkan AA 4 xx kk + BB xx 3 kk + CC xx kk = xx kk yy kk (19) AA 3 xx kk + BB xx kk + CC xx kk = xx kk yy kk AA xx kk + BB xx kk + = yy kk Dengan model matriks dapat dituliskan, 4 xx kk 3 xx kk xx kk AA 3 xx kk xx kk xx kk BB = xx kk xx kk CC xx kk yy kk xx kk yy kk (0) yy kk Dari persamaan di atas nilai A dan B dapat diperoleh dengan persamaan berikut ini, AA 4 xx kk 3 xx kk xx kk BB = 3 xx kk xx kk xx kk CC xx kk xx kk 1 xx kk yy kk xx kk yy kk (1) yy kk Contoh: x k y k.00 0.500 4.00 0.50 5.00 0.00 8.00 0.15
Program MATLAB, function leastsquare_parabol01; close all; clear all; clc; fy = [....00 0.500;... 4.00 0.50;... 5.00 0.00;... 8.00 0.15... ]; x = fy(:,1); y = fy(:,); N = length(x); sumx4 = sum((x.*x).*(x.*x)); sumx3 = sum((x.*x).*x); sumx = sum(x.*x); sumx = sum(x); sumxy = sum((x.*x).*y); sumxy = sum(x.*y); sumy = sum(y); mata = [sumx4 sumx3 sumx; sumx3 sumx sumx; sumx sumx N] A = inv(mata)*[sumxy sumxy sumy]' xx = 0:0.:10; yy = A(1)*(xx.*xx) + A()*xx + A(3); plot(x,y,'-wo', 'LineWidth',, 'MarkerEdgeColor','k', 'MarkerFaceColor',[.49 1.63],'MarkerSize',1); hold on; plot(xx,yy,'-bs','linewidth',1,'markeredgecolor','k','markerfacecolor',[.1.1.5],'markersize',6); grid on; end Hasil, mata = 4993 709 109 709 109 19 109 19 4
A = 0.0138-0.1993 0.8405 >> 1.3 INTERPOLASI POLINOMIAL Fungsi polinomial pangkat n dinyatakan persamaan sebagai berikut, ff(xx) = aa 0 + aa 1 xx + aa xx + + aa nn xx nn () ff(xx) = nn ii=0 aa ii xx ii Ketika data-data sumbu x dan fungsinya telah diketahui untuk sejumlah N titik, {(xx kk, yy kk )}, data tersebut dapat dinyatakan dalam bentuk tabel atau grafik, sebagai berikut, x 1 y 1 x y x N y N
Selisih antara ff kk (xx) dan yy kk yang disimbolkan dengan d k adalah, dd kk = ff kk (xx) yy kk dd kk = (aa 0 + aa 1 xx + aa xx + + aa nn xx nn ) yy kk (3) Pengkuadratan ke dua sisi menghasilkan, (dd kk ) = (aa 0 + aa 1 xx kk + aa xx kk + + aa nn xx nn kk yy kk ) (4) Jika semua data dimasukkan, maka dihasilkan penjumlahan selisih yang dapat dinyatakan dengan persamaan berikut, (dd kk ) = (aa 0 + aa 1 xx kk + aa xx kk + + aa nn xx nn kk yy kk ) (5) Persamaan (5) merupakan nilai Ekspetasi yang merupakan fungsi a 0, a 1... a n, dan dinyatakan dengan E(a 0, a 1... a n ), EE(aa 0, aa 1, aa nn ) = (aa 0 + aa 1 xx kk + aa xx kk + + aa nn xx nn kk yy kk ) (6) Nilai x k dan y k adalah data yang telah ada nilainya, sedangkan nilai a 0, a 1... a n, merupakan variabel yang dicari. Nilai minimum E(a 0, a 1... a n ) dapat dicari ketika differensial parsial E/ a 0, E/ a 1... E/ a n diset sama dengan nol. Ketika nilai a i dengan i 0 dibuat konstan, differensial parsial E/ a 0 adalah EE(aa 0,aa 1, aa nn ) = aa (aa 0 + aa 1 xx kk + aa xx kk + + aa nn xx nn kk yy kk ) 0 = (aa 0 + aa 1 xx kk + aa xx kk + + aa nn xx nn kk yy kk ) (7) Demikian juga ketika nilai a i dengan i j dibuat konstan, differensial parsial E/ a j adalah EE(AA,BB,CC) = (aa aa 0 + aa 1 xx kk + aa xx kk + + aa nn xx nn jj kk yy kk )xx kk (8) jj Dengan men-set (7)-(8) sama dengan nol, maka didapatkan
aa nn nn xx kk + aa nn 1 xx nn 1 kk + aa 0 nn xx kk = xx nn kk yy kk aa nn nn 1 xx kk + aa nn 1 xx nn kk + aa 0 nn 1 xx kk = xx nn 1 kk yy kk aa nn nn xx kk + aa nn 1 nn 1 xx kk + aa 0 = yy kk Dengan model matriks dapat dituliskan, xx kk nn nn 1 xx kk nn 1 xx kk nn xx kk nn xx kk nn 3 xx kk nn xx kk nn 1 xx kk xx kk nn nn 1 xx kk nn xx kk aa nn aa nn 1 aa nn 1 aa 0 = xx kk nn yy kk xx nn 1 kk yy kk xx nn kk yy kk yy kk (9) Nilai-nilai a 0, a 1... a n dapat dihitung dari persamaan berikut ini, aa nn aa nn 1 aa nn 1 aa 0 = xx kk nn nn 1 xx kk nn xx kk nn 1 xx kk nn xx kk nn 1 xx kk nn xx kk nn 3 xx kk nn xx kk nn xx kk nn 1 xx kk 1 xx kk nn yy kk xx nn 1 kk yy kk xx nn kk yy kk yy kk (30) Contoh: x k y k.00 0.500 4.00 0.50 5.00 0.00 8.00 0.15 Program MATLAB, function leastsquare_poli01; close all; clear all; clc;
fy = [....00 0.500;... 4.00 0.50;... 5.00 0.00;... 8.00 0.15... ]; x = fy(:,1); y = fy(:,); N = length(x); M = 3; % pangkat 3 % mendapatkan matriks A (mata) mata = sumsum(x,y,m) % mendapatkan koefisien an..a0 A = inv(mata(:end,:))*mata(1,:)' % cek persamaan xx = 0:0.:10; yy = zeros(1,length(xx)); for (i=1:m+1) yy = yy + A(i).*(xx.^(M+1-i)); end; function mata = sumsum(x,y,m) sem = ones(m+,m+1); for (i=1:m+1) for (j=1:m+1) sem(i,j)=sum(x.^(i+j-)); end; end sem1 = []; for (i=1:m+1) sem1 = [sem1 sum((x.^(i-1)).*y)]; end mata = sem(end:-1:1,end:-1:1); mata(1,:) = sem1(end:-1:1); end; plot(x,y,'-wo', 'LineWidth',, 'MarkerEdgeColor','k', 'MarkerFaceColor',[.49 1.63],'MarkerSize',1); hold on; plot(xx,yy,'-bs','linewidth',1,'markeredgecolor','k','markerfacecolor',[.1.1.5],'markersize',6); grid on; end Hasil, mata = 1.0e+005 *
0.0011 0.000 0.0000 0.0000.8193 0.3695 0.0499 0.0071 0.3695 0.0499 0.0071 0.0011 0.0499 0.0071 0.0011 0.000 0.0071 0.0011 0.000 0.0000 A = -0.0031 0.0594-0.3937 1.0750 >> DAFTAR PUSTAKA [1] JH. Mathews, KK. Fink, Numerical Methods Using Matlab, Prentice Hall, 004