Interpolasi Lagrange Untuk Prediksi

15
NAMA: Diah Ayu Retnani W TUGAS 3 Teknik Komputasi NIM: 10/308840/PTK/07017 INTERPOLASI Dengan pendekatan berbeda: dengan Contoh:

description

interpolasi

Transcript of Interpolasi Lagrange Untuk Prediksi

Page 1: Interpolasi Lagrange Untuk Prediksi

NAMA: Diah Ayu Retnani WTUGAS 3 Teknik KomputasiNIM: 10/308840/PTK/07017

INTERPOLASI

Dengan pendekatan berbeda:

dengan

Contoh:

Page 2: Interpolasi Lagrange Untuk Prediksi

Y(0.25)= 11.8078

Program Matlabnya:

clcclear allclf %% INTRODUCTION disp('ABSTRACT')disp(' This program shows you how to find the value of y if x is 0.25 by polynomial interpolation?')disp(' ')disp('NAMA : DIAH AYU RETNANI W')disp('NIM: 10/308840/PTK/07017')disp(' ')%% INPUTS% y vs x data to interpolate% x datax=[0.2 0.3 0.4 0.5 0.6 ];% ydatay=[10.1 12.5 14.2 17.8 19.3];% Where do you want to interpolate atxin=[0.25];%% DISPLAYING INPUTSdisp('INPUTS')disp('The x data')xdisp('The y data')

Page 3: Interpolasi Lagrange Untuk Prediksi

ydisp('The x values where you want to find the interpolated values')xindisp(' ') %% THE CODE% Find the number of data pointsn=length(x);% Fitting to polynomial of order m=n-1m=n-1% pp consists of the coefficients of the polynomial % pp(1)*x^m+pp(2)*x^m+.......+pp(m)% pp(1) is coefficient of x^m% pp(2) is coefficient of x^(m-1)% and so onpp=polyfit(x,y,m);% Getting the values at xinyin=polyval(pp,xin);% This is only for plotting the interpolating polynomialxplot=x(1):(x(n)-x(1))/10000:x(n);yplot=polyval(pp,xplot); %% DISPLAYING OUTPUTSdisp(' ')disp('OUTPUTS')disp('x values at which function is to be interpolated')xindisp('y values at the xin values')yindisp('These are the coefficients of the polynomial interpolant')disp('pp(1) is coefficient of x^m, pp(2) is coefficient of x^(m-1) and so on')fprintf('Order of polynomial m =%g',m)ppxlabel('x');ylabel('y');title('y vs x ');plot(x,y,'o','MarkerSize',10,'MarkerEdgeColor','b','MarkerFaceColor','b')hold onplot(xin,yin,'o','MarkerSize',10,'MarkerEdgeColor','k','MarkerFaceColor','k')hold onplot(xplot,yplot,'LineWidth',2)legend('Points given','Points found','Polynomial Curve')hold offdisp(' ')

maka outputnya:ABSTRACT This program shows you how to find the value of y if x is 0.25 by polynomial interpolation? NAMA : DIAH AYU RETNANI WNIM: 10/308840/PTK/07017 INPUTSThe x data

Page 4: Interpolasi Lagrange Untuk Prediksi

x = 0.2000 0.3000 0.4000 0.5000 0.6000The y datay = 10.1000 12.5000 14.2000 17.8000 19.3000

The x values where you want to find the interpolated valuesxin = 0.2500m = 4

OUTPUTSx values at which function is to be interpolatedxin = 0.2500y values at the xin valuesyin = 11.8078These are the coefficients of the polynomial interpolantpp(1) is coefficient of x^m, pp(2) is coefficient of x^(m-1) and so onOrder of polynomial m =4pp = 1.0e+003 * -2.7500 4.2833 -2.3775 0.5777 -0.0402

INTERPOLASI LAGRANGE UNTUK PREDIKSI

Page 5: Interpolasi Lagrange Untuk Prediksi

NILAI DATA BERPASANGAN DENGAN MENGGUNAKAN MATLAB

Merupakan teknik yang popular, karena menggunakan fungsi dalam bentuk polinom. Jika fungsi yang dicari adalah f(x) dan cacah data n maka :

Page 6: Interpolasi Lagrange Untuk Prediksi

1. Penyelesaian akhir didapat sebagai berikut:

Page 7: Interpolasi Lagrange Untuk Prediksi

ALGORITMADari manual diatas dapat dituliskan algoritma kasarnya sebagai berikut :A. Tetapkan jumlah titik yang diketahui.

Untuk menginputkan titik yang diketahui dapat meenggunakan dua array x dan y denganjumlah data = jumlah titiknya.

