Gaussian Elimination C++ Program
berikut source code yang sudah saya 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 digunakan : " <>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 karena 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 jika 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();
}