Saturday, March 16, 2013

Contoh Program-program Metode Numerik

                                                  %Program Bisection
%input Program
f=input('masukan fungsi (dalam x)= ');
a=input('masukan batas bawah (a)= ');
b=input('masukan batas atas (b)= ');

%menghitung dan menyeleksi 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('masukan banyak interasi= ');
exact=input('masukan salah satu solusi eksak= ');

%Membuat Header Table Bisection
disp(' ')
disp('    METODE BAGIDUA     ')
disp('=======================')
disp('i    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 xr
    if fxr*fa>0                %Evaluasi letakxr pada [a,b]
        a=xr;
    elseif fxr*fa<0
        b=xr;
    end
    eror=abs(exact-xr);         %menghitung error absolut
    fprintf('%2.0f  %5.5f   %2.5f\n',i,xr,eror) %Mencetak bentuk tabel
end
%Membuat footer table bisection


disp('========================')


{----------------------------------------------------------------------------------------------------------}
%Program Fixed Point dengan Matlab Simbolik
%input program
g=input('Masukan fungsi g (dalam x)= ');
x0=input('Masukan nilai awal (x0)= ');
n=input('masukan banyak interasi= ');
exact=input('masukan salah satu solusi eksak= ');

%Membuat header fixed point
disp(' ')
disp('    fixed point      ')
disp('=======================')
disp('i    akar      error   ')
disp('=======================')

%Perulangan pada fixed point
for i=1:n
    gx0=subs(g,'x',x0);         % Menghitung nilai f(xi)
    xr=gx0;           % Menghitung akar dengan fixed point
    eror=abs(exact-xr);         % Menghitung error absolut
    fprintf('%2.0f  %5.5f   %2.5f\n',i,xr,eror)  %mencetak bentuk tabel
    x0=xr;                      % Mengganti harga xi dengan xr
end

% Membuat footer table fixed point
disp('===========================')


{----------------------------------------------------------------------------------------------------------}

%Program Regular False /Posisi salah
%input Program
f=input('masukan fungsi (dalam x)= ');
a=input('masukan batas bawah (a)= ');
b=input('masukan batas atas (b)= ');

%menghitung dan menyeleksi 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('masukan banyak interasi= ');
exact=input('masukan salah satu solusi eksak= ');

%Membuat Header Table reguler false
disp(' ')
disp('    METODE REGULAR FALSE     ')
disp('=============================')
disp('i       akar        error    ')
disp('=============================')

% Perulangan pada metode regular false
for i=1:n
    xr=b-((fb*(a-b))/(fa-fb));   %menghitung akar dengan regular false
    fxr=subs(f,'x',xr);        %menghitung harga fungsi xr
    if fxr*fa>0                %Evaluasi letakxr pada [a,b]
        a=xr;
    elseif fxr*fa<0
        b=xr;
    end
    eror=abs(exact-xr);         %menghitung error absolut
    fprintf('%2.0f  %5.5f   %2.5f\n',i,xr,eror) %Mencetak bentuk tabel
end
%Membuat footer table reguler false
disp('========================')

{-----------------------------------------------------------------------------------------------------------}

%Program Newton dengan Matlab Simbolik
clc;
%input program
f=input('Masukan fungsi (dalam x)= ');
x0=input('Masukan nilai awal (x0)= ');
n=input('masukan banyak interasi= ');
exact=input('masukan salah satu solusi eksak= ');

%Membuat header Table Newton
disp(' ')
disp('    METODE NEWTON      ')
disp('=======================')
disp('i    akar      error   ')
disp('=======================')

%Perulangan pada Metode Newton
for i=1:n
    fx0=subs(f,'x',x0);         % Menghitung nilai f(xi)
    fderx0=subs(diff(f),'x',x0); % Menghitung nilai f'(xi)
    xr=x0-fx0/fderx0;           % Menghitung akar dengan newton
    eror=abs(exact-xr);         % Menghitung error absolut
    fprintf('%2.0f  %5.5f   2.5f\n',i,xr,eror)  %mencetak bentuk tabel
    x0=xr;                      % Mengganti harga xi dengan xr
end

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


{---------------------------------------------------------------------------------------------------------}

%Program Secant dengan matlab simbolik
%input program
f= input('Masukkan fungsi (dalam x)= ');
x0= input('Masukkan nilai awal (x0) = ');
x1= input('Masukkan nilai awal (x1)= ');
n=input('Masukkan banyak iterasi = ');
exact = input('Masukkan salah satu solusi eksak = ');

%Membuat header table Secant
disp('  ')
disp('  METODE SECANT   ')
disp('==================')
disp('i   akar    error ')
disp('==================')

%perulangan pada metode secant
for i=1:n
    fx0=subs(f,'x',x0);             %menghitung nilai f(x0)
    fx1=subs(f,'x',x1);             % menghitung nilai f(x1)
    xr=x1-fx1*(x1-x0)/(fx1-fx0);    % menghitung akar dengan secant
    eror=abs(exact-xr);             % menghitung error absolut
    fprintf('%2.0f %5.5f %2.5f\n',i,xr,eror)    % mencetak bentuk tabel
    x0=x1;                          % mengganti nilai x0 x1 dan x1 = xr
    x1=xr;
end

%membuat footer table secant
disp('===================')


{----------------------------------------------------------------------------------------------------------}
        Thank's to : Bapak MASDUKI S.Si , M.Si  and  Bapak IKHSAN  DWI SETYONO, S.Pd.
{----------------------------------------------------------------------------------------------------------}

No comments:

Post a Comment