Java >> Java tutorial >  >> Java

Java-program til at udføre matrix multiplikation

I denne tutorial lærer vi, hvordan man udfører matrixmultiplikation. Men før du går videre, hvis du ikke er bekendt med begreberne for arrayet, så tjek artiklen Arrays in Java.

Nedenfor er den billedlige fremstilling af det samme.

Input:

Indtast antallet af rækker i den første matrix:3

Indtast antallet af kolonner i den første matrix:3

Indtast antallet af rækker i den anden matrix:3

Indtast antallet af rækker i den anden matrix:3

Indtast alle elementerne i den første matrix:1 2 3 4 5 6 7 8 9

Indtast alle elementerne i den anden matrix:9 8 7 6 5 4 3 2 1

Output:

Første matrix:

1 2 3

4 5 6

7 8 9

Anden matrix:

9 8 7

6 5 4

3 2 1

Resulterende matrix:

30 24 18

84 69 54

138 114 90

Program 1:Udfør matrixmultiplikation

I dette program vil vi udføre matrix multiplikation. Men for at matrixmultiplikation skal finde sted, skal antallet af kolonner i den første matrix være lig med antallet af rækker i den anden matrix.

Algorithme

  1. Start
  2. Deklarer variabler for matrixstørrelse.
  3. Initialiser antallet af rækker og kolonner for den første matrix.
  4. Initialiser antallet af rækker og kolonner for den anden matrix.
  5. Deklarer to matricer.
  6. Bed brugeren om at initialisere matricerne.
  7. Kald en metode til at gange de to matricer.
  8. Udskriv de to matricer.
  9. Tjek, om matrixmultiplikation er mulig eller ej.
  10. Hvis det er muligt, så opret en ny matrix for at gemme produktet af de to matricer.
  11. Gennemgå hvert element i de to matricer og gange dem.
  12. Gem dette produkt i den nye matrix ved det tilsvarende indeks.
  13. Udskriv den endelige produktmatrix.
  14. Hvis matrixmultiplikation ikke er mulig, så vis det samme.
  15. Stop.

Nedenfor er koden til det samme i Java-sproget.

/*Java Program to multiply two matrices*/
import java.util.Scanner;
public class Main
{
   // To print Matrix 
    static void printMatrix(int M[][], int rowSize, int colSize) 
    { 
        for (int i = 0; i < rowSize; i++) 
        { 
            for (int j = 0; j < colSize; j++) 
            {
                System.out.print(M[i][j] + " "); 
            }
  
            System.out.println(); 
        } 
    }   
    // To multiply two matrices a[][] and b[][] 
    static void multiplyMatrix(int p,int q, int a[][], int m, int n, int b[][]) 
    { 
        int i, j, k;   
        // Print the matrices A and B 
        System.out.println("First Matrix:");
        printMatrix(a, p, q); 
        System.out.println("Second Matrix:");
        printMatrix(b, m, n);   
        // Check if multiplication is Possible 
        if (m != q) 
        { 
            System.out.println("Multiplication Not Possible"); 
            return; 
        }   
        // Matrix to store the result 
        int c[][] = new int[q][n]; 
  
        // Multiply the two matrices 
        for (i = 0; i < p; i++) 
        { 
            for (j = 0; j < n; j++) 
            { 
                for (k = 0; k < m; k++) 
                    c[i][j] += a[i][k] * b[k][j]; 
            } 
        }   
        // Print the result 
        System.out.println("\nResultant Matrix:"); 
        printMatrix(c, p, n); 
    }   
   //Driver Code
    public static void main(String[] args) 
    {
        int p, q, m, n;    //Declare matrix size
        Scanner sc = new Scanner(System.in);
        System.out.print("Enter the number of rows in the first matrix:");
        p = sc.nextInt();    //Initialize first matrix size
        System.out.print("Enter the number of columns in the first matrix:");
        q = sc.nextInt();   //Initialize first matrix size
        System.out.print("Enter the number of rows in the second matrix:");
        m = sc.nextInt();   //Initialize second matrix size
        System.out.print("Enter the number of columns in the second matrix:");
        n = sc.nextInt();   //Initialize second matrix size
        int a[][] = new int[p][q];    //Declare first matrix
        int b[][] = new int[m][n];    //Declare second matrix            
            //Initialize the first Matrix
            System.out.println("Enter all the elements of first matrix:");
            for (int i = 0; i < p; i++) 
            {
                for (int j = 0; j < q; j++) 
                {
                    a[i][j] = sc.nextInt();
                }
            }
            System.out.println("");
            
            //Initialize the second matrix
            System.out.println("Enter all the elements of second matrix:");
            for (int i = 0; i < m; i++) 
            {
                for (int j = 0; j < n; j++) 
                {
                    b[i][j] = sc.nextInt();
                }
            }            
            //To Multiply two matrices
             multiplyMatrix(p ,q, a, m, n, b);    
    }
}


