Thursday, May 16, 2013

Metode Eliminasi Gauss Jordan

Metode Eliminasi Gauss Jordan, Metode ini adalah modifikasi dari metode Metode Eliminasi Gauss. Bedanya pada metode ini nilai akar penyelesaian akan langsung ditemukan. Metode ini tidak hanya menjadikan diagonal bawah menjadi nol namun juga merubah diagonal atas menjadi nol, dengan cara ini hasil dari semua variabel akan langsung tampak. Inilah keunggulan Metode Gauss daripada Metode Gauss Jordan.

Source code dari metode ini
lebih rumit dari metode Gauss namun jangan pernah menyerah, karena setelah kesulitan ada kemudahaan. Berikut ini source code dan algoritma metode eliminasi gauss jordan yang saya buat.

Algoritma :
  1. Masukan jumlah ordo matriks;
  2. Masukan semua elemen matriks;
  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. i=1;
  11. j=1;
  12. Simpan nilai matrik baris j-1 kolom i dalam variabel temp
  13. k=i;
  14. Setiap elemen matrik baris j-1 kolom k dikurangi temp dikali elemen matrik baris i kolom k
  15. k++;
  16. Kembali ke 13, jika k <=jumlah ordo naikan nilai i; kembali ke langkah 11
  17. Jika i kurang dari or, keluar dari perulangan;
  18. Cetak semua elemen matriks.


#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 JORDAN");
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];
}
}
}
puts("");
//hitung
for(i=0;i<or;i++){ //gauss
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];
}
}
}
for(i=1;i<or;i++){ //gauss jordan
for(j=1;j<=i;j++){
temp2[j] = x[j-1][i];
for(k=i;k<=or;k++){
x[j-1][k] -= temp2[j] * x[i][k];
}
}
}
//cetak
for(i=0;i<or;i++){
printf("|");
for(j=0;j<or+1;j++){
printf("%5.1f", x[i][j]);
}
printf("  |\n");
}
for(i=0;i<or;i++){
printf("nilai x%d = %5.1f \n",i+1, x[i][or] );
}
}

Hasilnya keluarannya seperti ini


gauss jordan

Sekian ilmunya untuk hari ini, semoga bermanfaat. Bagikan keteman-teman Anda, karena berbagi itu menyenangkan.
" "~

Artikel Terkait metode numerik

10 comments:

  1. Tinggal ditambah Google Adsense blognya mantap dan bagus banget...
    Ane siap buat bantu mendaftar Google Adsense gan, kunjungi http://adsensemurahterpercaya.blogspot.com

    ReplyDelete
  2. artikel.n informatif & penuh ilmu... . nice post gan... .

    kunbal & kombal jg y gan di
    nurulhedayat.blogspot.com

    ReplyDelete
  3. itu source code/listing programnya salah.

    ReplyDelete
  4. yg bagian bawahnya //tukar
    itu for nya memang < 3 atau harusnya < or ??

    ReplyDelete
  5. itu sudah benar Gan,,kurang dari 3 karena mulai dari nol

    ReplyDelete
  6. gan ane nyoba pas dibagian
    for(j=k+1;j<n;j++){
    a[i][j]=faktor*[k][j];
    c[i]=faktor*c[k]
    kok salah ya?

    ReplyDelete
  7. bukanya or itu operator ya? dan nggak bisa di deklarasiin/ dijadiin variable?

    ReplyDelete