Saturday, April 13, 2013

Pengertian, Algoritma, dan Source Code Metode Iterasi

metode iterasi
Hello Sobat blogger. Beberapa hari yang lalu saat  mata kuliah Metode Numerik aku dapat materi Metode Iterasi Sederhana. Kali ini aku akan berbagi mengenai Metode Iterasi sederhana. Metode Iterasi Sederhana adalah metode yang digunakan untuk mencari akar dari persamaan kuadrat dengan memisalkan nilai y = 0, kemudian memisahkan nilai x satu dengan x yang lainnya sehingga memunculkan fungsi yang baru, misal :

metode iterasi

Fungsi baru ini digunakan
untuk mencari nilai x yang pertama. Kemudian nilai tersebut dimasukan kedalam fungsi x (f(x)). Lihat contoh dibawah ini :
            Misal x awal (x0) = 0 à x awal merupakan nilai input awal(terserah sobat).
            Nilai x0 dimasukan kedalam persamaan g(x) (persamaan untuk mencari nilai x) hasil dari gx kemudian dimasukan dalam fungsi f(x), jika nilai absolut f(x) mendekati 0, maka nilai dari x adalah  adalah akar dari persamaan.
Untuk lebih jelasnya perhatikan algoritma berikut :
  1.  Inisialisasi fungsi f(x) = x + e, g(x)= - e, dan g’(x) = - e;
  2. Inisialisasi String s;
  3.  Inisialisasi int n, i  = 1;
  4.  Inisialisasi double x0, fx, gx, g’x;
  5.   Tentukan nilai awal (x), toleransi error, dan banyak iterasi maksimal;
  6.  Temp = x
  7.  x = g(x);
  8.   fx = f(x);
  9.  g’(x) = g’(temp)
  10.   temp = x;
  11.   jika fx > 0 dan fx <1 data-blogger-escaped-:="" data-blogger-escaped-monoton="" data-blogger-escaped-s="“Konvergen" data-blogger-escaped-span="">
  12. jika fx> -1 dan fx <0 data-blogger-escaped-:="" data-blogger-escaped-berisolasi="" data-blogger-escaped-s="“Konvergen" data-blogger-escaped-span="">
  13.   jika fx > 1 : s = “Divergen Monoton”;
  14.   selain itu : s = “Divergen Berisolasi”;
  15. Cetak x, fx, g’x dan s;
  16.   Naikan +1  nilai i;
  17. x = g(x);
  18.  apakah i < n atau nilai absolut fx < e?;
  19.   Ya : keluar perulangan;
  20. Tidak : kembali ke ke 8.  
      Listing program :
#include
#include
#include

double fungsif (double);
double fungsig (double);
double diffungsig(double);
main(){
       double x0=-1,tempx, fx0,fx1, e=0.001;
       int n=10, i=1, status;
       char *s="";
      
       puts("\t\tMETODE ITERASI");
       puts("\t\t  f(x)=x+e^x");
       printf("Masukan nilai x0       : ");
       scanf("%lf", &x0);
       printf("Masukan nilai error    : ");
       scanf("%lf", &e);
       printf("Masukan jumlah iterasi : ");
       scanf("%d", &n);

       tempx = x0;
       x0 = fungsig(x0);
       puts("=================================================================");
       printf("| n |    gx     |     fx    |   dif gx   |       status         |\n");
       puts("=================================================================");

       while (i<=n){
              fx0 = fungsif(x0);
              fx1 = diffungsig(tempx);
              tempx=x0;
             
              if(fx1> 0 && fx1<1 data-blogger-escaped-o:p="">
                     s = "Konvergen Monoton";
              else if (fx1>-1 && fx1<0 data-blogger-escaped-o:p="">
                     s = "Konvergen berisolasi";
              else if (fx1>1){
                     s = "Divergen Monoton";
                     status = 0;
              }
              else {
                     s = "Divergen Berisolasi";
                     status = 1;
              }

              printf("|%2d | %8lf | %9lf |  %lf | %20s |\n",i ,x0, fx0, fx1,s);
              x0 = fungsig (x0);
              i++;
             
              if(fx0<0 data-blogger-escaped-o:p="">
                     fx0 = fx0*-1;
              if(fx0
                     break;
       }
       puts("=================================================================");
}
double fungsif (double a){
       double hasil;
       hasil =a + exp(a);
       return hasil;
}
double fungsig (double b ){
       double hasil2;
       hasil2 = - exp(b);
       return hasil2;
}
double diffungsig(double c){
       double hasil3;
       hasil3 = -exp(c);
       return hasil3;
}

Output:
metode iterasi, metode numerik

Sekian sobat blogger untuk post hari ini..nantikan ilmu-ilmu yang berikutnya. Berbagi itu memang menyenangkan!

"Usaha tanpa henti adalah kunci membuka gembok pontensi diri bukan kekuatan atau kecerdasan." ~Winston Churchill


Artikel Terkait c ,metode numerik ,tutorial

No comments:

Post a Comment