Java Program to check Involuntary Matrix

2025 年 5 月 8 日 | 阅读 3 分钟

给定一个矩阵,我们的任务是检查它是否为对合矩阵。

对合矩阵

如果一个矩阵乘以自身生成单位矩阵,则该矩阵称为对合矩阵。自逆的矩阵称为对合矩阵。如果 A * A = I,则矩阵 A 被认为是対合矩阵。其中 I 代表单位矩阵。

基于它们自逆的特性,这些矩阵在线性代数和各种应用中都很重要,例如变换、计算机图形学和密码学。这个概念特别吸引人,因为它表明矩阵是其自身的逆,这简化了矩阵求逆等过程。通过矩阵乘法检查此特性是确定给定矩阵是否为対合矩阵的方法。

示例 1

输入

int matrix[N][N] = {{1, 0, 0},

{0, -1, 0},

{0, 0, -1}}

Java Program to check Involuntary Matrix

输出

该矩阵是对合矩阵。

解释

要确定矩阵是否为对合矩阵,请计算矩阵 × 矩阵

{1, 0, 0} {1, 0, 0} {1, 0, 0}

{0, -1, 0} x {0, -1, 0} = {0, 1, 0}

{0, 0, -1} {0, 0, -1} {0, 0, 1}

因此,生成了单位矩阵 I = {1, 0, 0; 0, 1, 0; 0, 0, 1}。这表明所提供的矩阵是一个对合矩阵。

示例 2

输入

int matrix[N][N] = {{0, 1},

{1, 0}}

输出

该矩阵是对合矩阵。

解释

要确定矩阵是否为对合矩阵,请计算矩阵 × 矩阵

{0, 1} {0, 1} {1, 0}

{1, 0} x {1, 0} = {0, 1}

因此,生成了单位矩阵 I = {1, 0; 0, 1}。这表明所提供的矩阵是一个对合矩阵。

示例 3

输入

int matrix[N][N] = {{2, 0, 0},

{0, 2, 0},

{0, 0, 2}}

输出

该矩阵不是对合矩阵。

解释

要确定矩阵是否为对合矩阵,请计算矩阵 × 矩阵

{2, 0, 0} {2, 0, 0} {4, 0, 0}

{0, 2, 0} x {0, 2, 0} = {0, 4, 0}

{0, 0, 2} {0, 0, 2} {0, 0, 4}

生成的矩阵不是单位矩阵。这表明所提供的矩阵不是对合矩阵。

朴素方法

为了找出矩阵是否为对合矩阵,代码使用了逻辑检查和矩阵乘法。为了有效地遍历和计算矩阵乘积,它利用了嵌套循环。通过确认对角线元素为 1,非对角线元素为 0,矩阵乘积的结果会根据对合矩阵的要求进行验证。使用布尔逻辑可以简化决策并提高可读性。该代码强调数学验证,通过系统性迭代和忠实于线性代数基本原理来确保准确性。其总体复杂度为 O(N3),适用于中小型矩阵。

实施

输出

 
The Matrix is an Involutory Matrix.   

复杂度分析

上述代码的时间复杂度为 O(N3),空间复杂度为 O(N2),其中 N 代表给定矩阵的大小。