SELAMAT DATANG


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

Showing posts with label Matlab. Show all posts
Showing posts with label Matlab. Show all posts

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 :




 

Search This Blog

Bola mania