Kamis, 31 Januari 2013

Invers matriks dengan Bahasa JAVA

import java.io.*;
import javax.swing.*;
class invers2
{ 
	public static void main(String[]args) throws Exception 
	{ 
	BufferedReader input=new BufferedReader(new InputStreamReader (System.in)); 
	System.out.println("<<<<<>>>>>>>"); 
	System.out.println("Input Elemen-Elemen Matriks."); 
	int matrik[][]=new int[3][3]; 
	for (int i=0;i<3;i++) 
	{ 
		for (int j=0;j<3;j++) 
		{ 
		System.out.print("Input Elemen Matriks ke ["+(i+1)+","+(j+1)+"]: "); 
		matrik[i][j]=Integer.parseInt(input.readLine()); 

		} 
	} 
	System.out.println(); 
	System.out.println("Matriks 3x3 : ");
	for (int i=0;i<3;i++) 
	{ 
		System.out.print("| "); 
		for (int j=0;j<3;j++) 
		{ 
			System.out.print(matrik[i][j]+" "); 
		} 
		System.out.println("|"); 
	} 

	
	
		
	
	
	//adjoin matriks
	int temp[][]=new int[3][3]; 
	temp[0][0]=matrik[1][1]* matrik[2][2]-matrik[2][1]*matrik [1][2];
	temp[0][1]=matrik[1][0]* matrik[2][2]-matrik[2][0]*matrik [1][2];
	temp[0][2]=matrik[1][0]* matrik[2][1]-matrik[1][1]*matrik [2][0]; 
	temp[1][0]=matrik[0][1]* matrik[2][2]-matrik[0][2]*matrik [2][1];
	temp[1][1]=matrik[0][0]* matrik[2][2]-matrik[0][2]*matrik [2][0];
	temp[1][2]=matrik[0][0]* matrik[2][1]-matrik[0][1]*matrik [2][0];
	temp[2][0]=matrik[1][1]* matrik[2][2]-matrik[1][2]*matrik [2][1];
	temp[2][1]=matrik[0][0]* matrik[1][2]-matrik[0][2]*matrik [1][0];
	temp[2][2]=matrik[0][0]* matrik[1][1]-matrik[0][1]*matrik [1][0];
	
	System.out.println ();
	System.out.println ("Adjoin Matriks : ");
	for (int i=0;i<3;i++) 
	{ 
		System.out.print("| "); 
		for (int j=0;j<3;j++) 
		{ 
			System.out.print(temp[i][j]+" "); 
		} 
		System.out.println("|");
		
		
	
	}
	System.out.println(); 

	int dtr=((matrik[0][0]*matrik[1][1]*matrik[2][2] + (matrik[0][1]*matrik[1][2] * matrik[2][0])+
		(matrik[0][2]*matrik[1][0]*matrik[2][1]))-(matrik[0][1]*matrik[1][0]*matrik[2][2] + 
		(matrik[0][0] * matrik[1][2] * matrik[2][1])+(matrik[0][2]*matrik[1][1]*matrik[2][0])));
	System.out.println("Determinan Matriks= "+dtr); 
	System.out.println(); 
	
	
	if (dtr!=0)
	{
	temp[0][0]=temp[0][0]/dtr;
	temp[0][1]=temp[0][1]/dtr;
	temp[0][2]=temp[0][2]/dtr;
	temp[1][0]=temp[1][0]/dtr;
	temp[1][1]=temp[1][1]/dtr;
	temp[1][2]=temp[1][2]/dtr;
	temp[2][0]=temp[2][0]/dtr;
	temp[2][1]=temp[2][1]/dtr;
	temp[2][2]=temp[2][2]/dtr;
	
	System.out.println ();
	System.out.println ("Invers Matriks : ");
	for (int i=0;i<3;i++) 
	{ 
		System.out.print("| "); 
		for (int j=0;j<3;j++) 
		{ 
			System.out.print(temp[i][j]+" "); 
		} 
		System.out.println("|");
	}
	}
	else { 
			System.out.println("Tidak ada hasil inversnya, karena matriks Singular");
	}

	
	} 
}

