在 Java 中检查矩阵是否对合?
javaobject oriented programmingprogramming更新于 2025/3/4 7:08:17
矩阵不过是二维矩形布局中排列的数据元素的集合。在 Java 中,二维数组可以视为矩阵。
对合矩阵是一个方阵,当它与自身相乘时,会返回一个单位矩阵。单位矩阵是一种除对角线为 1 外所有元素均为零的矩阵。
让我们深入研究这篇文章,了解如何使用 Java 编程语言来实现这一点。
向您展示一些实例
实例 1
假设我们有一个矩阵
| 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
假设我们有一个矩阵
假设我们有一个矩阵
| 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) {
// 需要检查的矩阵
int mat[][] = {{ 1, 0, 0 },{ 0, -1, 0 },{ 0, 0, -1 },};
// 打印结果
if (invoCheck(mat))
System.out.println("The matrix is an involutory matrix.");
else
System.out.println("The matrix is not an involutory matrix.");
}
// 矩阵乘法
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];
}
}
}
}
// 检查矩阵是否对合
static boolean invoCheck(int mat[][]) {
// 3X3 单位矩阵
int identityMat[][] = { { 1, 0, 0 },{ 0, 1, 0 },{ 0, 0, 1 } };
int prod[][] = new int[3][3];
// 调用矩阵乘法
mul(mat, prod);
// 检查乘积矩阵是否为单位矩阵
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) {
//待检查矩阵
int mat[][] = new int[3][3];
//将矩阵作为用户输入
Scanner sc = new Scanner(System.in);
System.out.println("输入矩阵元素:-");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
mat[i][j] = sc.nextInt();
}}
//打印结果
if (invoCheck(mat))
System.out.println("该矩阵是对合矩阵。");
else
System.out.println("该矩阵不是对合矩阵。");
}
// 矩阵乘法
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;
// 结果产品存储在 prod 中
for (int k = 0; k < 3; k++) {
prod[i][j] += mat[i][k] * mat[k][j];
}
}
}
}
// 检查矩阵是否对合
static boolean invoCheck(int mat[][]) {
// 3X3 单位矩阵
intidentityMat[][] = { { 1, 0, 0 },{ 0, 1, 0 },{ 0, 0, 1 } };
intprod[][] = new int[3][3];
// 调用矩阵乘法
mul(mat, prod);
// 检查乘积矩阵是否为单位矩阵
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;
}
}
输出
输入矩阵元素:- 1 0 0 0 1 0 0 0 1 该矩阵为对合矩阵
在本文中,我们探索了使用 Java 编程语言检查矩阵是否为对合矩阵的不同方法。
相关文章
有用资源
java 参考教程 - 该教程包含有关 java 的更多信息:https://www.cainiaomax.com/java/

