C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
Program to find the product of two matrices
ExplanationIn this program, we need to multiply two matrices and print the resulting matrix. Product of two matricesThe product of two matrices can be computed by multiplying elements of the first row of the first matrix with the first column of the second matrix then, add all the product of elements. Continue this process until each row of the first matrix is multiplied with each column of the second matrix.
Consider above example, first element in resulting matrix prod[0,0] can be computed by multiplying first row of first matrix i.e. (1, 3, 2) with first column of second matrix i.e. (2, 1, 1) and finally sum all the product of elements i.e. (1*2) + (3*1) + (2*1) = 7. Similarly, second entry prod[0,1] can be computed by multiplying the first row of the first matrix with the second column of the second matrix and sum all the product. Two matrices can be multiplied if and only if they satisfy the following condition: the number of columns present in the first matrix should be equal to the number of rows present in the second matrix. Suppose dimension of matrix A is p � q and matrix B is q � r, then the dimension of resulting matrix will be p � r. Matrix multiplication can be represented as Cij = Σ AikBkj Algorithm
SolutionPython
#Initialize matrix a
a = [
[1, 3, 2],
[3, 1, 1],
[1, 2, 2]
];
#Initialize matrix b
b = [
[2, 1, 1],
[1, 0, 1],
[1, 3, 1]
];
#Calculates number of rows and columns present in first matrix
row1 = len(a);
col1 = len(a[0]);
#Calculates number of rows and columns present in second matrix
row2 = len(b);
col2 = len(b[0]);
#For two matrices to be multiplied,
#number of columns in the first matrix must be equal to the number of rows in the second matrix
if(col1 != row2):
print("Matrices cannot be multiplied");
else:
#Array prod will hold the result and is initialized with zeroes.
prod = [[0]*row1 for i in range(col2)];
#Performs product of matrices a and b. Store the result in matrix prod
for i in range(0, row1):
for j in range(0, col2):
for k in range(0, row2):
prod[i][j] = prod[i][j] + a[i][k] * b[k][j];
print("Product of two matrices: ");
for i in range(0, row1):
for j in range(0, col2):
print(prod[i][j]),
print(" ");
Output: Product of two matrices: 7 7 6 8 6 5 6 7 5 C
#include <stdio.h>
int main()
{
int row1, col1, row2, col2;
//Initialize matrix a
int a[][3] = {
{1, 3, 2},
{3, 1, 1},
{1, 2, 2}
};
//Initialize matrix b
int b[][3] = {
{2, 1, 1},
{1, 0, 1},
{1, 3, 1}
};
//Calculates number of rows and columns present in first matrix
row1 = (sizeof(a)/sizeof(a[0]));
col1 = (sizeof(a)/sizeof(a[0][0]))/row1;
//Calculates number of rows and columns present in second matrix
row2 = (sizeof(b)/sizeof(b[0]));
col2 = (sizeof(b)/sizeof(b[0][0]))/row2;
//For two matrices to be multiplied,
//number of columns in first matrix must be equal to number of rows in second matrix
if(col1 != row2){
printf("Matrices cannot be multiplied \n");
}
else{
//Array prod will hold the result
int prod[row1][col2];
//Performs product of matrices a and b. Store the result in matrix prod
for(int i = 0; i < row1; i++){
for(int j = 0; j < col2; j++){
prod[i][j] = 0;
for(int k = 0; k < row2; k++){
prod[i][j] = prod[i][j] + a[i][k] * b[k][j];
}
}
}
printf("Product of two matrices: \n");
for(int i = 0; i < row1; i++){
for(int j = 0; j < col2; j++){
printf("%d ", prod[i][j]);
}
printf("\n");
}
}
return 0;
}
Output: Product of two matrices: 7 7 6 8 6 5 6 7 5 JAVA
public class ProdMatrix
{
public static void main(String[] args) {
int row1, col1, row2, col2;
//Initialize matrix a
int a[][] = {
{1, 3, 2},
{3, 1, 1},
{1, 2, 2}
};
//Initialize matrix b
int b[][] = {
{2, 1, 1},
{1, 0, 1},
{1, 3, 1}
};
//Calculates number of rows and columns present in first matrix
row1 = a.length;
col1 = a[0].length;
//Calculates the number of rows and columns present in the second matrix
row2 = b.length;
col2 = b[0].length;
//For two matrices to be multiplied,
//number of columns in first matrix must be equal to number of rows in second matrix
if(col1 != row2){
System.out.println("Matrices cannot be multiplied");
}
else{
//Array prod will hold the result
int prod[][] = new int[row1][col2];
//Performs product of matrices a and b. Store the result in matrix prod
for(int i = 0; i < row1; i++){
for(int j = 0; j < col2; j++){
for(int k = 0; k < row2; k++){
prod[i][j] = prod[i][j] + a[i][k] * b[k][j];
}
}
}
System.out.println("Product of two matrices: ");
for(int i = 0; i < row1; i++){
for(int j = 0; j < col2; j++){
System.out.print(prod[i][j] + " ");
}
System.out.println();
}
}
}
}
Output: Product of two matrices: 7 7 6 8 6 5 6 7 5 C#
using System;
public class ProdMatrix
{
public static void Main()
{
int row1, col1, row2, col2;
//Initialize matrix a
int[,] a = {
{1, 3, 2},
{3, 1, 1},
{1, 2, 2}
};
//Initialize matrix b
int[,] b = {
{2, 1, 1},
{1, 0, 1},
{1, 3, 1}
};
//Calculates number of rows and columns present in first matrix
row1 = a.GetLength(0);
col1 = a.GetLength(1);
//Calculates the number of rows and columns present in the second matrix
row2 = b.GetLength(0);
col2 = b.GetLength(1);
//For two matrices to be multiplied,
//number of columns in first matrix must be equal to number of rows in second matrix
if(col1 != row2){
Console.WriteLine("Matrices cannot be multiplied");
}
else{
//Array prod will hold the result
int[,] prod = new int[row1,col2];
//Performs product of matrices a and b. Store the result in matrix prod
for(int i = 0; i < row1; i++){
for(int j = 0; j < col2; j++){
for(int k = 0; k < row2; k++){
prod[i,j] = prod[i,j] + a[i,k] * b[k,j];
}
}
}
Console.WriteLine("Product of two matrices: ");
for(int i = 0; i < row1; i++){
for(int j = 0; j < col2; j++){
Console.Write(prod[i,j] + " ");
}
Console.WriteLine();
}
}
}
}
Output: Product of two matrices: 7 7 6 8 6 5 6 7 5 PHP
<!DOCTYPE html>
<html>
<body>
<?php
//Initialize matrix a
$a = array(
array(1, 3, 2),
array(3, 1, 1),
array(1, 2, 2)
);
//Initialize matrix b
$b = array(
array(2, 1, 1),
array(1, 0, 1),
array(1, 3, 1)
);
//Calculates number of rows and columns present in first matrix
$row1 = count($a);
$col1 = count($a[0]);
//Calculates number of rows and columns present in second matrix
$row2 = count($b);
$col2 = count($b[0]);
//For two matrices to be multiplied,
//number of columns in first matrix must be equal to number of rows in second matrix
if($col1 != $row2){
print("Matrices cannot be multiplied <br>");
}
else{
//Array prod will hold the result and initialize it with 0
$prod = array_fill(0, $col2, array_fill(0, $row1, 0));
//Performs product of matrices a and b. Store the result in matrix prod
for($i = 0; $i < $row1; $i++){
for($j = 0; $j < $col2; $j++){
for($k = 0; $k < $row2; $k++){
$prod[$i][$j] = $prod[$i][$j] + $a[$i][$k] * $b[$k][$j];
}
}
}
print("Product of two matrices: <br>");
for($i = 0; $i < $row1; $i++){
for($j = 0; $j < $col2; $j++){
print($prod[$i][$j] . " ");
}
print("<br>");
}
}
?>
</body>
</html>
Output: Product of two matrices: 7 7 6 8 6 5 6 7 5
Next Topic#
|