在 Java 中检查矩阵是否为单位矩阵?

javaobject oriented programmingprogramming更新于 2025/2/21 21:32:17

矩阵只不过是二维矩形布局中排列的数据元素集合。在 Java 中,可以将具有两个维度的数组视为矩阵。

单位矩阵是一个方阵,其主对角线元素均为 1,其余元素为 0。根据问题陈述,我们必须检查给定的矩阵是否为单位矩阵。

让我们深入研究这篇文章,了解如何使用 Java 编程语言来完成它。

向您展示一些实例

实例 1

假设我们有一个矩阵
   | 1 0 0 |
A= | 0 1 0 |
   | 0 0 1 |

我们在主对角线上有 1,其余为 0。因此它是一个单位矩阵

实例-2

假设我们有一个矩阵
   | 1 0 0 |
A =| 0 1 1 |
   | 0 0 1 |

我们在主对角线上有 1,但还有另一个 1 作为非对角线元素。因此它不是单位矩阵

实例-3

假设我们有一个矩阵
    | 1 0 0 0|
A = | 0 0 1 0|
    | 0 0 1 0|
    | 0 0 0 1|

我们在主对角线上没有 1,其余都是 0。因此它不是单位矩阵

算法

步骤 1 - 存储矩阵。

步骤 2 - 现在调用遍历矩阵的检查函数并检查行==列的位置是否有 1 而其余位置是否为 0。

步骤 3 - 打印结果。

多种方法

我们提供了不同方法的解决方案。

  • 通过使用矩阵的静态初始化

  • 通过使用矩阵的动态初始化

让我们逐一查看程序及其输出。

方法 1:通过使用矩阵的静态初始化

在此方法,在程序中初始化矩阵,然后我们检查矩阵的主对角线是否为 1,其余元素是否为零。

示例

import java.util.Scanner;
public class Main {
   public static void main(String[] args) {
      
      // 需要检查的矩阵
      int mat[][] = {
         { 1, 0, 0 },
         { 0, 1, 0 },
         { 0, 0, 1 },
      };
      
      // 打印结果
      if (identityMatCheck(mat))
         System.out.println("The matrix is an identity matrix.");
      else
         System.out.println("The matrix is not an identity matrix.");
   }
   
   //用户定义的方法
   static boolean identityMatCheck(int mat[][]) {
     
     // 遍历矩阵
      for (int i = 0; i < mat.length; i++) {
         for (int j = 0; j < mat.length; j++) {
            
            // 检查主对角线元素是否为 1
            if (i == j && mat[i][j] != 1)
            	return false;
            
            // 检查其余元素是否为 0
            else if (i != j && mat[i][j] != 0)
               return false;
         }
      }
      return true;
   }
}

输出

该矩阵是一个单位矩阵。

方法 2:使用矩阵的动态初始化

在这种方法中,我们要求用户输入他们所需大小的矩阵,然后检查该矩阵是否为单位矩阵。

示例

import java.util.Scanner;
public class Main {
   public static void main(String[] args) {
      System.out.println("Enter number of matrix rows-");
      Scanner sc = new Scanner(System.in);
      int size = sc.nextInt();
      int mat[][] = new int[size][size];
      
        // 输入矩阵元素
        System.out.println("输入矩阵元素");
        for (int i = 0; i < mat.length; i++) {
            for (int j = 0; j < mat.length; j++) {
            	mat[i][j] = sc.nextInt();
        }
        }
        // 打印结果
      if (identityMatCheck(mat))
         System.out.println("The matrix is an identity matrix.");
      else
         System.out.println("The matrix is not an identity matrix.");

   }
   static boolean identityMatCheck(int mat[][]) {
      // 遍历矩阵
      for (int i = 0; i < mat.length; i++) {
         for (int j = 0; j < mat.length; j++) {
            
            // 检查主对角线元素是否为 1
            if (i == j && mat[i][j] != 1)
            return false;
            // 检查其余元素是否为 0
            else if (i != j && mat[i][j] != 0)
               return false;
         }
      }
      return true;
   }
}

输出

输入矩阵行数-
4
输入矩阵元素
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
0 0 0 1
该矩阵为单位矩阵。

在本文中,我们探索了使用 Java 编程语言检查矩阵是否为单位矩阵的不同方法。


相关文章


有用资源