Logika Program
                Pada praktikum kali ini kita membuat sebuah invers dari sebuah matriks berordo 3X3.Pada tahap pertama kita menuliskan import java.io.*; yang artinya adalah untuk emnerima inputan dan output dari sebuah program.Seadngkan import javax.swing.*; adalah untuk membangun komponen GUI.Selanjutnya adalah class invers2 yang artinya adalah sebuah nama kelas yang dideklarasikan pada sebuah program yang berisi objek dan karakteristik tertentu.Kemudian kita melangkah ke method yaitu public static void main(String[]args) throws Exception yang artinya adalah sebuah method dari program sedangkan ) throws Exception  adalah untuk mnghilangkan pesan-pesan error dari program. BufferedReader input=new BufferedReader(new InputStreamReader (System.in)); merupakan  untuk menerima input dan output pada saat di runtime nantinya.Selanjutnya adalah System.out.println("<<<<<>>>>>>>"); yang artinya adalah untuk mencetak tanda diantara kutip dua.
Setelah itu kitamelangkah ke program selanjutnya, yaitu System.out.println("Input Elemen-Elemen Matriks."); yang artinya adalah untuk mencetak dari kalimat diantara kutip dua.Setalah itu adalah int matrik[][]=new int[3][3]; yang artinya adalah untuk membuat matrik yang panjang paris 3 dan kolom 3.
                Setalah semua itu selesai kita selanjutnya masuk ke kondisi perulangan yaitu for (int i=0;i<3;i++) yang artinya adalah untuk i=0 dan i lebih kecil dari 3 maka i akan bertambah jumlah elemen yang diminta hingga i=3, hal tersebut pada baris dan untuk pada kolom adalah for (int j=0;j<3;j++) yang artinya adalah selama j=0 dan j lebih kecil dari 3 maka kolom bertambah otomatis hingga j=3.Selanjutnya adalah System.out.print("Input Elemen Matriks ke ["+(i+1)+","+(j+1)+"]: ") yang artinya adalah untuk mencetak elemen matriks yang diminta sesuai dengan perulangan yang telah diberikan. matrik[i][j]=Integer.parseInt(input.readLine()); adalah untuk membaca inputan yang telah dicetak pada layar nantinya yang merupakan tipe data integer. System.out.println(); adalah untuk mencetak  pada baris yang kosong dimana yang telah dibaca tadi.Selanjutnya adalah System.out.println("Matriks 3x3 : ");  yang artinya adalah untuk menncetak subjudul dari matriks 3X3.Setelah itu adalah for (int i=0;i<3;i++) yang artinya adalah sama dengan perulangan sebelumnya yaitu jika i=0 dan i lebih kecil dari 3 maka i meminta nputan terus menerus hingga i=3.Setelah itu adalah System.out.print("| "); yang artinya untuk mencetak pembatas dari elemen matriks, dan selanjutnya kita masuk juga ke perulangan dari kolom yaitu for (int j=0;j<3;j++)  yang artinya adalah jika j=0 da j lebih kecil dari 3 maka j akan meminta inputan hingga j=3. System.out.print(matrik[i][j]+" "); adalah untuk mencetak elemen dari matriks yang telah kita input. System.out.println("|"); adalah untuk me,memberi pembatas terakhir pada elemen matriks.
                Selanjutnya kita beranjak ke langkah selanjutnya untuk mencari adjoint dai matriks 3X3.Pada tahap pertama adalah int temp[][]=new int[3][3]; yang artinya adalah kita membuat tipe data integer baru dengan nama temp dan panjang baris dan kolom masing-masing 3.Pada langkah pertama kita menuliskan temp[0][0]=matrik[1][1]* matrik[2][2]-matrik[2][1]*matrik [1][2];
                temp[0][1]=matrik[1][0]* matrik[2][2]-matrik[2][0]*matrik [1][2];
                temp[0][2]=matrik[1][0]* matrik[2][1]-matrik[1][1]*matrik [2][0];
                temp[1][0]=matrik[0][1]* matrik[2][2]-matrik[0][2]*matrik [2][1];
                temp[1][1]=matrik[0][0]* matrik[2][2]-matrik[0][2]*matrik [2][0];
                temp[1][2]=matrik[0][0]* matrik[2][1]-matrik[0][1]*matrik [2][0];
                temp[2][0]=matrik[1][1]* matrik[2][2]-matrik[1][2]*matrik [2][1];
                temp[2][1]=matrik[0][0]* matrik[1][2]-matrik[0][2]*matrik [1][0];
                temp[2][2]=matrik[0][0]* matrik[1][1]-matrik[0][1]*matrik [1][0];
yang merupakan rumus dari mencari adjoint dari matriks berordo 3X3.Setalah itu kita melangkah ke codingan selanjutnya yaitu System.out.println (); yang artinya adalah untuk mencetak baris kosong.Selanjutnya adalah System.out.println ("Adjoin Matriks : "); yang artinya adalah untuk menuliskan subjudul dari adjoin dari matriks. for (int i=0;i<3;i++) adalah sebuah perulangan yang sama dengan perulangan yang telah kita berikan di baris sebelumnya dan begitu.Berikutnya adalah System.out.print("| "); untuk mencetak pembatas dari elemen matriks. for (int j=0;j<3;j++) adalah sama dengan perulangan yang telah kita lakukan di baris sebelumnya. System.out.print(temp[i][j]+" "); adalah untuk mencetak elemen dari adjoint matriks. System.out.println("|"); adalah untuk mencetak pembatas dari elemen matriks.
 int dtr=((matrik[0][0]*matrik[1][1]*matrik[2][2] + (matrik[0][1]*matrik[1][2] * matrik[2][0])+
                (matrik[0][2]*matrik[1][0]*matrik[2][1]))-(matrik[0][1]*matrik[1][0]*matrik[2][2] +
                (matrik[0][0] * matrik[1][2] * matrik[2][1])+(matrik[0][2]*matrik[1][1]*matrik[2][0])))
Codinga diatas merupakan rumus untuk mencari determinan dari matriks. System.out.println("Determinan Matriks= "+dtr); adalah untuk mencetak hasil dari operasi matriks yaitu determinan. System.out.println();  digunakan untuk membuat baris kosong. if (dtr!=0) adalah  sebuah percabangan dimana kondisinya adlah hasil determinan tidak sama dengan 0 maka kita proses dengan:
temp[0][0]=temp[0][0]/dtr;
                temp[0][1]=temp[0][1]/dtr;
                temp[0][2]=temp[0][2]/dtr;
                temp[1][0]=temp[1][0]/dtr;
                temp[1][1]=temp[1][1]/dtr;
                temp[1][2]=temp[1][2]/dtr;
                temp[2][0]=temp[2][0]/dtr;
                temp[2][1]=temp[2][1]/dtr;
                temp[2][2]=temp[2][2]/dtr;
Artinya adalah kita membagi setiap elemen dari adjoin dengan determinan. System.out.println (); adlah untuk mencetak baris kosong yang baru. System.out.println ("Invers Matriks : ");  adalah untuk mencetak subjudul dari invers matriks. for (int i=0;i<3;i++)  adalah sama dengan perulangan sebelumnya. System.out.print("| ");  adalah untuk mencetak dari pembatas awal dari matriks. for (int j=0;j<3;j++) sama dengan perulangan sebelumnya. System.out.print(temp[i][j]+" "); adalah untuk mencetak elemen dari hasil invers. System.out.println("|"); adalah untuk mencetak pembatas akhir dari elemen matriks. else { System.out.println("Tidak ada hasil inversnya, karena matriks Singular");  adalah membuat pernyataan bila invers matriks tidak ada.
Output Program

4 komentar:

Unknown mengatakan...

kita juga punya nih jurnal mengenai matriks, silahkan dikunjungi dan dibaca , berikut linknya
http://repository.gunadarma.ac.id/bitstream/123456789/4864/1/DOKUMEN%20PRESENTASI.pdf
semoga bermanfaat yaa :)

Balas

Anonim mengatakan...

bisa g kalo utk matriks 4x4?

tes mengatakan...

bisa....hanya saja metodenya lebih rumit dari metode diatas

nrz uyee mengatakan...

bisa di buatkan ordo 8x8 bang