Gaussian Elimination C++ Program
Gaussian Elimination C++ Program
berikut source code yang sudah aku jelaskan dalam listing code nya juga
Library yang di butuhkan C++
#include <iostream> #include <math.h> #include <cmath>
Source Code nya
/* * Gauss Method * NIM : 17615006 * Yogi Arif Widodo */ #define MAX 15 using namespace std; void lineYogi() { cout <>n; system("cls"); lineYogi(); //========================== cin.ignore(); //for clear of line by cin ordoMatrik = atoi(n); //because here line converting have linespace hrLine(); cout <<"TIP :\tJika ordo matrix (n) = 2, maka masukan matrix 4x\n\tcontoh Input Untuk Matrik A = 1 2 3 4 (gunakan spasi)\n"; cout <<" \tLalu masukan Vektor 2x \n"; cout <<" \tContoh Input Untuk vector = 1 2 (gunakan spasi) "; hrLine(); cout <<"ordo matrix yang dipakai : " <>elemen; cin.ignore();//for clear of line by cin A[i][j] = atof(elemen);//because here line converting have linespace } cout <<"\n\t\tInput untuk Vektor B = "; for(i = 0; i < ordoMatrik; i++) { // printf("\nElemen baris ke-%d ", i+1); // cout <<"\nElemen baris ke-" <>elemen; cin.ignore();//for clear of line by cin B[i] = atof(elemen);//because here line converting have linespace } // // getch(); hrLine(); cout<<"\tAugmenting matrik A dan B: "; hrLine(); for(s = 0; s < ordoMatrik; s++) { for(t=0; t <= ordoMatrik; t++) { if(t != ordoMatrik) AugA[s][t] = A[s][t]; else AugA[s][t] = B[s]; } } cout<<"\n\tMatrik Augmented A\n"; designFormView(); //designYogi for(i = 0; i < ordoMatrik; i++) { for (j = 0; j < ordoMatrik+1; j++) { // printf("%f ",AugA[i][j]); cout <<"\t"<>backOrExit; if (backOrExit == 'y' || backOrExit =='Y') { system("cls"); goto HOMEYOGI; } else { system("EXIT"); } }
Jika code di atas ada yang error alasannya yakni block code bertabrakan dengan format posting blogger , silahkan lihat versi github di bawah ini :
Github Code Version
https://github.com/yogithesymbian/c-/blob/master/linearSimultan/gaussYogiMethod.cpp
Berikut Penjelasan format c language yang bila di c++ tinggal panggil saja dengan library iostream.
example :
di C language printf("X%d: %.2f\n", i+1, X[i]);
di C++ language cout <<"\tX" <<i+1 <<":" <<X[i] <<endl;
Kode Format | Kegunaan |
---|---|
%c | Membaca sebuah karakter |
%d | Membaca sebuah nilai integer decimal |
Untuk Code Format Scanf Selengkpanya ada di : SCANF FORMAT WIKIPEDIA
C Language Code Version
Library yang di butuhkan C Lanugage
#include <stdio.h> #include <conio.h> #include <stdlib.h>
C Language Code
int main(void) { int ordoMatrik, i, j, s, t, nx, k; float A[MAX][MAX], B[MAX], AugA[MAX][MAX], X[MAX], C, sum, temp; char n[MAX], elemen[MAX]; printf("Masukkan ordo matrik (n): "); gets(n); ordoMatrik = atoi(n); printf("\nInput untuk Matrik A\n"); for(i = 0; i < ordoMatrik; i++) for (j = 0; j < ordoMatrik; j++) { printf("Elemen %d%d: ", i+1, j+1); gets(elemen); A[i][j] = atof(elemen); } printf("\nInput untuk Vektor B"); for(i = 0; i < ordoMatrik; i++) { printf("\nElemen baris ke-%d ", i+1); gets(elemen); B[i] = atof(elemen); } getch(); printf("Augmenting matrik A dan B: "); for(s = 0; s < ordoMatrik; s++) { for(t=0; t <= ordoMatrik; t++) { if(t != ordoMatrik) AugA[s][t] = A[s][t]; else AugA[s][t] = B[s]; } } printf("\nMatrik Augmented A\n"); for(i = 0; i < ordoMatrik; i++) { for (j = 0; j < ordoMatrik+1; j++) printf("%f ",AugA[i][j]); printf("\n"); } //Proses pertukaran baris, Jika nilai aii bernilai nol for(i = 0;i < ordoMatrik; i++){ if (AugA[i][i] == 0) { for(j = 0; j < ordoMatrik; ++j){ if(j == i) continue; if(AugA[j][i] != 0) { //tukar baris matrik for(s = 0; s <= ordoMatrik; s++){ temp = AugA[i][s]; AugA[i][s] = AugA[j][s]; AugA[j][s] = temp; }break; } else continue; }break; } else continue; } printf("\nMatrik A (Setelah Pertukaran) \n"); for(i = 0; i < ordoMatrik; i++) { for (j = 0; j < ordoMatrik+1; j++) printf("%f ",AugA[i][j]); printf("\n"); } //Proses Operasi Baris Elementer for(i=0; i < ordoMatrik; i++) for(j = i+1; j < ordoMatrik; j++) { C = AugA[j][i] / AugA[i][i]; for(k = 0; k <= ordoMatrik; k++) AugA[j][k] = AugA[j][k] - C*AugA[i][k]; //AugA[j][k]=0; } printf("\nMatrik A (Setelah OBE) \n"); for(i = 0; i < ordoMatrik; i++) { for (j = 0; j < ordoMatrik+1; j++) printf("%f ",AugA[i][j]); printf("\n"); } //Mencari nilai variabel Xi X[ordoMatrik-1]=AugA[ordoMatrik-1][ordoMatrik]/AugA[ordoMatrik-1][ordoMatrik-1]; for(nx=0; nx < ordoMatrik;nx++) { sum = 0; i = ordoMatrik-1-nx; for(j = i+1; j < ordoMatrik; j++) sum = sum + AugA[i][j] * X[j]; X[i] = (AugA[i][ordoMatrik]-sum)/AugA[i][i]; } //Menampilkan nilai variabel xi printf("\n"); for(i = 0; i < ordoMatrik; i++) printf("X%d: %.2f\n", i+1, X[i]); getch(); }
Sumber https://scodeid.blogspot.com/