PHP 程序求两个矩阵的乘积


2022年2月9日, Learn eTutorial
1575

如何求两个矩阵的乘积?

要计算两个二维数组的乘积,首先我们必须找出数组的行数和列数,然后将两个矩阵中对应的行和列相乘并相加。例如,如果数组是

        2  3  8               1  5  1

a[] = 3 2 1 b[] = 6 1 5

        3  5  6               4  1  2

那么结果将是

2*1+3*6+8*4    2*5+3*1+8*1    2*1+3*5+8*2

3*1+2*6+1*4    3*5+2*1+1*1    3*1+2*5+1*5

3*1+5*6+6*4    3*5+5*1+6*1    3*1+5*5+6*2

52   21   33
19   18   15
57   26   40

如何使用 PHP 求两个矩阵的乘积?

在此程序中,我们使用在代码本身中初始化的静态值。首先,我们必须初始化两个二维数组 **a1** 和 **a2**,我们必须使用内置函数 `count()` 将行数和列数赋给变量 **row** 和 **col**。然后,我们必须创建一个空数组 **mul[]** 来存储数组 **a1[]** 和 **a2[]** 的乘积。然后将值 **0** 赋给变量 **i**,并执行循环直到条件 **'i < row'** 变为假,并在每次迭代中增加变量 **i** 的值。在循环块中,我们必须执行另一个循环,其中我们必须将值 **0** 赋给变量 **j**,并执行循环直到条件 **'j < col'** 变为假,并在每次迭代中增加变量 **j** 的值。在循环块中,我们必须执行另一个循环,为此,首先将值 **0** 赋给变量 k,并执行循环直到条件 **'k < row'** 变为假,并在每次迭代中增加变量 k 的值。在循环块中,我们必须将计算出的值 **'mul[i][j] + a1[i][k] * a2[k][j]'** 赋给数组 **mul[i][j]**。循环完成后,我们可以打印数组 **mul[]** 的值作为数组 **a1[]** 和 **a2[]** 的乘积。

算法

步骤 1:使用值初始化两个二维数组 **a1[]** 和 **a2[]**

步骤 2: 使用内置函数 count() 将行数和列数分配给变量 **row** 和 **col**

步骤 3:创建一个空数组 **mul[]** 来存储 **a1[]** 和 **a2[]** 的乘积结果

步骤 4:使用 for 循环打印数组 **a1[]** 和 **a2[]** 的元素

步骤 5:为了计算数组 **a1[]** 和 **a2[]** 的乘积,首先执行 `for 循环`,将值 **0** 赋给变量 **i**,并执行子步骤直到条件 **'i < row'** 变为假,并在每次迭代中增加变量 **i** 的值

        (i) 将值 **0** 赋给变量 **j**,并执行子步骤 ii 直到条件 **'j < col'** 变为假,并在每次迭代中增加变量 **j** 的值

        (ii) 将值 **0** 赋给变量 **k**,并执行子步骤直到条件 **'k < row'** 变为假,并在每次迭代中增加变量 **k** 的值

            (a) 将计算出的值 **'mul[i][j] + a1[i][k] * a2[k][j]'** 赋给数组 **mul[i][j]**

步骤 6:打印数组 **mul[]** 的值作为数组 **a1[]** 和 **a2[]** 的乘积

PHP 源代码

                                          <?php
$a1 = array(
    array(1, 2, 9),
    array(4, 5, 6),
    array(7, 2, 3)
);
$a2 = array(
    array(9, 8, 7),
    array(6, 5, 4),
    array(3, 2, 1)
);
$row = count($a1);
$col = count($a1[0]);
$mul = array();
echo "The first matrix is: \n";
for ($i = 0; $i < $row; $i++) {
    for ($j = 0; $j < $col; $j++) {
        echo $a1[$i][$j] . " ";
    }
    echo "\n";
}
echo "The second matrix is: \n";
for ($i = 0; $i < $row; $i++) {
    for ($j = 0; $j < $col; $j++) {
        echo $a2[$i][$j] . " ";
    }
    echo "\n";
}
for ($i = 0; $i < $row; $i++) {
    for ($j = 0; $j < $col; $j++) {
        for ($k = 0; $k < $row; $k++) {
            $mul[$i][$j] = $mul[$i][$j] + $a1[$i][$k] * $a2[$k][$j];
        }
    }
}
echo "Product of two matrices is: \n";
for ($i = 0; $i < $row; $i++) {
    for ($j = 0; $j < $col; $j++) {
        echo $mul[$i][$j] . "  ";
    }
    echo "\n";
}
?>
                                      

输出

The first matrix is:
1 2 9
4 5 6
7 2 3
The second matrix is:
9 8 7
6 5 4
3 2 1
Product of two matrices is:
48  36  24
84  69  54
84  72  60