Eliminasi Gauss-Jordan untuk Invers Matrix dengan Java

Terkait dengan posting sebelumnya tentang algorithma eliminasi Gauss-Jordan, penulis mencoba mengimplementasikannya dengan bahasa pemrograman Java.

Untuk tahapan pembuatannya dapat dilihat pada video di bawah ini:



Sedangkan kode Java-nya adalah sebagaimana berikut:

package tutorialjava;
import java.text.DecimalFormat;
import java.util.Random;
/**
* @author Edugameapp
*/
public class TutorialJava
{
private double[][] A=new double[][]{
{0,-3,-2},
{1,-4,-2}, {-3,4,1}
};
private double[][] B;
public boolean cekDiagonal(int a)
{
if(a>10*A.length)return false;
for(int i=0;i<A.length;i++){
if(A[i][i]==0){
Random rand=new Random();
int k=(i+rand.nextInt(A.length))%A.length;
for(int j=0;j<A[0].length;j++){
double tmp=A[i][j];
A[i][j]=A[k][j];
A[k][j]=tmp;
B[i][j]=B[k][j];
tmp=B[i][j]; B[k][j]=tmp;
}
} return cekDiagonal(a+1); }
return true;
}
public void calculate()
{
B=new double[A.length][A[0].length];
for(int i=0;i<B.length;i++){
for(int j=0;j<B[0].length;j++){
if(i==j)B[i][j]=1.0;
else B[i][j]=0.0;
} }
cekDiagonal(0);
for(int k=0;k<A.length;k++){
double p=A[k][k];
if(p==0){
System.out.println("Cannot do calculation!");
return;
}
for(int j=0;j<A[0].length;j++){
A[k][j]/=p;
}
for(int i=k+1;i<A.length;i++){
p=A[i][k];
for(int j=0;j<A[0].length;j++){
A[i][j]-=A[k][j]*p;
B[i][j]-=B[k][j]*p;
}
} }
for(int k=A.length-1;k>=0;k--){
for(int i=k-1;i>=0;i--){
double p=A[i][k];
for(int j=A.length-1;j>=0;j--){
A[i][j]-=A[k][j]*p;
B[i][j]-=B[k][j]*p;
}
} }
DecimalFormat decimal=new DecimalFormat("0.0");
System.out.println("A=");
for(int i=0;i<B.length;i++){
for(int j=0;j<B[0].length;j++){
System.out.print(decimal.format(A[i][j])+" ");
}
System.out.println();
}
System.out.println("B=");
System.out.println();
for(int i=0;i<B.length;i++){
for(int j=0;j<B[0].length;j++){
System.out.print(decimal.format(B[i][j])+" ");
}
System.out.println();
} }
public static void main(String[] args) {
TutorialJava main=new TutorialJava();
main.calculate();
}
}

Komentar

  1. Pak, ini bisa langsung dipakai untuk matrik nxn yg besar g misal 19x19 ato lebih besar lagi?

    BalasHapus
  2. pak, saya coba cek dengan fungsi minverse di excel kok beda yah hasil invers nya?

    BalasHapus
    Balasan
    1. Hasil inverse matrix memang tidak cuma satu. Bisa berbeda. Yang penting jika dikalikan antara matrix asal dengan inverse-nya, hasilnya matrix identitas.

      Hapus

Posting Komentar



Postingan populer dari blog ini

Apps Script untuk Cetak Sertifikat

Cara Membuat Halaman HTML Sederhana

Apps Script untuk Copy File ke Folder berdasarkan ID yang Terdaftar di Google Sheets

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

Kebodohan Karyawan Menyalahkan Sistem

Checking Data yang Belum Dimasukkan dalam Daftar Menggunakan Query Google Sheet

Peringatan: Aksi Penipuan Skimming Melalui Aplikasi Android M-Pajak

Menghilangkan Karakter Baris Baru di Google Sheets dengan Apps Script

Menyikapi Ucapan AI Pejabat

Generate Karakter Acak dan Menempatkannya di Sel Google Sheets dengan Apps Script