Indtast antallet af rækker i den første matrix:3
Indtast antallet af kolonner i den første matrix:3
Indtast antallet af rækker i den anden matrix:3
Enter antal kolonner i den anden matrix:3
Indtast alle elementerne i den første matrix:1 2 3 4 5 6 5 4 3

Indtast alle elementerne i den anden matrix:6 5 4 7 1 2 3 4 5
Første matrix:
1 2 3
4 5 6
5 4 3
Anden matrix:
6 5 4
7 1 2
3 4 5

Resultatmatrix:
29 19 23
77 49 56
67 41 43

Program 2:Udfør matrixmultiplikation

I dette program vil vi udføre matrix multiplikation. Matrixmultiplikation er en simpel binær operation, der producerer en enkelt matrix ud fra de to givne matricer. Når to matricer af orden m*n og n*p ganges, vil den resulterende matrix være af størrelsesordenen m*p.

Algorithme

  1. Start
  2. Deklarer variabler for matrixstørrelse.
  3. Initialiser antallet af rækker og kolonner for den første matrix.
  4. Initialiser antallet af rækker og kolonner for den anden matrix.
  5. Deklarer to matricer.
  6. Bed brugeren om at initialisere matricerne.
  7. Udskriv de to matricer.
  8. Tjek, om matrixmultiplikation er mulig eller ej.
  9. Hvis det er muligt, så opret en ny matrix for at gemme produktet af de to matricer.
  10. Gennemgå hvert element i de to matricer og gange dem.
  11. Gem dette produkt i den nye matrix ved det tilsvarende indeks.
  12. Udskriv den endelige produktmatrix.
  13. Hvis matrixmultiplikation ikke er mulig, så vis det samme.
  14. Stop.

Nedenfor er koden til det samme i Java-sproget.

/*Java Program to multiply two matrices*/
import java.util.Scanner;
public class Main
{
   //Driver Code
    public static void main(String[] args) 
    {
        //Take input from user
        Scanner sc = new Scanner(System.in);        
        int p, q, m, n;    //Declare matrix size
        System.out.print("Enter the number of rows in the first matrix:");
        p = sc.nextInt();    //Initialize the the first matrix size
        System.out.print("Enter number of columns in the first matrix:");
        q = sc.nextInt();   //Initialize first matrix size
        System.out.print("Enter the number of rows in the second matrix:");
        m = sc.nextInt();   //Initialize second matrix size
        System.out.print("Enter the number of columns in the second matrix:");
        n = sc.nextInt();   //Initialize second matrix size
        
         int a[][] = new int[p][q];    //Declare first matrix
            int b[][] = new int[m][n];    //Declare second matrix            
            //Initialize the first Matrix
            System.out.println("Enter all the elements of first matrix:");
            for (int i = 0; i < p; i++) 
            {
                for (int j = 0; j < q; j++) 
                {
                    a[i][j] = sc.nextInt();
                }
            }
            System.out.println("");            
            //Initialize the second matrix
            System.out.println("Enter all the elements of second matrix:");
            for (int i = 0; i < m; i++) 
            {
                for (int j = 0; j < n; j++) 
                {
                    b[i][j] = sc.nextInt();
                }
            }            
            //Print the First Matrix
            System.out.println("First Matrix:");
            for(int i=0;i<p;i++)
            {
                for(int j=0;j<q;j++)
                {
                    System.out.print(a[i][j]+" ");
                }
                System.out.println("");
            }            
            //Print Second Matrix
            System.out.println("Second Matrix:");
            for(int i=0;i<m;i++)
            {
                for(int j=0;j<n;j++)
                {
                    System.out.print(b[i][j]+" ");
                }
                System.out.println("");
            }                      
        // Check if multiplication is Possible 
        if (m != q) { 
  
            System.out.println("Multiplication Not Possible"); 
            return; 
        }   
        // Matrix to store the result 
        int c[][] = new int[q][n]; 
        int k=0;
  
        // Multiply the two matrices 
        for(int i=0;i<p;i++)
        { 
            for(int j=0;j<n;j++)
            { 
                for (k = 0; k < m; k++) 
                    c[i][j] += a[i][k] * b[k][j]; 
            } 
        }   
        // Print the resultant matrix
        System.out.println("Resultant Matrix:"); 
        for(int i=0;i<q;i++)
            {
                for(int j=0;j<n;j++)
                {
                    System.out.print(c[i][j]+" ");
                }
                System.out.println("");
            }   
    }
}


Indtast antallet af rækker i den første matrix:3
Indtast antallet af kolonner i den første matrix:3
Indtast antallet af rækker i den anden matrix:3
Enter antallet af kolonner i den anden matrix:3
Indtast alle elementerne i den første matrix:1 2 3 4 5 6 7 8 9
Indtast alle elementerne i den anden matrix:3 4 5 2 6 7 1 2 1
Første matrix:
1 2 3
4 5 6
7 8 9
Anden matrix:
3 4 5
2 6 7
1 2 1
Resultatmatrix:
10 22 22
28 58 61
46 94 100


Java tag