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 :
#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
Sekian ilmunya untuk hari ini, semoga bermanfaat. Bagikan keteman-teman Anda, karena berbagi itu menyenangkan.
" "~
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 :
- Masukan jumlah ordo matriks;
- Masukan semua elemen matriks;
- Jika matrik baris 1 kolom 1 == 0:tukar dengan baris lain;
- i=1;
- Bagi semua elemen matrik baris satu dengan elemen baris i kolom i;
- Simpan nilai baris selanjutnya kolom selanjutnya; (baris[i+1]kolom[i+1])
- 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];
- Naikan nilai i +1;
- Kembali ke langkah 5 sampai i sma dengan ordo
- i=1;
- j=1;
- Simpan nilai matrik baris j-1 kolom i dalam variabel temp
- k=i;
- Setiap elemen matrik baris j-1 kolom k dikurangi temp dikali elemen matrik baris i kolom k
- k++;
- Kembali ke 13, jika k <=jumlah ordo naikan nilai i; kembali ke langkah 11
- Jika i kurang dari or, keluar dari perulangan;
- 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
" "~
Artikel Terkait metode numerik
- Metode Eliminasi Gauss persamaan linier Simultan
- Algoritma, Source Code Metode Secant
- Algoritma Source Code Metode Tabel
- Mencegah Konvergen Metode Newton Raphson
- Metode Newton Raphson, Algoritma dan Source Code
- Pengertian, Algoritma, dan Source Code Metode Iterasi
- Pengertian, Algoritma, Source Code Metode Regula Falsi
- Pengertian, Algoritma, dan Source Code Metode Biseksi
- Metode Eliminasi Gauss Jordan
Tinggal ditambah Google Adsense blognya mantap dan bagus banget...
ReplyDeleteAne siap buat bantu mendaftar Google Adsense gan, kunjungi http://adsensemurahterpercaya.blogspot.com
artikel.n informatif & penuh ilmu... . nice post gan... .
ReplyDeletekunbal & kombal jg y gan di
nurulhedayat.blogspot.com
itu source code/listing programnya salah.
ReplyDeleteyang salah bagian mana?
ReplyDeleteyg bagian bawahnya //tukar
ReplyDeleteitu for nya memang < 3 atau harusnya < or ??
itu sudah benar Gan,,kurang dari 3 karena mulai dari nol
ReplyDeletegan ane nyoba pas dibagian
ReplyDeletefor(j=k+1;j<n;j++){
a[i][j]=faktor*[k][j];
c[i]=faktor*c[k]
kok salah ya?
jangan menyerah Gan,, dicoba lagi
Deletebukanya or itu operator ya? dan nggak bisa di deklarasiin/ dijadiin variable?
ReplyDeletenge run nya di DevC ya???
Delete