Dengan dua array akan lebih mudah mengatur perilaku data didalam program. Bisa jugamenggunakan banyak array sejumlah titik yang diketahui, sehingga masing-masing pasang data disimpan dalam satu array. Cara ini terlihat lebih sederhana, tetapi lebih sulit dalam mengatur perilaku data. Dalam implementasi ini nantinya akan dipilih cara yang pertama, yakni menggunakan dua array x dan y.

B. Mencari Li(x) dan P(x)Li(x) didapat sejumlah titik yang diketahui, sehingga diperlukan perulangan sebanyak titik yang diketahui. Demikian pula P(x) merupakan jumlahan dari perkalian yi dan Li(x), sehingga memerlukan perulangan yang jumlahnya sana dengan proses pencarian Li(x). Untuk mencari Li(x) diperlukan Qi(x) dan Qi(xi). Karena Qi(x) merupakan hasil perkalian (x-xi) sejumlah titik yang diketahui, maka diperlukan perulangan lagi untuk mencarinya. Tetapi yang harus diingat disini adalah bahwa, untuk (x-xi) tersebut tidak ikut dalam hasil perkalian. Sehingga proses hanya akan dilakukan untuk nilai selain (x-xi). Untuk Qi(xi) dapat dicari setelah Qi(x) diketahui dengan cara mensubstitusi nilai xi ke dalam Qi(x). Setelah Qi(x) dan Qi(xi) diketahui dapat dicari Li(x). Dan untuk selanjutnya mencari P(x).Misalnya banyaknya titik yang diketahui adalah b, maka algoritma diatas dapat diperhalus menjadi sebagai berikut:1. Inputkan b.2. Dari i = 1 s.d b. Inputkan titik ke i3. Dari i = 1 s.d bCari Qi(x)Cari Qi(xi)Cari Li(x)Cari P(x)

PEMROGRAMAN Listing programnya sebagai berikut:clc;clear;%membangun objek simbolik xsyms x;%menginputkan banyaknya titikb=input('Banyak titik = ');%menginputkan masing-masing titikfor i=1:bfprintf('x%d',i)bx(i)=input(' = ');fprintf('y%d',i)by(i)=input(' = ');endclc;%menampilkan titik-titik yang sudah diinputkan ke layar

Page 8: Interpolasi Lagrange Untuk Prediksi

clc;disp('Titik-titik yang diketahui adalah sebagai berikut:');for i=1:bfprintf('(%d,%1.1f)',bx(i),by(i));end%inisialisasi fxfx=0;fprintf('\n\n');disp('Nilai masing-masing L(x)');% mulai proses pencarian q(x), qx1, lx, dan pxfor i=1:b%inisialisasi qxqx=1;

%perulangan untuk mencari qxfor j=1:bif (i~=j)qx=qx*(x-bx(j));endend%mencari qx1 dengan substitusi x ke gxqx1=subs(qx,x,bx(i));%mencari lxlx=qx/qx1;lx1=collect(lx);%menampilkan lxfprintf('L%d(x) = ',i);disp(lx1);%mencari fxfx=fx+by(i)*lx;end%menyederhanakan fx menjadi px dan menampilkan ke layarpx=collect(fx);fprintf('Hasilnya = ');disp(px);Program diatas digunakan untuk menyelesaikan dua permasalahan yang sudah dibahasdiatas.Permasalahan pertama untuk 3 titik diketahui.Inputnya sebagai berikut :Banyak titik = 3x1 = 1y1 = -1x2 = 3y2 = 0.5x3 = 4y3 = 0

Page 9: Interpolasi Lagrange Untuk Prediksi

Input diatas memberikan output sebagai berikut:

Titik-titik yang diketahui adalah sebagai berikut:(1,-1.0)(3,0.5)(4,0.0)Nilai masing-masing L(x)L1(x) = 1/6*x^2-7/6*x+2L2(x) = -1/2*x^2+5/2*x-2L3(x) = 1/3*x^2-4/3*x+1Hasilnya = -5/12*x^2+29/12*x-3Permasalahan kedua, untuk empat titik diketahuiInputnya sebagai berikut:Banyak titik = 4x1 = 0y1 = 1x2 = 1y2 = 2x3 = 3y3 = 4x4 = 6y4 = -1Input diatas memberikan output sebagai berikut:Titik-titik yang diketahui adalah sebagai berikut:(0,1.0)(1,2.0)(3,4.0)(6,-1.0)Nilai masing-masing L(x)L1(x) = -1/18*x^3+5/9*x^2-3/2*x+1L2(x) = 1/10*x^3-9/10*x^2+9/5*xL3(x) = -1/18*x^3+7/18*x^2-1/3*xL4(x) = 1/90*x^3-2/45*x^2+1/30*xHasilnya = -4/45*x^3+16/45*x^2+11/15*x+1Output program dibandingkan dengan manual yang ada sebelumnya memberikan hasil yang sama. Contoh soal2:

