News Update :
Hot News »
Bagikan kepada teman!

Integrasi Numerik

Penulis : A. S. Rohman on Jumat, 12 April 2013 | 07.58

Jumat, 12 April 2013

Diketahui data dari suatu fungsi sebagai berikut
X
0     1     -2     2
Y
-1     3      2     5
1.       Berdasarkan data disamping  tentukan Turunan fungsi f’(0), untuk meneliti kebenaran gunakan fungsi diff dan gunakan posisi beda tengah
a)      Tentukan fungsi disamping tersebut dengan fungsi DifDifNewton
b)      Dengan menggunkan beda tengah, tentukan turunan di  dengan
c)       Perbandingan turunan fungsi jika menggunakan fungsi diff pada MATLAB
2.       Cari hampiran integral fungsi pada interval [-1,3] dengan n=5 dengan menggunakan
a.       Program dengan Metode Romberg
b.       Bandingkan dengan mengecek dengan menggunakan fungi Int



Pembahasan Bagian 1

a.      Progranm menentukan fungsi  berdasar data diatas pada command window
Command Window
function f = newdiff(x,y)
A = divdiff(x,y); %memanggil fungsi lain
syms z
n = length(x);
temp = A(1,n); %penamaan sementara
for i = n-1:-1:1,
   temp = temp*(z - x(i)) + A(1,i);
end
f = temp;

Kemudian jika program sudah selesai, maka dapat dipanggil pada command window dengan menuliskan data sebagai berikut:
Command Window
>> X =[0 1 -2 2];
>> Y =[-1 3 2 5];
>> syms x
>> f = newdiff(X,Y)
      f =
          - x*(((17*x)/24 - 5/12)*(x - 1) - 4) - 1



b.       Turunan fungsi dengan menggunakan beda tengah di di  dengan
Command Window
>> (subs(f,z,0.1)-subs(f,z,-0.1))/0.2
      ans =
            3.5763


c.        Perhitungan dengan  turunan fungsi jika menggunakan fungsi diff pada MATLAB
Command Window
>> subs(diff(f,z),z,0)                                                                                             
ans =
    3.5833


Kesimpulan:
Berdasarkan hasil perhitungan diatas, dapat dilihat bahwa perhitungan dengan menggunkan metode beda tengah diperoleh hasil turunan di   adalah 3.5763 tetapi dengan mensubstitusikan langsung pada hasil turunnya diperoleh 3.5833. Terlihat terjadi galat (kesalahan) dari kedua hasil perhitungan yaitu
Galat = Hasil sebenarnya- hasil pendekatan
                                                               = 3.5833-3.5763
                                                               = 0.0070



Pembahasan Bagian 2
a.      Menentukan hampiran fungsi diatas  berdasar data diatas pada interval [-1,3] dengan n=5 dengan menggunakan Metode Romberg
Command Editor
function r = romberg(f,a,b,n)
syms x
h = b-a;
r(1,1) = (h/2)*(subs(f,x,a)+subs(f,x,b));
for i = 1:n,
    h = h/2;
    total = 0;
    for k = 1:2:(2^i)-1,
        total = total + subs(f,x,a+k*h);
    end
    r(i+1,1) = (1/2)*r(i,1)+total*h;
    for j = 1:i,
        r(i+1,j+1) = r(i+1,j)+(r(i+1,j)-(r(i,j)))/(4^(j)-1);
    end
end

untuk memanggil program diatas pada command window terlebih dahulu harus menuliskan sebagai berikut: 

Command Window
 
>> metoderomberg(f,-1,3,5)

ans =

   -4.0000         0         0         0         0         0
    4.0000    6.6667         0         0         0         0
    6.0000    6.6667    6.6667         0         0         0
    6.5000    6.6667    6.6667    6.6667         0         0
    6.6250    6.6667    6.6667    6.6667    6.6667         0
    6.6563    6.6667    6.6667    6.6667    6.6667    6.6667


b.      Bandingkan dengan mengecek fungsi Int
Command Window
>> int(f,-1,3)
     ans =
             20/3
>> 20/3
     ans =             
                       6.6667
6.6667

Kesimpulan:
Berdasarkan hasil perhitungan diatas, dapat dilihat bahwa perhitungan dengan menggunkan metode Romberg diperoleh hasil adalah 6.6667 tetapi nilai sebenarnya adalah  6.6667, dari hasil yang didapat tidak terjadi galat, tetapi sebenarnya ada galat jika data yang dimunculkan nilai dibelakang komanya lebih dari 4 bilangan.

komentar | | Read More...

Metode Newton Raphson


function fsNewtonRaphson(f,a,n,tol)
% ----------- FUNGSI Newton Raphson ---------------
% variabel f :fungsi f(x)
%          a :nilai awal yang didefinisikan
%          n :banyaknaya iterasi
%          toll: nilai toleransi (epsiolon) yang membatasi iterasi
syms x
N=[];
x0 = a;
tur_f = diff(f,x);
for i=1:n,
    fx=subs(f,x,x0);
    tur_fx=subs(tur_f,x,x0);
    xi=x0-(fx/tur_fx);
    N=[N; i, x0, xi,fx];
    if abs(fx)<tol,
        break;
    end
    x0=xi;
