You are on page 1of 12

NAMA: Diah Ayu Retnani W TUGAS 3 Teknik Komputasi NIM: 10/308840/PTK/07017 INTERPOLASI f n ( x ) = Li ( x ) f ( xi )

i =0 n

Dengan pendekatan berbeda:

dengan

Li ( x ) =
j =0 j i

x xi xi x j

Contoh:

linear :

f1 ( x ) =

x x1 x x0 f ( x0 ) + f ( x1 ) x0 x1 x1 x0

Y(0.25)= Program Matlabnya:


clc clear all clf %% INTRODUCTION

11.8078

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

y if x is 0.25 by

y disp('The x values where you want to find the interpolated values') xin disp(' ') %% THE CODE % Find the number of data points n=length(x); % Fitting to polynomial of order m=n-1 m=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 on pp=polyfit(x,y,m); % Getting the values at xin yin=polyval(pp,xin); % This is only for plotting the interpolating polynomial xplot=x(1):(x(n)-x(1))/10000:x(n); yplot=polyval(pp,xplot); %% DISPLAYING OUTPUTS disp(' ') disp('OUTPUTS') disp('x values at which function is to be interpolated') xin disp('y values at the xin values') yin disp('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) pp xlabel('x'); ylabel('y'); title('y vs x '); plot(x,y,'o','MarkerSize',10,'MarkerEdgeColor','b','MarkerFaceColor','b') hold on plot(xin,yin,'o','MarkerSize',10,'MarkerEdgeColor','k','MarkerFaceColor','k') hold on plot(xplot,yplot,'LineWidth',2) legend('Points given','Points found','Polynomial Curve') hold off disp(' ') maka outputnya:

ABSTRACT This program shows you how to find the value of 0.25 by polynomial interpolation? NAMA : DIAH AYU RETNANI W NIM: 10/308840/PTK/07017 INPUTS The x data

y if x is

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

The x values where you want to find the interpolated values xin = 0.2500 m = 4 OUTPUTS x values at which function is to be interpolated xin = 0.2500 y values at the xin values yin = 11.8078 These are the coefficients of the polynomial interpolant pp(1) is coefficient of x^m, pp(2) is coefficient of x^(m-1) and so on Order of polynomial m =4 pp = 1.0e+003 * -2.7500 4.2833 -2.3775 0.5777 -0.0402

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 :

1. Penyelesaian akhir didapat sebagai berikut:

ALGORITMA Dari 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 dengan jumlah data = jumlah titiknya. Dengan dua array akan lebih mudah mengatur perilaku data didalam program. Bisa juga menggunakan 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 i 3. Dari i = 1 s.d b Cari Qi(x) Cari Qi(xi) Cari Li(x) Cari P(x) PEMROGRAMAN Listing programnya sebagai berikut: clc;clear; %membangun objek simbolik x syms x; %menginputkan banyaknya titik b=input('Banyak titik = '); %menginputkan masing-masing titik for i=1:b fprintf('x%d',i) bx(i)=input(' = '); fprintf('y%d',i) by(i)=input(' = '); end clc; %menampilkan titik-titik yang sudah diinputkan ke layar

clc; disp('Titik-titik yang diketahui adalah sebagai berikut:'); for i=1:b fprintf('(%d,%1.1f)',bx(i),by(i)); end %inisialisasi fx fx=0; fprintf('\n\n'); disp('Nilai masing-masing L(x)'); % mulai proses pencarian q(x), qx1, lx, dan px for i=1:b %inisialisasi qx qx=1; %perulangan untuk mencari qx for j=1:b if (i~=j) qx=qx*(x-bx(j)); end end %mencari qx1 dengan substitusi x ke gx qx1=subs(qx,x,bx(i)); %mencari lx lx=qx/qx1; lx1=collect(lx); %menampilkan lx fprintf('L%d(x) = ',i); disp(lx1); %mencari fx fx=fx+by(i)*lx; end %menyederhanakan fx menjadi px dan menampilkan ke layar px=collect(fx); fprintf('Hasilnya = '); disp(px); Program diatas digunakan untuk menyelesaikan dua permasalahan yang sudah dibahas diatas. Permasalahan pertama untuk 3 titik diketahui. Inputnya sebagai berikut : Banyak titik = 3 x1 = 1 y1 = -1 x2 = 3 y2 = 0.5 x3 = 4 y3 = 0

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+2 L2(x) = -1/2*x^2+5/2*x-2 L3(x) = 1/3*x^2-4/3*x+1 Hasilnya = -5/12*x^2+29/12*x-3 Permasalahan kedua, untuk empat titik diketahui Inputnya sebagai berikut: Banyak titik = 4 x1 = 0 y1 = 1 x2 = 1 y2 = 2 x3 = 3 y3 = 4 x4 = 6 y4 = -1 Input 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+1 L2(x) = 1/10*x^3-9/10*x^2+9/5*x L3(x) = -1/18*x^3+7/18*x^2-1/3*x L4(x) = 1/90*x^3-2/45*x^2+1/30*x Hasilnya = -4/45*x^3+16/45*x^2+11/15*x+1 Output 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

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 dicocokkan dengan 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 didenisikan sebagai

Persamaan-persamaan di atas adalah rekursif, yaitu beda orde lebih tinggi dihitung dengan mengambil beda dari orde lebih rendah. Seperti contoh soal pada metode interpolasi sebelumnya, diketahui nilai X=[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:

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 terbagi hasil = zeros(N+1,N+3); hasil(:,1) = [0:N]'; % iterasi hasil(:,2) = X'; % nilai x hasil(:,3) = Y'; % nilai y for j=4:N+3 for i=1:N+3-(j-1) % beda terbagi orde 1,2, ..., n-1 hasil(i,j) = (hasil(i+1,j-1)-hasil(i,j-1))/(hasil(j+i-3,2)-hasil(i,2)); end end Tabel = 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^N for i = N:-1:1 K = [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 polinomial xsim = X(1):0.1:X(end); for k=1:length(xsim) ysim(k) = sum(K'.*xsim(k).^([N:-1:0]')); end plot(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]

xi = 0.2500 Kemudian 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 0 K= 1.0e+003 * -2.7500 4.2833 -2.3775 0.5777 -0.0402 yi = 11.8078 Dengan bentuk grafik:

You might also like