Swift 程序检查给定方阵是否为单位矩阵
在本文中,我们将学习如何编写一个 Swift 程序来检查给定的方阵是否为单位矩阵。单位矩阵是一个 MxM 的方阵,其中主对角线由 1 组成,其他元素均为 0。例如 -
$\mathrm{M\:=\:\begin{bmatrix}1 & 0 & 0 & 0\newline0 & 1 & 0 & 0 \newline0 & 0 & 1 & 0 \newline0 & 0 & 0 & 1\end{bmatrix}}$
而方阵是指行数等于列数的矩阵,它可能包含 0 和 1,也可能包含其他数字。例如 -
$\mathrm{M\:=\:\begin{bmatrix}1 & 3 & 4 & 0\newline6 & 4 & 0 & 6 \newline3 & 6 & 1 & 0 \newline4 & 4 & 0 & 1\end{bmatrix}}$
算法
步骤 1 - 创建一个函数来检查给定矩阵是否为单位矩阵。
步骤 2 - 在此函数中,我们首先通过检查行数和列数来检查给定矩阵是否为方阵。
步骤 3 - 使用 for 循环,我们检查主对角线上存在的所有元素是否都为 1。
步骤 4 - 使用嵌套 for 循环,我们检查除对角线元素之外的所有元素是否都为 0。
步骤 5 - 如果步骤 2、3 和 4 中提到的所有条件都为真,则此函数将返回 true。否则,返回 false。
步骤 6 - 创建三个整数类型的测试矩阵。
步骤 7 - 调用函数并将创建的矩阵作为参数传递给它。
步骤 8 - 打印输出。
示例
以下 Swift 程序检查给定方阵是否为单位矩阵。
import Foundation import Glibc func CheckIdentityMatrix(mxt:[[Int]])->Bool { // Verifying the given matrix is the square matrix if mxt.count != mxt[0].count { return false } for x in 0..<mxt.count { if mxt[x][x] != 1 { return false } } for m in 0..<mxt.count { for n in 0..<mxt[0].count { if m != n && mxt[m][n] != 0 { return false } } } return true } var matrix1 = [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]] print("Is matrix 1 is an identity matrix?: ", CheckIdentityMatrix(mxt: matrix1)) var matrix2 = [[0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1], [0, 0, 0, 1]] print("Is matrix 2 is an identity matrix?: ", CheckIdentityMatrix(mxt: matrix2)) var matrix3 = [[2, 1, 4], [2, 1, 1], [4, 5, 0], [3, 4, 1]] print("Is matrix 3 is an identity matrix?: ", CheckIdentityMatrix(mxt: matrix3))
输出
Is matrix 1 is an identity matrix?: true Is matrix 2 is an identity matrix?: false Is matrix 3 is an identity matrix?: false
在上面的代码中,我们创建了一个函数来检查给定的矩阵是否为单位矩阵。为此,我们检查给定矩阵是否满足三个不同的条件 -
给定矩阵是否为方阵?
给定矩阵的主对角线是否全部由 1 组成(主对角线的所有元素)?
除主对角线外的元素是否都为 0?
如果上述任何一个条件返回 false,则给定矩阵不是单位矩阵。或者,如果上述三个条件都返回 true,则给定矩阵是单位矩阵。
结论
这就是我们如何检查给定的方阵是否为单位矩阵。如果将两个单位矩阵相乘,则结果矩阵也是单位矩阵。