Titik-titik yang diketahui adalah sebagai berikut:(2.000000e-001,10.1)(3.000000e-001,12.5)(4.000000e-001,14.2)(5.000000e-001,17.8)(6.000000e-001,19.3)

Nilai masing-masing L(x)L1(x) = 15+1250/3*x^4-750*x^3+2975/6*x^2-285/2*x

Page 10: Interpolasi Lagrange Untuk Prediksi

L2(x) = -40-5000/3*x^4+8500/3*x^3-5200/3*x^2+1340/3*x L3(x) = 45+2500*x^4-4000*x^3+2275*x^2-540*x L4(x) = -24-5000/3*x^4+2500*x^3-4000/3*x^2+300*x L5(x) = 5+1250/3*x^4-1750/3*x^3+1775/6*x^2-385/6*x Hasilnya = -201/5-2750*x^4+12850/3*x^3-4755/2*x^2+1733/3*x

INTERPOLASI NEWTON

Secara umum, n+1 titik data, misalnya (x0; y0), (x1; y1), …, (xn; yn) dapat dicocokkandengan suatu polinomial berderajat n yang mempunyai bentuk

Persamaan-persamaan yang digunakan untuk menghitung koefisien-koefisien yaitu

Nilai fungsi berkurung siku dinamakan beda terbagi hingga dan dideÖnisikan sebagai

Persamaan-persamaan di atas adalah rekursif, yaitu beda orde lebih tinggi dihitungdengan mengambil beda dari orde lebih rendah.Seperti contoh soal pada metode interpolasi sebelumnya, diketahui nilaiX=[0.2 0.3 0.4 0.5 0.6 ]Y=[10.1 12.5 14.2 17.8 19.3]xi=[0.25]dapat dihitung menggunakan metode interpolasi newton didapat:

Page 11: Interpolasi Lagrange Untuk Prediksi

listing program :function [T,K,yi]=poliNewton(X,Y,xi)% poliNewton Menyusun Tabel Beda Terbagi Hingga untuk interpolasi polinomial Newton% dan menghitung nilai fungsi interpolasi untuk suatu nilai x = xi.%% Input: X = data x% Y = data y yang berkorespondensi dengan x% xi = suatu nilai di antara titik-titik data x%% Output: T = Tabel Beda Terbagi Hingga mulai pertama% K = vektor yang memuat koefisien dari x^n, x^(n-1), ..., x, x^0% yi = f(xi)%% ---PENGHITUNGAN INTI:N = length(X)-1; % banyaknya pasangan data% konstruksi tabel beda terbagihasil = zeros(N+1,N+3);hasil(:,1) = [0:N]'; % iterasihasil(:,2) = X'; % nilai xhasil(:,3) = Y'; % nilai yfor j=4:N+3for i=1:N+3-(j-1) % beda terbagi orde 1,2, ..., n-1hasil(i,j) = (hasil(i+1,j-1)-hasil(i,j-1))/(hasil(j+i-3,2)-hasil(i,2));endendTabel = hasil;% ---OUTPUT:% tabel beda terbagi hingga:T = Tabel(:,4:end);a = hasil(1,3:end); % a = [a_0 a_1 a_2 ... a_N]% koef x^n, ..., x^0:K = a(N+1); % koefisien dari x^Nfor i = N:-1:1K = [K a(i)] - [0 K*X(i)]; %a(i)*(x - x_(i - 1))+a_(i - 1)end% nilai y untuk suatu nilai xi:yi = sum(K'.*xi.^([N:-1:0]'));% plot titik-titik data dan kurva polinomialxsim = X(1):0.1:X(end);for k=1:length(xsim)ysim(k) = sum(K'.*xsim(k).^([N:-1:0]'));endplot(X,Y,'bo',xsim,ysim,'r-')

Maka dibeti masukan pada command window:>> X=[0.2 0.3 0.4 0.5 0.6 ]X = 0.2000 0.3000 0.4000 0.5000 0.6000>> Y=[10.1 12.5 14.2 17.8 19.3]Y = 10.1000 12.5000 14.2000 17.8000 19.3000>> xi=[0.25]

Page 12: Interpolasi Lagrange Untuk Prediksi

xi =

0.2500Kemudian memanggil perintah fungtion interpolasi newton

[T,K,yi]=poliNewton(X,Y,xi)

Hasilnya:T =

1.0e+003 *

0.0240 -0.0350 0.4333 -2.7500 0.0170 0.0950 -0.6667 0 0.0360 -0.1050 0 0 0.0150 0 0 0 0 0 0 0K = 1.0e+003 * -2.7500 4.2833 -2.3775 0.5777 -0.0402yi = 11.8078

Dengan bentuk grafik: