Pages

Friday, 25 October 2019

Menu Perjumlahan Matriks, Perkalian, Invers, dan Determinan pada Matriks || Pemograman Java


PERJUMLAHAN MATRIKS 
Syarat Perjumlahan matriks adalah Ordo kedua matriks yang dijumlahkan harus sama. 
Contoh : 


(Main.java)
package menumatriks;
import java.util.*;
public class Main {
    public static void main(String[] args) {
     int pilih;

        Scanner input = new Scanner(System.in);
        do {
        System.out.println("-------* M A T R I K S *--------");
        System.out.println("1. Perjumlahan Matriks");
        System.out.println("2. Perkalian Matriks");
        System.out.println("3. Invers Matriks");
        System.out.println("4. Determinan Matriks");
        System.out.println("5. Keluar");
        System.out.print("Masukkan Pilihan anda (1-5) = ");
        pilih = input.nextInt();

        if(pilih==1)
        {
        Proses Q = new Proses();
        Q.tambah();
        }
        else if(pilih == 2)
        {
        Proses1 P = new Proses1();
        P.Kali();
        }
        else if(pilih ==3)
        {
        Proses3 S = new Proses3();
        S.Invers();
        }
        else if (pilih == 4)
        {
        Proses2 R = new Proses2();
        R.Determinan();
        }
        } while (pilih>0 && pilih<5);       
    }
}

(Proses.java)
package menumatriks;
import java.util.*;

public class Proses {
    public void tambah(){
     int [][] MatriksA;
     int [][] MatriksB;
     int [][] MatriksC;

     int Baris;
     int Kolom;
     Scanner input = new Scanner(System.in);
     System.out.println("---* MATRIKS PERJUMLAHAN *---");
        do {
            System.out.print("Jumlah Baris    = ");
            Baris = input.nextInt();

            System.out.print("Jumlah Kolom    = ");
            Kolom = input.nextInt();

            System.out.println();
            MatriksA = new int [Baris][Kolom];
            MatriksB = new int [Baris][Kolom];
            MatriksC = new int [Baris][Kolom];
        } while (Baris != Kolom);

        System.out.println("MATRIKS A");
        for(int i=0;i<Baris;i++){
            for(int j=0;j<Kolom;j++){
                System.out.print("Matriks A[" +i+ "][" +j+ "] = ");
                int isiMatriks = input.nextInt();
                MatriksA[i][j] = isiMatriks;
            }
        }

        System.out.println("MATRIKS B");
        for(int i=0;i<Baris;i++){
            for(int j=0;j<Kolom;j++){
                System.out.print("Matriks B[" +i+ "][" +j+ "] = ");
                int isiMatriks = input.nextInt();
                MatriksB[i][j] = isiMatriks;
            }
        }

        //Hitung Perjumlahan Matriks A dengan Matriks B 
        for( int i=0; i<Baris; i++ ){
            for (int j=0; j<Kolom; j++){
                MatriksC[i][j] = MatriksA[i][j] + MatriksB[i][j];
            }
        }
       
        //Tampil Matriks A
        System.out.println("Matriks A");
        for( int i=0; i<Baris; i++ ){
            for (int j=0; j<Kolom; j++){
            System.out.print(MatriksA[i][j]+ "  ");
            }
            System.out.println();
        }
           
        //Tampil Matriks B
        System.out.println("Matriks B");
        for( int i=0; i<Baris; i++ ){
            for (int j=0; j<Kolom; j++){
            System.out.print(MatriksB[i][j]+ "  ");
            }
            System.out.println();
        }
           
        //Tampil Hasil penjumlahan Matriks A dengan Matriks B
        System.out.println("Hasil Penjumlahan Matriks A dengan Matriks B = ");
        for( int i=0; i<Baris; i++ ){
            for (int j=0; j<Kolom; j++){
            System.out.print(MatriksC[i][j]+ "  ");
            }
            System.out.println();
        }
    }
}


PERKALIAN MATRIKS 
Syarat 2 Buah Matriks dapat dikalikan jika banyak kolom matriks pertama harus sama dengan banyaknya baris matriks kedua. 

Source code Perkalian Matriks menggunakan Bahasa Pemrograman Java dapat dilihat dibawah ini :

(Proses1.java)
package menumatriks;
import java.util.*;
public class Proses1 {
    public void Kali(){
    Scanner input=new Scanner(System.in);
        int ordo,c,d;
        System.out.println("---* MATRIKS PERKALIAN *---");
        System.out.print("Masukkan ordo matriks  : ");
        ordo=input.nextInt();
        int matriks1[][]=new int[ordo][ordo];
        int matriks2[][]=new int[ordo][ordo];
        System.out.println("\n Matriks A");
        for(c=0;c<matriks1.length;c++){
            for(d=0;d<matriks1[c].length;d++){
                System.out.print("Elemen Matriks A pada Baris ke- "+(c+1)+" Kolom ke- "+(d+1)+" : ");
                matriks1[c][d]=input.nextInt();
            }
        }
        System.out.println("\n Output Matriks A : ");
        for(c=0;c<matriks1.length;c++){
            System.out.print(" [ ");
            for(d=0;d<matriks1[c].length;d++){
                System.out.print(" "+matriks1[c][d]);
                }
            System.out.println(" ] ");
            }
            System.out.println("\n Matriks B");
            for(c=0;c<matriks1.length;c++){
                for(d=0;d<matriks1[c].length;d++){
                System.out.print("Elemen Matriks B pada Baris ke- "+(c+1)+" Kolom ke- "+(d+1)+" : ");
                matriks2[c][d]=input.nextInt();
                }
            }
                System.out.println("\n Output Matriks B : ");
            for(c=0;c<matriks1.length;c++){
                System.out.print(" [ ");
                for(d=0;d<matriks1[c].length;d++){
                System.out.print(" "+matriks2[c][d]);
                }
            System.out.println(" ] ");
            }
            System.out.println("\n Hasil Kali Matriks A dengan Matriks B : ");
            int matriksHasil[][]=hasilKaliMatriks(matriks1,matriks2);
            cetakHasil(matriks1,matriks2,matriksHasil,'*');
                }
    public static int[][] hasilKaliMatriks(int [][]matriks1,int [][]matriks2){
        int hasil[][]=new int[matriks1.length][matriks2[0].length];
        for(int i=0;i<hasil.length;i++){
            for(int j=0;j<hasil[0].length;j++){
                for(int k=0;k<matriks1[0].length;k++){
                    hasil[i][j]+=matriks1[i][k]*matriks2[k][j];
                }
            }
        }
        return (hasil);
    }

