SELAMAT DATANG


SELAMAT DATANG DI BLOG SAYA...
TERIMA KASIH ATAS KUNJUNGAN NYA...

Friday, April 20, 2012

Tugas kelompok Medote numerik

Coding :

clear all;
clc;
disp('+--------------------------------------------------------+');
disp('+                  Persamaan Tak Linear                  +');
disp('+--------------------------------------------------------+');
disp('                             Tugas Kelompok Ketode Numerik');
disp('                                       by : Kelompok Fauzi');
disp('Menu Pilihan');
disp('1. Metode Regula Falsi');
disp('2. Metode Biseksi');
disp('3. Metode Secant');
disp('4. Metode Newton-Raphson');
disp('5. Metode Tabel');
disp('6. Metode Iterasi');
disp('7. SOAL 1');
disp('8. SOAL 2');
disp('9. SOAL 3');
disp('');

pilih=input('Masukan nomor pilihan [1-9] :');

switch pilih
   
    case 1
        % Metode Regula Falsi
        clc;
        clear;
        disp('Program Metode Regula Falsi');
        disp('=============================');
        disp('Untuk Contoh Persamaan : xe^(-x)+1');
        disp('Persamaan Ditulus: x*exp(-x)+1');
        disp('range x= [-1,0]');

        %deklarasi awal
        f=input('Silakan masukkan persamaan f(x): ');
        a=input('Masukkan batas bawah = ');
        b=input('Masukkan batas atas = ');
        epsilon=input('Masukkan nilai toleransi error= ');
        N=input('Masukkan jumlah iterasi maksimum = ');
        E=abs(a-b);

        fprintf('---------------------------------------------------------------------------\n')
        fprintf('   i        a            b         x          f(x)         f(a)         f(b)\n ')
        fprintf('---------------------------------------------------------------------------\n')

        %Perulangan
        i=0;
        while (E>epsilon & i<N )
           i=i+1;
           fprintf('%5.0f%12.7f%12.7f',i,a,b);
           fa=subs(f,x,a); %Persamaan : xe^(-x)+1=0, dimana x dimasukan batas bawah(a)
           fb=subs(f,x,b); %Persamaan : xe^(-x)+1=0, dimana x dimasukan batas atas(b)
           x = (fb*a-fa*b)/(fb-fa); %Rumus Regula Falsi
           fx= x*exp(-x)+1; %Masukkan x yang didapat kedalam persamaan
           if (fx*fa<0)     %Kondisi jika fx dan fa berlainan tanda/ hasil kali negatif
              b=x;
              fb=fx;
           else             %Jika tidak
               a=x;
               fa=fx;
           end
           E=abs(b-a);      %Selisih batas atas dan bawah baru
           fprintf('%12.7f%12.7f%12.7f%12.7f\n', x,fa,fx,f(b));
        end

        disp('----------------------------------------------------------------------------')

        fprintf('Akarnya adalah = %12.7f\n');

       
    case 2
        % Metode Biseksi
        clc;
        clear;
        disp('Metode Biseksi ');
        disp('===============');
        disp('Untuk Contoh Persamaan : xe^(-x)+1');
        disp('Persamaan yang ditulis: x*exp(-x)+1');
        disp('Batas x= [-1,0]');
   
        %Deklarasi awal
        syms x;
        f=input('persamaan f(x): ');
        a=input('batas atas : ');
        b=input('batas bawah : ');
        et=input('Masukkan Nilai Toleransi Error  : ');
        t=abs(b-a);
        cAwal=a;
        cAkhir=b;
      
        disp(' i      a       b       c       f(a)       f(b)       f(c)     E');
        disp('----------------------------------------------------------------');

        %Perulangan
        i=1;
        while (t > et ) & (cAwal ~= cAkhir) ;
            fa=subs(f,x,a);
            %Mensubtitusikan f sbg fungsi, x sbg variabel yang digunakan,
            %a sbg variabel yang nilainya kan dimasukkan kedalam x
            fb=subs(f,x,b);
            %Mensubtitusikan f sbg fungsi, x sbg variabel yang digunakan,
            %b sbg variabel yang nilainya kan dimasukkan kedalam x
            cAwal=cAkhir;
            c=(a+b)/2; %Rumus Biseksi
                cAkhir=c;
                fc= subs(f,x,c);
            fprintf('%3.0f %6.4f %6.4f %12.10f %7.4f %7.4f %7.4f %7.4f \n', i, a, b, c, fa, fb, fc, e);
            if fa*fc < 0
                b=c;
            else
                a=c;
            end
            t=abs(b-a);
            i=i+1;

        end
        disp('jadi, akar persamaan yang diperoleh adalah');
        fprintf('%3.8f',fc);

       
    case 3
        %Metode Secant
        clc;
        clear;
        disp('Program Metode Secant');
        disp('======================');
        disp('Penyelesaian untuk Persamaan : x^2-(x+1)e^(-x)=0');
        disp('Pendekatan awal yang dicoba (fx0) yaitu 0.8');
       

        %deklarasi awal     
        disp('penyelesaian dengan algoritma Secant');
        x0=input('masukkan nilai pendekatan awal : ');       
        epsilon=input('Masukkan Nilai Toleransi Error  : ');
        N=input('Masukkan jumlah iterasi maksimum : ');
        x1=x0+1;
        E=abs(x0-x1);
       
           
        fprintf('----------------------------------------------------------------------------\n')
        fprintf('   i        x0          x1         fmid          f(xO)         f(X)        E\n ')
        fprintf('----------------------------------------------------------------------------\n')
       
        %perulangan
        i=0;
        while (E>epsilon & i<N )
            i=i+1;
            fprintf('%5.0f%12.7f%12.7f',i,x0,x1);
            fx0= x0^2-(x0+1)*exp(-x0); %Persamaan tak linear tuk pendekatan awal
            fx1= x1^2-(x1+1)*exp(-x1); %Persamaan tak linear tuk pendekatan selanjutnya
            xi =(x1-(fx1*(x1-x0))./(fx1-fx0)); %Rumus metode secant
            fxi= xi^2-(xi+1)*exp(-xi);
            if (fx0*fxi >0)
               x0=xi;
            else
               x1=xi;
            end
            E=abs(x1-x0);
            fprintf('%12.7f%12.7f%12.7f%12.7f\n', xi,fx0,fxi,E);
        end
        disp('------------------------------')
        fprintf('Akarnya Adalah = %10.8f\n',xi);
   
   
    case 4
         % Metode Newton Rhapson
        clc;
        dlear;
        disp('Program Metode Newton Raphson');
        disp('=============================');
        disp('- persamaan yang digunakan adalah f(x)=e^x-5x^2');
        disp('- dengan nilai e=0.00001');
       
        %Deklarasi awal
        E=0.00001; %Toleransi error
        x0=input('Masukkan Tebakan awal  :');
        i=0;
        M=9;
        xb=0;
        disp('________________________________________________');
        disp(' i           xi          f(xi)     epsilon');
        disp('_______________________________________________');

        %Perulangan
        while (E<M)
            fx=exp(x0)-5*x0^2; %rumus f(x)=e^x-5x^2
            gx=exp(x0)-10*x0;  %Turunan dari f(x)
            xb=x0-(fx/gx);  %rumus Newton Rhapson
            M= abs(x0-xb);  %selisih batas atas dan bawah 
            x0=xb;
            i=i+1;
            fprintf('%3.0f %12.6f %12.6f %12.6f\n',i,xb,fx,M);
        end
        disp('------------------------------')
        fprintf('Akarnya Adalah = %10.8f\n',xb);
        %Cetak akar
     
       
  case 5
      %Metode Tabel
      clear all,clc;
      disp('Program Metode Tabel');
      disp('=============================');
      disp('- persamaan yang digunakan adalah f(x)=x+e^x');
      disp('- dengan range x=[-1,0]');
     
      %Deklarasi
      bawah =input('masukkan Batas Bawah (nilai terendah) : ');
      atas =input('masukkan Batas Ats (nilai tertinggi) : ');
      tengah=atas-bawah/10; %rumus metode tabel
      disp('nilai dibagi 10 bagian : ');
      disp('=');
      fx=0;
     
      %Perulangan
      for x=1:11
          x=bawah;
          disp([('nilai-nilai x    : ') num2str(x)]);
          %rumus x
         
          f=x+exp(x);
          disp([('nilai-nilai f(x) : ') num2str(f)]);
          disp('=');
          %rumus f(x)
       
          if x==0;
              disp('nilai ini adalah nilai yang mendekati 0')
              disp([('jadi nilai persamaan non linearnya adalah : ') num2str(fx)]);
          end
          %nilai yang mendekati 0 adalah hasilnya
         
          x=bawah+tengah;
          bawah=x;         
        end

        disp('nilai yang mendekati 0 adalah f(x) ') ;
        disp([('dengan nilai jangkauan antara      : ') num2str(bawah) (' dan ') num2str(atas)]);
    
       
    case 6
        clear all,clc;
        disp('Program Metode Iterasi Sederhana');
        disp('================================');
        disp('- persamaan yang digunakan adalah fx = x^2-2x-3');
        disp('- dengan Tebakan awal 4');

        x0 = input ('nilai tebakan awal = ');
        e = input ('nilai toleransi error = ');
        N=0;
         disp('_______________________________________________');
        disp(' i           4           1       error');
        disp('_______________________________________________');

        %Perulangan
        i=1;
        for (i = 1 : 100)
            xr = sqrt((2.*x0)+3);
            fx = (xr.^2)-(2.*xr)-3;
            N = xr - x0;
            if (N < 0)
                N = -N;
            else
                N = N;
            end
            x0 = xr;
            fprintf('%3.0f %12.6f %12.6f %12.6f\n',i,x0,N,e);
            i=i+1;
            if N > e
                continue ;
            else
             break ;  
            end
        end
        disp('------------------------------')
        fprintf('Akarnya Adalah = %10.8f\n',x0);
        %Cetak akar
    case 7
        %dak tau   
    case 8
        %SOAL KURANG JELAS, PERSAMAAN TIDAK DIKETAHUI
        disp('%SOAL KURANG JELAS, PERSAMAAN TIDAK DIKETAHUI ');
    case 9
        % SOAL 3
        clc;
        clear;
        disp('SOAL 3');
        disp('=============================');
        disp('- persamaan yang digunakan adalah f(x)=x^2 + e^(-2x)');
        disp('- pada range [0, 10]');
       
        %Deklarasi awal
        E=0.0001; %Toleransi error
        x0=input('Masukkan Tebakan awal akar :');
        i=0;
        M=9;
        xb=0;
        x=x0;
        disp('_______________________________________________');
        disp(' i           xi          f(xi)     epsilon');
        disp('_______________________________________________');

        %Perulangan
        while (E<M)
            fx=x^2+exp(-2*x)*sin(x);                     %rumus persamaan
            gx=2*x+exp(-2*x)*sin(x)+exp(-2*x)*cos(x);    %Turunan dari rumus fx diatas
            xb=x-(fx/gx);                                %rumus Newton Rhapson
            M= abs(x-xb);
            x=xb;
            i=i+1;
            fprintf('%3.0f %12.6f %12.6f %12.6f\n',i,xb,fx,M);
        end
        disp('------------------------------')
        fx0=x0^2+exp(-2*x0)*sin(x0);
        fprintf('Nilai Pucaknya Adalah = %10.8f\n',fx0);
        %Cetak akar
       
       otherwise
        disp('Maaf,  Data yang anda input tidak diketahui ');
        return ;

end;
    
      Hasil :




 

No comments:

Post a Comment

Search This Blog

Bola mania