## Thursday, March 4, 2021

### Matrix Multiplication Java Program

In this post we'll see a Java program to multiply two matrices which also gives you an idea about working with two dimensional arrays.

When you multiply two matrices with each other, you actually do a “dot product” of rows and columns. For example if you are multipying a 3X3 matrix with a 3X2 matrix-

Matrix multiplication

The result you get can be explained as follows-

```s11 = r11Xp11 + r12Xp21 + r13Xp31
s12 = r11Xp12 + r12Xp22 + r13Xp32
s21 = r21Xp11 + r22Xp21 + r23Xp31
s22 = r21Xp12 + r22Xp22 + r23Xp32
s31 = r31Xp11 + r32Xp21 + r33Xp31
s32 = r31Xp12 + r32Xp22 + r33Xp32
```

When you are writing a Java program to multiply two matrices-

You need an outer loop that will run as many times as there are rows in the first matrix.
Then you’ll have a second loop that will run as many times as the number of columns in the second matrix.
Then you’ll have a third loop that will run as many times as there are columns in the first matrix.

Also remember these points when multiplying one matrix with another-

1. The number of columns of the first matrix is equal to the number of rows of the second matrix.
2. The resultant matrix will have the same number of rows as in the first matrix and same number of columns as in the second matrix.

### Matrix multiplication Java program

```
import java.util.Scanner;

public class MatixMultiplication {

public static void main(String[] args) {
int rowM1, colM1;
int rowM2, colM2;

Scanner in = new Scanner(System.in);
System.out.print("Enter Number of Rows and Columns of First Matrix : ");
rowM1 = in.nextInt();
colM1 = in.nextInt();

System.out.print("Enter elements of First Matrix : ");
int M1[][] = new int[rowM1][colM1];
for(int i = 0; i < rowM1; i++){
for(int j = 0; j < colM1; j++){
M1[i][j] = in.nextInt();
}
}
System.out.println("First Matrix : " );
for(int i = 0; i < rowM1; i++){
for(int j = 0; j < colM1; j++){
System.out.print(" " +M1[i][j]+"\t");
}
System.out.println();
}

System.out.print("Enter Number of Rows and Columns of Second Matrix : ");
rowM2 = in.nextInt();
colM2 = in.nextInt();
if(colM1 != rowM2){
throw new IllegalArgumentException("The number of columns of the first matrix should equal the number of rows of the second matrix.");
}
System.out.print("Enter elements of Second Matrix : ");
int M2[][] = new int[rowM2][colM2];
for(int i = 0; i < rowM2; i++){
for(int j = 0; j < colM2; j++){
M2[i][j] = in.nextInt();
}
}
System.out.println("Second Matrix : " );
for(int i = 0; i < rowM2; i++){
for(int j = 0; j < colM2; j++){
System.out.print(" " +M2[i][j] + "\t");
}
System.out.println();
}
//same number of rows as in the first matrix and
//same number of columns as in the second matrix
int resMatrix[][] = new int[rowM1][colM2];
int sum = 0;
int row = 0;
for(int i = 0; i < rowM1; i++){
for(int j = 0; j < colM2; j++){
sum = 0;
for(int k = 0; k < colM1; k++){
sum = sum + M1[i][k] * M2[k][j];
}
resMatrix[i][j] = sum;
}
}

System.out.println("Result Matrix : " );
for(int i = 0; i < resMatrix.length; i++){
for(int j = 0; j < colM2; j++){
System.out.print(" " +resMatrix[i][j]+"\t");
}
System.out.println();
}
}
}
```

Output

```
Enter Number of Rows and Columns of First Matrix : 2
3
Enter elements of First Matrix : 1
2
3
4
5
6
First Matrix :
1  2  3
4  5  6
Enter Number of Rows and Columns of Second Matrix : 3
2
Enter elements of Second Matrix : 7
8
9
10
11
12
Second Matrix :
7   8
9   10
11  12
Result Matrix :
58   64
139  154
```

That's all for this topic Matrix Multiplication Java Program. If you have any doubt or any suggestions to make please drop a comment. Thanks!