end
N

% ----------------------------------------------------------------------
% Untuk memanggil di Command  Window
% Pilih nilai awal untuk mencari akar a=2, n=10 dan toll=10^(-5)
% syms x;
% f=x^2-1
% f =
% x^2 - 1
% fsNewtonRaphson(f,2,10,1e-5)

N =

    1.0000    2.0000    1.2500    3.0000
    2.0000    1.2500    1.0250    0.5625
    3.0000    1.0250    1.0003    0.0506
    4.0000    1.0003    1.0000    0.0006
    5.0000    1.0000    1.0000    0.0000

komentar | | Read More...

Metode Regula Falsi


function fsposisisalah(f,a,b,n,toll)
% ----------- FUNGSI BAGI DUA (BISECTION)----------
% variabel f :fungsi,
%          a :batasan titik awal yang mengafit akar c
%          b :batasan titik akhir yang mengafit akar c
%          n :anyaknaya iterasi
%          tll: nilai toleransi (epsiolon) yang membatasi iterasi
syms x;
N=[];
    disp('---------------------------------------------------------------------');
    fprintf('\t interval \t a\t\t  c \t\t b \t\t fa \t\t fc \t fb\t\n');
    disp('---------------------------------------------------------------------');
    for i=1:n,                      % i bergerak dari i sampai n
        fa=subs(f,x,a);             % fa = f(a)
        fb=subs(f,x,b);             % fb = f(b)
        c=b-(fb*(b-a)/(fb-fa));
        fc=subs(f,x,c);             % fc = f(c)
        N=[N;i a c b fa fc fb];
        if fa*fc<0                  % f(a).f(c) < 0 maka
            b=c;                    % interval akar ada di [a,c]
        else                        % sebaliknay jiak f(b).f(c) < 0 maka
            a=c;                    % interval akar ada di [c,b]
        end
        if abs(b-a)<toll            % iterasi berenti ketika |b-a|< epsilon
            break;                  % epsilon=toll --> didef. diawal
        end
    end
    N
% -------------------------------------------------------------------------
% Untuk memanggil di Command  Window
% Pilih interval [a,b]=[2,3] dan n=25 dan toll=10^(-6)
% >> syms x;
% >> f=x^3-3*x-5    
% fsbisection(f,2,3,25,1e-6)

>> fsposisisalah(f,2,3,100,1e-6)
interval         a               c               b         fa            fc             fb           
------------------------------------------------------------------------------------------
    1.0000    2.0000    2.1875    3.0000   -3.0000   -1.0950   13.0000
    2.0000    2.1875    2.2506    3.0000   -1.0950   -0.3518   13.0000
    3.0000    2.2506    2.2704    3.0000   -0.3518   -0.1084   13.0000
    4.0000    2.2704    2.2764    3.0000   -0.1084   -0.0329   13.0000
    5.0000    2.2764    2.2782    3.0000   -0.0329   -0.0100   13.0000
    6.0000    2.2782    2.2788    3.0000   -0.0100   -0.0030   13.0000
    7.0000    2.2788    2.2789    3.0000   -0.0030   -0.0009   13.0000
    8.0000    2.2789    2.2790    3.0000   -0.0009   -0.0003   13.0000
    9.0000    2.2790    2.2790    3.0000   -0.0003   -0.0001   13.0000
   10.0000    2.2790    2.2790    3.0000   -0.0001   -0.0000   13.0000

komentar | | Read More...

Metode Bagi Dua

Penulis : A. S. Rohman on Selasa, 12 Maret 2013 | 07.22

Selasa, 12 Maret 2013

Metode Bagi Dua (Metode Bisection) merupakan suatu metode  tertutup, artinya suatu metode yang digunakan untuk menenukan akar suatu fungsi diantara dua titik pada sumbu x. Misalkan diketahui r (akar yang belum dikathui)  dari suatu fungsi f(x) yang kontinu, menentukan akar dengan metode bagi dua adalah 
  • pertama tebakan awal tentukan dua buah titik a dan b pada sumbu x dengan (a<b)
  • nilai akar r=c dari suatu fungsi f(x) terletak diantara interval [a,b] yang berlaku c=(a+b)/2
  • jika fa=f(a) dan fb=f(b) berlaku fa*fb>0 maka proses mencari akar gagal
  • jika fa=f(a) dan fb=f(b) berlaku fa*fb<0 maka proses mencari berlanjut dengan b=c atau fb=fc, jika tidak a=c atau fa=fc
  • proses ini berlanjut terus menerus sampai nilai dari |b-a|< toleransi yang diberika diawal
Algoritman Metode Bagi Dua (Bisection)
  1. set c=(a+b)/2
  2. jika fc=0 maka x=c adalah solusi eksak dari suatu fungsi yang akan dicari
  3. jika fa.fc<0 maka solusi terletak pada interval (a,c)
  4. jika fa.fc>0 maka solusi terletak pada interval (c,b)
  5. dengan mengganti interval (a,b) dengan salah satu dari (a,c) atau (c,b) yang mengandung akar persamaan, kesalahan mencari akar persamaan f(x)=0 secara rata-rata  setengah dari jarak interval tersebut
  6. pengulangan dilakukan samapai solusi eksak ditemukan
