PHP 程序检查矩阵是否为单位矩阵


2022年4月17日, Learn eTutorial
1633

什么是单位矩阵?

单位矩阵是任意阶的方阵,其中对角线(行和列索引相同)元素全为 1,且矩阵中所有其他元素必须为 0。例如,

[ 1 0 0 ]

[ 0 1 0 ]

[ 0 0 1 ]

在上面的矩阵中,我们可以看到所有对角线值都为 1,其他为 0,所以我们可以说这是一个单位矩阵。

如何使用 PHP 检查矩阵是否为单位矩阵?

在此程序中,我们正在检查输入的矩阵是否为单位矩阵,为此我们使用代码中初始化的静态值。首先,我们必须初始化二维数组 a[],然后使用内置函数 count() 将行数和列数赋给变量 rowcol。之后,我们必须创建一个变量 flag,其值为 true。然后将值 0 赋给变量 i,并执行循环,直到条件 'i < row' 变为 false,并在每次迭代中增加变量 i 的值。在循环块中,我们必须执行另一个循环,其中我们将值 0 赋给变量 j,并执行循环,直到条件 'j < col' 变为 false,并在每次迭代中增加变量 j 的值。在循环块中,我们必须检查条件 'i == j''a[i][j] != 1',如果两者都为 true,则将值 false 赋给变量 flag。之后,检查条件 'i != j''a[i][j] != 0',如果两者都为 true,则将值 false 赋给变量 flag。循环完成后,我们必须检查变量 flag 的值,如果它为 true,则打印“矩阵是单位矩阵”,否则打印“矩阵不是单位矩阵”。

算法

步骤 1: 初始化二维数组 a[]

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

步骤 3: 打印数组 a[] 中的元素

步骤 4: 创建变量 flag,其值为 true

步骤 5: 将值 0 赋给变量 i,并执行子步骤,直到条件 'i < row' 变为 false,并在每次迭代中增加变量 i 的值

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

            (a) 检查条件 'i == j''a[i][j] != 1',如果两者都为 true,则将值 false 赋给变量 flag

            (b) 检查条件 'i != j''a[i][j] != 0',如果两者都为 true,则将值 false 赋给变量 flag

步骤 6: 检查变量 flag 的值,如果它为 true,则打印“矩阵是单位矩阵”,否则打印“矩阵不是单位矩阵”

PHP 源代码

                                          <?php
$a = array(
    array(1, 0, 0),
    array(0, 1, 0),
    array(0, 0, 1)
);
$flag = true;
$row = count($a);
$col = count($a[0]);
echo "The matrix: \n";
for ($i = 0; $i < $row; $i++) {
    for ($j = 0; $j < $col; $j++) {
        echo $a[$i][$j] . " ";
    }
    echo "\n";
}
if ($row != $col) {
    echo "Matrix should be a square matrix ";
} else {
    for ($i = 0; $i < $row; $i++) {
        for ($j = 0; $j < $col; $j++) {
            if ($i == $j && $a[$i][$j] != 1) {
                $flag = false;
                break;
            }
            if ($i != $j && $a[$i][$j] != 0) {
                $flag = false;
                break;
            }
        }
    }
    if ($flag)
        echo "The matrix is an identity matrix";
    else
        echo "The matrix is not an identity matrix";
}
?>
                                      

输出

The matrix:
1 0 0
0 1 0
0 0 1
The matrix is an identity matrix