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
- Start
- Deklarer variabler for matrixstørrelse.
- Initialiser antallet af rækker og kolonner for den første matrix.
- Initialiser antallet af rækker og kolonner for den anden matrix.
- Deklarer to matricer.
- Bed brugeren om at initialisere matricerne.
- Kald en metode til at gange de to matricer.
- Udskriv de to matricer.
- Tjek, om matrixmultiplikation er mulig eller ej.
- Hvis det er muligt, så opret en ny matrix for at gemme produktet af de to matricer.
- Gennemgå hvert element i de to matricer og gange dem.
- Gem dette produkt i den nye matrix ved det tilsvarende indeks.
- Udskriv den endelige produktmatrix.
- Hvis matrixmultiplikation ikke er mulig, så vis det samme.
- 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
- Start
- Deklarer variabler for matrixstørrelse.
- Initialiser antallet af rækker og kolonner for den første matrix.
- Initialiser antallet af rækker og kolonner for den anden matrix.
- Deklarer to matricer.
- Bed brugeren om at initialisere matricerne.
- Udskriv de to matricer.
- Tjek, om matrixmultiplikation er mulig eller ej.
- Hvis det er muligt, så opret en ny matrix for at gemme produktet af de to matricer.
- Gennemgå hvert element i de to matricer og gange dem.
- Gem dette produkt i den nye matrix ved det tilsvarende indeks.
- Udskriv den endelige produktmatrix.
- Hvis matrixmultiplikation ikke er mulig, så vis det samme.
- 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