PHP Program to multiply two matrices
Last Updated :
22 Jul, 2024
Given two matrices, the task to multiply them. Matrices can either be square or rectangular.
Examples:
Input : mat1[][] = {{1, 2},
{3, 4}}
mat2[][] = {{1, 1},
{1, 1}}
Output : {{3, 3},
{7, 7}}
Input : mat1[][] = {{2, 4},
{3, 4}}
mat2[][] = {{1, 2},
{1, 3}}
Output : {{6, 16},
{7, 18}}
Multiplication of Square Matrices
Step to implement Square Matrix Multiplication:
- Initialize Matrix Dimensions
- Define the Multiplication Function
- Initialize Result Matrix
- For each element in the result matrix
res, initialize it to 0.
- Perform Multiplication
- Use three nested loops:
- The outer loop iterates over rows of
mat1. - The middle loop iterates over columns of
mat2. - The inner loop iterates over columns of
mat1 and rows of mat2. - For each element res[i][j]res[i][j]res[i][j], sum the products of corresponding elements from
mat1 row and mat2 column: res[i][j]+=mat1[i][k]×mat2[k][j]res[i][j] += mat1[i][k] \times mat2[k][j]res[i][j]+=mat1[i][k]×mat2[k][j]
- Print Result Matrix
- Iterate through the
res matrix and print each element.
PHP
<?php
// PHP program to multiply two
// square matrices.
// This function multiplies mat1[][] and
// mat2[][], and stores the result in res[][]
function multiply(&$mat1, &$mat2, &$res)
{
$N = 4;
for ($i = 0; $i < $N; $i++)
{
for ($j = 0; $j < $N; $j++)
{
$res[$i][$j] = 0;
for ($k = 0; $k < $N; $k++)
$res[$i][$j] += $mat1[$i][$k] *
$mat2[$k][$j];
}
}
}
// Driver Code
$mat1 = array(array(1, 1, 1, 1),
array(2, 2, 2, 2),
array(3, 3, 3, 3),
array(4, 4, 4, 4));
$mat2 = array(array(1, 1, 1, 1),
array(2, 2, 2, 2),
array(3, 3, 3, 3),
array(4, 4, 4, 4));
multiply($mat1, $mat2, $res);
$N = 4;
echo ("Result matrix is
");
for ($i = 0; $i < $N; $i++)
{
for ($j = 0; $j < $N; $j++)
{
echo ($res[$i][$j]);
echo(" ");
}
echo ("
");
}
// This code is contributed
// by Shivi_Aggarwal
?>
OutputResult matrix is
10 10 10 10
20 20 20 20
30 30 30 30
40 40 40 40
Complexity Analysis:
- Time complexity: O(n3).
It can be optimized using Strassen’s Matrix Multiplication - Auxiliary Space: O(n2)
Multiplication of Rectangular Matrices
Steps to implement Rectangular Matrices Multiplication :
- Define Matrix Dimensions
- Initialize Result Matrix
- Matrix Multiplication Logic
- Use three nested loops:
- The outer loop iterates over the rows of
mat1 (index i). - The middle loop iterates over the columns of
mat2 (index j). - The inner loop iterates over the columns of
mat1 and rows of mat2 (index x).
- For each element res[i][j]res[i][j]res[i][j], compute the sum of products of corresponding elements from the row of
mat1 and the column of mat2:
res[i][j]+=mat1[i][x]×mat2[x][j]
- Print Result Matrix
- Iterate through the
res matrix and print each element, formatting the output as a matrix.
PHP
<?php
// PHP program to multiply two
// rectangular matrices
// Multiplies two matrices mat1[][]
// and mat2[][] and prints result.
// (m1) x (m2) and (n1) x (n2) are
// dimensions of given matrices.
function multiply($m1, $m2, $mat1,
$n1, $n2, $mat2)
{
for ($i = 0; $i < $m1; $i++)
{
for ($j = 0; $j < $n2; $j++)
{
$res[$i][$j] = 0;
for ($x = 0; $x < $m2; $x++)
{
$res[$i][$j] += $mat1[$i][$x] *
$mat2[$x][$j];
}
}
}
for ($i = 0; $i < $m1; $i++)
{
for ($j = 0; $j < $n2; $j++)
{
echo $res[$i][$j] . " ";
}
echo "
";
}
}
// Driver code
$mat1 = array( array( 2, 4 ), array( 3, 4 ));
$mat2 = array( array( 1, 2 ), array( 1, 3 ));
$m1 = 2;
$m2 = 2;
$n1 = 2;
$n2 = 2;
//Function call
multiply($m1, $m2, $mat1, $n1, $n2, $mat2);
// This code is contributed by rathbhupendra
?>
Complexity Analysis:
- Time complexity: O(n3).
It can be optimized using Strassen’s Matrix Multiplication - Auxiliary Space: O(m1 * n2).
Explore
Basics
Array
OOPs & Interfaces
MySQL Database
PHP Advance