2012-12-23

Program Bisection (Metode Numerik)


Nama  : Taufik Fajar Gumilang
NIM   : A410100023



%Program Bisection dengan Matlab Simbolik
%Created by Taufik
clc;
%Input Program
f=input('Masukkan fungsi (dalam x) = ');
a=input('Masukkan batas bawah (a) = ');
b=input('Masukkan batas atas (b) = ');

%Menghitung dan Menyelesaikan Harga f(a) dan f(b)
fa=subs(f,'x',a);
fb=subs(f,'x',b);
if fa*fb>0
    error('Syarat f(a)*f(b)<0 tidak terpenuhi, ULANGI !!!')
    Return
end
n=input('Masukkan banyak iterasi = ');
exact=input('Masukkan salah satu solusi eksak = ');

%Membuat Header Table Bisection
disp(' ')
disp('  Interval    ||      METODE BAGIDUA       ||      falsi   ')
disp('============================================================')
disp(' i             akar          error akar          error      ')
disp('============================================================')

%Perulangan pada metode Bisection
for i=1:n
    xr=(a+b)/2;            %Menghitung akar dengan bisection
    fxr=subs(f,'x',xr);    %Menghitung harga fungsi pada xr
    if fxr*fa>0            %Evaluasi letak xr pada [a,b]
        a=xr;
    elseif fxr*fa<0
        b=xr;
    end
    eror=abs(exact-xr);    %Menghitung error absolut
    a1=a;
    b1=b;
    fa1=subs(f,'x',a1);
    fb1=subs(f,'x',b1);
    xr1=b1-(fb1*(a1-b1)/(fa1-fb1));
    fxr1=subs(f,'x',xr1);    %Menghitung harga fungsi pada xr
    if fxr1*fa1>0            %Evaluasi letak xr pada [a,b]
        a=xr1;
    elseif fxr*fa<0
        b=xr1;
    end
    fprintf('|%2.0f  (%5.5f, %5.5f)  %5.5f  %2.5f||%2.0f (%5.5f, %5.5f) %5.5f  %2.5f|\n',i,a,b,xr,eror,i,a1,b1,xr1,eror)   %mencetak bentuk tabel
end

%Membuat footer table bisection
disp('==============================')

Tidak ada komentar:

Posting Komentar