Kelebihan Metode Bagi Dua (Bisection)
  • metode bisection sangat sederhana
  • selalu konvergen
Kelemahan Metode Bagi Dua (Bisection)
  • harus menebak dua titik
  • kekonvergenan relatif lambat
  • jika pada selang diamati terdapat akar yang sama (double root) atau closely spaced roots, metode bagi dua memberikan hasil yang tidak akurat
Program Metode Bagi Dua (Bisection) dalam MATLAB

function fsposisisalah(f,a,b,n,toll)
% ----------- FUNGSI BAGI DUA (BISECTION)----------
% variabel f :fungsi,
%          a :batasan titik awal yang mengafit akar c
%          b :batasan titik akhir yang mengafit akar c
%          n :anyaknaya iterasi
%          toll: nilai toleransi (epsiolon) yang membatasi iterasi
syms x;
N=[];
    disp('----------------------------------------------------------------');
    fprintf('\t interval \t a\t\t  c \t\t b \t\t fa \t\t fc \t fb\t\n');
    disp('----------------------------------------------------------------');
    for i=1:n,                      % i bergerak dari i sampai n
        fa=subs(f,x,a);             % fa = f(a)
        fb=subs(f,x,b);             % fb = f(b)
        c=b-(fb*(b-a)/(fb-fa));
        fc=subs(f,x,c);             % fc = f(c)
        N=[N;i a c b fa fc fb];
        if fa*fc<0                  % f(a).f(c) < 0 maka
            b=c;                    % interval akar ada di [a,c]
        else                        % sebaliknay jiak f(b).f(c) < 0 maka
            a=c;                    % interval akar ada di [c,b]
        end
        if abs(b-a)<toll            % iterasi berenti ketika |b-a|< epsilon
            break;                  % epsilon=toll --> didef. diawal
        end
    end
    N
% -------------------------------------------------------------------------
% Untuk memanggil di Command  Window
% Pilih interval [a,b]=[2,3] dan n=25 dan toll=10^(-6)
% >> syms x;
% >> f=x^3-3*x-5    
% fsbisection(f,2,3,25,1e-6)


Outputnya:

>> fsbisection(f,2,3,25,1e-6)
--------------------------------------------------------------------------------------------------------------------------------------
                 interval              a                      c                          b                          fa                      fc                          fb       
--------------------------------------------------------------------------------------------------------------------------------------
N =
    1.0000         2.0000             2.5000                  3.0000            -3.0000               3.1250            13.0000
    2.0000         2.0000             2.2500                  2.5000            -3.0000              -0.3594             3.1250
    3.0000         2.2500             2.3750                  2.5000            -0.3594               1.2715             3.1250
    4.0000         2.2500             2.3125                  2.3750            -0.3594               0.4290             1.2715
    5.0000         2.2500             2.2813                  2.3125            -0.3594               0.0281             0.4290
    6.0000         2.2500             2.2656                  2.2813            -0.3594              -0.1673             0.0281
    7.0000         2.2656             2.2734                  2.2813            -0.1673              -0.0700             0.0281
    8.0000         2.2734             2.2773                  2.2813            -0.0700             -0.0211              0.0281
    9.0000         2.2773             2.2793                 2.2813            -0.0211               0.0035              0.0281
   10.0000       2.2773              2.2783                 2.2793            -0.0211              -0.0088             0.0035
   11.0000       2.2783              2.2788                 2.2793            -0.0088              -0.0026             0.0035
   12.0000       2.2788              2.2791                 2.2793            -0.0026               0.0004              0.0035
   13.0000       2.2788              2.2789                 2.2791            -0.0026              -0.0011             0.0004
   14.0000       2.2789              2.2790                 2.2791            -0.0011              -0.0003             0.0004
   15.0000       2.2790              2.2790                 2.2791            -0.0003               0.0000             0.0004
   16.0000       2.2790              2.2790                 2.2790            -0.0003              -0.0001            0.0000
   17.0000       2.2790              2.2790                 2.2790            -0.0001              -0.0001            0.0000
   18.0000       2.2790              2.2790                 2.2790            -0.0001              -0.0000            0.0000
   19.0000       2.2790              2.2790                 2.2790            -0.0000                0.0000           0.0000
   20.0000        2.2790            2.2790                  2.2790            -0.0000               0.0000            0.0000
Akar yang diperoleh:
Dari tabel diatas terlihat bahwa akarnya diperoleh ketika nilai f(c) = 0, sehingga akar persamaan tersebut adalah 2.2790 yang diperoleh pada iterasi ke-20
komentar (1) | | Read More...
Website counter
 
Company Info | Contact Us | Privacy policy | Term of use | Widget | Advertise with Us | Site map
Copyright © 2011. map . All Rights Reserved.
Design Template by panjz-online | Support by creating website | Powered by Blogger