Eliminasi Gauss-Jordan untuk Invers Matrix dengan C++

Setelah mencoba menyelesaikan dengan Java dan Javascript, penulis juga mencoba mengimplementasi algoritma eliminasi Gauss-Jordan untuk mencari solusi invers matrix dengan bahasa C++.

Langkah pembuatannya adalah sebagaimana video di bawah ini:


Penulis menggunakan compiler C++ online yang beralamat di http://cpp.sh.

Dimana kekurangan dibanding dengan bahasa Java, karena tidak ada fungsi menghitung jumlah array atau dimensi matrix, sehingga program tidak bisa fleksibel.

Yaitu diperlukan peubahan secara manual, mulai dari jumlah matrix dan nilai matrixnya itu sendiri.

Sedangkan jika di Java, hanya perlu mengganti matrixnya saja.

Berikut ini kode C++ implementasi eliminasi Gauss-Jordan untuk menghitung invers matrix.
// Example program 
#include <iostream>
#include <string> int N=3; double A[3][3]={
{0,-3,-2},
{1,-4,-2},
{-3,4,1}
};
double Ainvers[3][3]; using namespace std; int cekDiagonal(int a); int main()
{
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
if(i==j)Ainvers[i][j]=1;
else Ainvers[i][j]=0;
}
} int a=cekDiagonal(0);
if(a==0){
cout<<"Cannot do calculation!"<<endl;
return 0;
} for(int k=0;k<N;k++){
double tmp=A[k][k];
if(tmp==0){
cout<<"Cannot do calculation!"<<endl;
return 0;
}
for(int j=0;j<N;j++){
A[k][j]/=tmp;
}
for(int i=k+1;i<N;i++){
tmp=A[i][k];
for(int j=0;j<N;j++){
A[i][j]-=A[k][j]*tmp;
Ainvers[i][j]-=Ainvers[k][j]*tmp;
}
}
}
for(int k=N-1;k>=0;k--){
for(int i=k-1;i>=0;i--){
double tmp=A[i][k];
for(int j=N-1;j>=0;j--){
A[i][j]-=A[k][j]*tmp;
Ainvers[i][j]-=Ainvers[k][j]*tmp;
}
}
} cout<<"A = "<<endl;
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
cout<<A[i][j]<<" ";
}
cout<<endl;
} cout<<endl;
cout<<"Ainvers = "<<endl;
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
cout<<Ainvers[i][j]<<" ";
}
cout<<endl;
}
} int cekDiagonal(int a){
if(a>10*N)return 0;
for(int i=0;i<N;i++){
if(A[i][i]==0){
int k=(i+rand()%N)%N;
for(int j=0;j<N;j++){
double tmp=A[i][j];
A[i][j]=A[k][j];
A[k][j]=tmp; tmp=Ainvers[i][j];
Ainvers[i][j]=Ainvers[k][j];
Ainvers[k][j]=tmp;
}
return cekDiagonal(a+1);
}
}
return 1;
}

Komentar



Postingan populer dari blog ini

Membuat Kalkulator Interpolasi Bilinear dengan Javascript

Seberapa Hebatkah Orang Dalam

Algorithma Tic Tac Toe dengan HTML5 Canvas

Perbedaan Sudut Pandang Dosen dan Karyawannya

Sedikit Pandangan tentang Pelatihan Bersertifikasi

Membuktikan Hasil Pendekatan Limit Menggunakan Algebra Equation Calculator

Menggambar Lingkaran Menyala dengan Efek Shadow

Jasa Penjadwalan Semester, UTS dan UAS Perguruan Tinggi menggunakan Google Sheet

Polygon Cloud Generator dengan HTML5 Canvas

Algorithma FPB dan KPK dengan Javascript