如何在 Java 中检查矩阵是否为对合矩阵?
矩阵不过是按二维矩形布局排列的数据元素的集合。在 Java 中,二维数组可以被视为矩阵。
对合矩阵是一个方形矩阵,当它自身相乘时,会得到一个单位矩阵。单位矩阵是一个矩阵,其中所有元素都为零,除了对角线上的元素为一。
让我们深入研究这篇文章,了解如何使用 Java 编程语言来实现。
举几个例子
实例 1
Suppose we have a matrix | 1 0 0 | A = | 0 1 0 | | 0 0 1 | A2 = A X A | 1 0 0 | | 1 0 0 | = | 0 1 0 | X | 0 1 0 | | 0 0 1 | | 0 0 1 | | 1 0 0 |
A2 = | 0 1 0 | | 0 0 1 |
这是一个对合矩阵。
实例 2
假设我们有一个矩阵
Suppose we have a matrix | 1 0 0 | A = | 0 -1 0 | | 0 0 -1 | A2 = A X A | 1 0 0 | | 1 0 0 | = | 0 -1 0 | X | 0 -1 0| | 0 0 -1 | | 0 0 -1| | 1 0 0 | A2 = | 0 1 0 | | 0 0 1 |
这是一个对合矩阵。
算法
步骤 1 - 初始化并声明矩阵
步骤 2 - 将矩阵与其自身相乘并存储结果
步骤 3 - 将乘积矩阵与单位矩阵进行比较,并检查这两个矩阵是否相同
步骤 4 - 如果这两个矩阵相同,则该矩阵是对合矩阵
多种方法
我们提供了多种方法的解决方案。
使用矩阵的静态初始化
使用矩阵的动态初始化
让我们逐一查看程序及其输出。
方法 1:使用矩阵的静态初始化
在这种方法中,矩阵元素将在程序中初始化。然后根据算法检查矩阵是否是对合矩阵。
示例
import java.util.Scanner; public class Main { public static void main(String[] args) { // Matrix to be checked int mat[][] = {{ 1, 0, 0 },{ 0, -1, 0 },{ 0, 0, -1 },}; // Print results if (invoCheck(mat)) System.out.println("The matrix is an involutory matrix."); else System.out.println("The matrix is not an involutory matrix."); } // Matrix multiplication static void mul(int mat[][], int prod[][]) { for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { prod[i][j] = 0; // Resultant product is stored in prod for (int k = 0; k < 3; k++) { prod[i][j] += mat[i][k] * mat[k][j]; } } } } // Check if the matrix is involutory static boolean invoCheck(int mat[][]) { // 3X3 Identity Matrix int identityMat[][] = { { 1, 0, 0 },{ 0, 1, 0 },{ 0, 0, 1 } }; int prod[][] = new int[3][3]; // Calls the matrix multiplication mul(mat, prod); // Checks if the product matrix is an identity matrix for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (identityMat[i][j] != prod[i][j]) return false; } } return true; } }
输出
The matrix is an involutory matrix.
方法 2:使用矩阵的动态初始化
在这种方法中,矩阵元素将作为用户输入在程序中输入。然后根据算法检查矩阵是否是对合矩阵。
示例
import java.util.Scanner; public class Main { public static void main(String[] args) { //Matrix to be checked int mat[][] = new int[3][3]; //Take matrix as user input Scanner sc = new Scanner(System.in); System.out.println("Enter matrix elements:-"); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { mat[i][j] = sc.nextInt(); }} // Print results if (invoCheck(mat)) System.out.println("The matrix is an involutory matrix."); else System.out.println("The matrix is not an involutory matrix."); } // Matrix multiplication static void mul(int mat[][], int prod[][]) { for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { prod[i][j] = 0; // Resultant product is stored in prod for (int k = 0; k < 3; k++) { prod[i][j] += mat[i][k] * mat[k][j]; } } } } // Check if the matrix is involutory static boolean invoCheck(int mat[][]) { // 3X3 Identity Matrix int identityMat[][] = { { 1, 0, 0 },{ 0, 1, 0 },{ 0, 0, 1 } }; int prod[][] = new int[3][3]; // Calls the matrix multiplication mul(mat, prod); // Checks if the product matrix is an identity matrix for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (identityMat[i][j] != prod[i][j]) return false; } } return true; } }
输出
Enter matrix elements:- 1 0 0 0 1 0 0 0 1 The matrix is an involutory matrix
在这篇文章中,我们探索了使用 Java 编程语言检查矩阵是否是对合矩阵的不同方法。
广告