Pages

Footer Pages

Spring Boot

Java String API

Java Conversions

Kotlin Programs

Kotlin Conversions

Java Threads Tutorial

Java 8 Tutorial

Sunday, October 25, 2020

Java Program to Multiply two Matrix Using Multi-dimensional Arrays

1. Overview

In this tutorial, you'll learn how to multiply two matrix in java using multi dimensional arrays.

To understand this example program, it is better to know the following concepts.

Arrays - How to Initialize Arrays

For Loops Examples

Java Program to Multiply two Matrix Using Multi-dimensional Arrays


One condition must be satisfied for matrix multiplication as below.

First matrix order: R1 X C1

Second matrix order: R2 X C2

Always C1 and R2 must be same number that means number of columns in matrix 1 should be equal to the number of rows in the second matrix.

If this condition is not satisfied then matrix multiplication is not possible.

And also output matrix order will be R1 X C2.

2. Example Program To Multiply Two Matrices

Let us understand the below program that uses 3 for loops and with time complexity of Big O of n cube (O(n3)).

package com.javaprogramto.programs.arrays.matrix;

public class MatrixMultiplication {

	public static void main(String[] args) {
		// creating the first matrix using arrays
		int[][] matrix1 = { { 1, 2, 3 }, { 4, 5, 6 } };

		// creating the second matrix using two dimension array
		int[][] matrix2 = { { 1, 1 }, { 1, 1 }, { 1, 1 } };

		// Matrix 1 rows and columns length
		int rows1 = matrix1.length;
		int columns1 = matrix1[0].length;

		// Matrix 2 rows and columns length
		int rows2 = matrix2.length;
		int columns2 = matrix2[1].length;

		// output array for storing the multiplication result
		int[][] result = new int[rows1][columns2];

		// matrix addition core logic
		for (int i = 0; i < rows1; i++) {
			for (int j = 0; j < columns2; j++) {
				for (int k = 0; k < columns1; k++) {
					result[i][j] += matrix1[i][k] * matrix2[k][j];
				}
			}
		}

		// printing the result
		for (int i = 0; i < result.length; i++) {
			for (int j = 0; j < result[1].length; j++) {
				System.out.print(result[i][j] + " ");
			}
			System.out.println();
		}

	}

}


 

Output:

6 6 
15 15 

 

This examples works well for smaller inputs but if the order of these matrix's are 10 X 10 or 30 X 30 then it will give worst performance. So, you should optimize the code using multithreading.

Next article on Java Matrix Multiplication with multiple threads

3. Conclusion

In this article, you've seen how to multiply two matrices in java with using 3 for loops.

As usual, example shown is over GitHub.

Ref

No comments:

Post a Comment

Please do not add any spam links in the comments section.