    public static void cetakHasil(int[][]matriks1,int matriks2[][],int matriks3[][],char p){
            for(int i=0;i<matriks1.length;i++){
                for(int j=0;j<matriks1[0].length;j++){
                    System.out.print("  "+matriks1[i][j]);
                }
                if(i==matriks1.length/2)
                    System.out.print(" "+p+" ");
                    else
                        System.out.print("   ");
                for(int j=0;j<matriks2[0].length;j++){
                    System.out.print("  "+matriks2[i][j])
;               }
                if(i==matriks1.length/2)
                    System.out.print(" =");
                    else
                        System.out.print("  ");
                for(int j=0;j<matriks3[0].length;j++){
                    System.out.print("  "+matriks3[i][j]);
                }
                System.out.println();
            }
    }
}


INVERS MATRIKS 

Suatu matriks dapat dibalik jika dan hanya jika matriks tersebut adalah matriks persegi (matriks yang berukuran n x n) dan matriks tersebut non-singular (determinan   0). Tidak semua matriks memiliki invers. Jika A adalah suatu matriks kuadrat, dan jika kita dapat mencari matriks B sehingga AB = BA = I, maka A dikatakan dapat dibalik (invertible) dan B dinamakan invers dari A 

Source code Java untuk Invers Matriks dapat dilihat dibawah ini : 
(Proses2.java)

package menumatriks;
import java.util.*;
public class Proses3 {
    public void Invers(){
        Scanner in = new Scanner (System.in);
        int baris,kolom,hasil;
        System.out.println("---* INVERS MATRIKS *---");
        System.out.print("masukkan jumlah baris : ");
        baris = in.nextByte();
        System.out.print("masukan jumlah kolom : ");
        kolom = in.nextInt();
        System.out.println("data pada matriks ");
        int matriks[][]=new int[baris][kolom];
        for (int i=0;i<baris;i++){
            for(int j=0;j<kolom;j++){
                System.out.print("data pada baris ke- "+i+" kolom ke- "+j+" : ");
            matriks [i][j]=in.nextInt();
            }
        }
        System.out.println();
        System.out.println("matriks sebelum diInvers");
        for (int i=0;i<baris;i++){
            for (int j=0;j<kolom;j++){
                System.out.print(matriks[i][j]+" ");
            }
        }
        //proses invers
        float determinan=(matriks[0][0]*matriks[1][1])-(matriks[1][0]*matriks[0][1]);
        System.out.println("Determinanya Adalah                 : "+determinan);
        int temp = matriks[0][0];
        matriks[0][0]=matriks[1][1];
        matriks[1][1]= temp;
        matriks[0][1]=matriks[0][1]*-1;
        matriks[1][0]=matriks[1][0]*-1;
        System.out.println("Invers dari matriks tersebut adalah     : ");
        for (int i=0;i<2;i++){
        System.out.print("|");
        for (int j=0;j<2;j++)
        {
        System.out.print(matriks[i][j]/determinan+"   ");
        }
        System.out.println("|");
        }
    }
}




DETERMINAN MATRIKS 
Source code Java untuk Determinan Matriks 
(Proses3.java)

package package menumatriks;
import java.util.Scanner;
public class Proses2 {
    public void Determinan(){
        System.out.println("---* DETERMINAN MATRIKS *---");
        System.out.println("Syarat Matriks determinan adalah Ordo = n x n");
        System.out.print("Masukkan nilai n = ");
        Scanner s = new Scanner(System.in);
        try{
            int n = s.nextInt();
            int i,j;
            double data[][] = new double [n][n];
            for(i=0;i<n;i++){
                for(j=0;j<n;j++){
                    System.out.print("Masukkan nilai Matriks ke-["+i+"]["+j+"] = ");
                    data[i][j]=s.nextDouble();
                }
            }
            double d=det(data);
            System.out.print("_____________________________");
            System.out.println("\n Maka Determinan Matriks = "+d);
        }
        catch (Exception e){
            System.out.println("Nilai n harus  lebih besar dari 0");
        }
    }

    public static double det(double [][]data){
      double result=0;
       if(data.length==1){
            result=data[0][0];
            return result;
        }
        else if(data.length == 2){
            result=data[0][0]*data[1][1]-data[0][1]*data[1][0];
            return result;
        }
        for(int i=0;i<data[0].length;i++){
            double temp[][]= new double[data.length-1][data[0].length-1];
            for(int j=1;j<data.length;j++){
                for(int k=0;k<data[0].length;k++){
                    if(k<i){
                        temp[j-1][k]=data[j][k];
                    }else if (k>i){
                        temp[j-1][k-1]=data[j][k];
                    }
                }
            }
            result+=data[0][i]*Math.pow(-1, (double)i)*det(temp);
        }
        return result;
    }
}

Selamat mencoba :)