Wednesday, May 1, 2013

Metode Eliminasi Gauss persamaan linier Simultan

Metode Eliminasi Gauss adalah salah satu metode numerik yang menerapkan eliminasi untuk mencari nilai variabel dari beberapa persamaan. Metode ini mengubah beberapa persamaan menjadi bentuk matrik. Kemudian dari bentuk matrik ini dilakukan eliminasi sehingga diperoleh satu variabel bebas. Berikut adalah algoritma dan source code metode eliminasi gauss :
Algoritma :

  1. Masukan jumlah ordo matriks; 
  2.  Masukan semua elemen matriks;3.       
  3. Jika matrik baris 1 kolom 1 == 0:tukar dengan baris lain;
  4. i=1;
  5. Bagi semua elemen matrik baris satu dengan elemen baris i kolom i;
  6. Simpan nilai baris selanjutnya kolom selanjutnya; (baris[i+1]kolom[i+1])
  7. Setiap elemen dari baris selanjutnya sampai baris sama dengan ordo dikurangi dengan nilai pada baris [i+1]kolom[i+1] dikali baris[i+1][i];
  8. Naikan nilai i +1;
  9. Kembali ke langkah 5 sampai i sma dengan ordo
  10. Cetak semua elemen matriks.
 Source code :
#include <stdio.h>
#include <math.h>
#define maks 20

main (){
    float x[maks][maks], tempx[maks][maks], temp2[maks], temp;
    int i,j,or=3, k=0;
    char a='`';

    puts("\t\tMETODE GAUSS ");
    puts("\t    ax1 + bx2 + cx3 + .... =y");
   
    do{
    printf("Masukan jumlah ordo matrik : ");
    scanf("%d", &or);
    }while(or<2);

    for(i=0;i<or;i++){
        printf("persamaan ke-%d\n", i+1);
        for(j=0;j<or;j++){
            printf("nilai %c : ",a+j+1);
            scanf("%f", &x[i][j]);
            if(j==or-1){
                printf("nilai y : ");
                scanf("%f", &x[i][j+1]);
                break;
            }           
        }
    }
    printf("Dalam bentuk augmented matriks\n");
    for(i=0;i<or;i++){
        printf("|");
        for(j=0;j<or+1;j++){
            printf("%5.1f", x[i][j]);
        }
        printf("  |\n");
    }
    //tukar
    for(i=0;i<3;i++){
        if(x[0][0]==0){
            for(j=0;j<or+1;j++){
                tempx[i][j]=x[0][j];
            }
            for(j=0;j<or+1;j++){
                x[0][j]=x[i+1][j];
            }
            for(j=0;j<or+1;j++){
                x[i+1][j]=tempx[i][j];
            }           
        }
    }
    //hitung
    for(i=0;i<or;i++){
        temp=x[i][i];
        for(k=i;k<=or;k++){
            x[i][k] /= temp;
        }       
        for(j=i+1;j<=or;j++){
            temp2[i] = x[j][i];           
            for(k=i;k<=or;k++){
                x[j][k] -= temp2[i] * x[i][k];
            }
        }       
    }
    puts("");
    //cetak
    printf("Setelah eliminasi : \n");
    for(i=0;i<or;i++){
        printf("|");
        for(j=0;j<or+1;j++){
            printf("%5.1f", x[i][j]);
        }
        printf("  |\n");
    }
    puts("");
}

untuk contoh mari kita cari akar dari persamaan di bawah ini :
x1 + x2 + x3 = 6
x1 + 2x2 -x3 = 2
2x1 + x2 + 2x3 = 10
Maka outputnya akan seperti berikut :
metode gauss
Sekian untuk ilmu hari ini. Bagikan ke orang-orang yang Anda kenal karena berbagi itu menyenangkan.
"Penghargaan merupakan satu pendorong utama yang membuat manusia tetap bergerak"~Andrew Fuller

Artikel Terkait metode numerik

7 comments: