How to multiply matrix in PHP

2 Answers

0 votes
function print_array($arr2d, $size)
{
    echo '<table border="0" cellspacing="3">';
    for ($i = 0; $i < $size; $i++)
    {
        echo "<tr align='right'>";
        for ($j = 0; $j < $size; $j++)
            echo "<td>" . $arr2d[$i][$j] . "</td>";
        echo "</tr>";
    }
    echo "</table>";
}
function Calc($a, $b, $i, $j, $size)
{
    $sum = 0;
     
    for ($x = 0; $x < $size; $x++) 
        $sum += $a[$i][$x] * $b[$x][$j];

    return $sum;
}
     
 
$a = array(array(1, 8, 5),
           array(6, 7, 1),
           array(8, 7, 6),
);
$b = array(array(4, 8, 1),
           array(6, 5, 3),
           array(4, 6, 5),
);

$c = [[]];
$size = 3;  
  
print_array($a, $size);
echo "<br />";
print_array($b, $size);
echo "<br />";
  
// c[0, 0] = (a[0, 0] * b[0, 0]) + (a[0, 1] * b[1, 0]) + (a[0, 2] * b[2, 0])
  
for ($i = 0; $i < $size; $i++)
    for ($j = 0; $j < $size; $j++)
        $c[$i][$j] = Calc($a, $b, $i, $j, $size);

print_array($c, $size);

    
/*
run:

1    8    5
6    7    1
8    7    6

4    8    1
6    5    3
4    6    5

72     78    50
70     89    32
98    135    59
     
*/

 



answered Feb 29, 2016 by avibootz
0 votes
function print_array($arr2d, $size)
{
    echo '<table border="0" cellspacing="3">';
    for ($i = 0; $i < $size; $i++)
    {
        echo "<tr align='right'>";
        for ($j = 0; $j < $size; $j++)
            echo "<td>" . $arr2d[$i][$j] . "</td>";
        echo "</tr>";
    }
    echo "</table>";
}
function multiple_matrix($a, $b, &$c, $size)
{
    for ($i = 0; $i < $size; $i++)
    {
        for ($j = 0; $j < $size; $j++)
        {
            $c[$i][$j] = 0;
            for ($k = 0; $k < $size; $k++) 
                $c[$i][$j] = $c[$i][$j] + $a[$i][$k] * $b[$k][$j];
        }
    }
}     
     
 
$a = array(array(1, 8, 5),
           array(6, 7, 1),
           array(8, 7, 6),
);
$b = array(array(4, 8, 1),
           array(6, 5, 3),
           array(4, 6, 5),
);

$c = [[]];
$size = 3;  
  
print_array($a, $size);
echo "<br />";
print_array($b, $size);
echo "<br />";
  
// c[0, 0] = (a[0, 0] * b[0, 0]) + (a[0, 1] * b[1, 0]) + (a[0, 2] * b[2, 0])
  
multiple_matrix($a, $b, $c, $size);

print_array($c, $size);

    
/*
run:

1    8    5
6    7    1
8    7    6

4    8    1
6    5    3
4    6    5

72     78    50
70     89    32
98    135    59
     
*/

 



answered Feb 29, 2016 by avibootz
...