gpt4 book ai didi

java - 矩阵计算不起作用...非常奇怪的输出 Java

转载 作者:行者123 更新时间:2023-12-01 13:09:28 26 4
gpt4 key购买 nike

当 A 是一个矩阵时,这就是我想要做的。

P - 是功率。A 和 B 是方阵。

用户将被要求输入矩阵 A 的大小、矩阵 A 的元素以及他们想要将矩阵提升到的幂。一旦他们输入什么功率和什么元素,我的程序应该计算这个:(假设P = 5)

A^5 + A^4 + A^3 + A^2 + A

我编写了一种将矩阵相加的方法、一种将它们相乘的方法以及一种将它们求幂的方法,并且它们都可以正常工作。

我遇到的问题是我上面显示的最后一步A^5 + A^4 + A^ 3...

这就是问题变得更奇怪的地方,当矩阵中的元素全部相同时,我的程序就可以工作......这样

2 2 2
2 2 2
2 2 2

矩阵会给我正确的输出,但是

1 2 3
4 5 6
7 8 9

矩阵会给我错误的输出,我不知道为什么。

这是出现问题的方法

public static void addPowers(int [][] a, int[][] b, int p) {
while( p != 1){
b = addMatrices(powerMatrix(a,p), b) ;
addPowers(a,b,p-1) ;
return ;
}
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < b.length; j++)
System.out.print(b[i][j] + "\t") ;
System.out.println();
}

}

以防万一你问,我在 while 循环下进行递归的原因是它不会一遍又一遍地打印。

感谢您的宝贵时间! :)

编辑:更多澄清信息。addMatrices 是一种将带有两个 int[][] 参数的矩阵相加的方法。powerMatrix 是一种使用 (int[][], int) 参数计算矩阵幂的方法。

编辑正在调用的方法...

public static int[][] multiplyMatrices(int matrixA[][], int matrixB[][]) {
int temp[][] = new int[matrixA.length][matrixB.length];
int matrix[][] = new int[matrixA.length][matrixB.length];
int sum = 0 ;

for (int i = 0; i < matrixA.length; i++)
{
for (int j = 0; j < matrixB.length; j++)
{
for (int l = 0; l < matrixA.length; l++)
{
sum += matrixA[i][l] * matrixB[l][j] ;
}
temp[i][j] = sum ;
sum = 0 ;
}
}
matrix = temp;
return matrix ;
}


public static int[][] addMatrices(int matrixA[][], int matrixB[][]) {
int temp[][] = new int[matrixA.length][matrixB.length];
int sum = 0 ;

for (int i = 0; i < matrixA.length; i++)
{
for (int j = 0; j < matrixB.length; j++) {
{
sum = matrixA[i][j] + matrixB[i][j] ;
}
temp[i][j] = sum ;
}
}
return temp ;
}


public static int[][] powerMatrix (int[][] a, int p) {
int[][] result = a;
for (int n = 1; n < p; n++)
result = multiplyMatrices(result, a);
return result;
}

最佳答案

在您的 addMatrices 方法中,您应该删除第三个循环。

像这样:

for (int i = 0; i < matrixA.length; i++) {
for (int j = 0; j < matrixA[i].length; j++) {
temp[i][j] = matrixA[i][j] + matrixB[i][j] ;
}
}

关于java - 矩阵计算不起作用...非常奇怪的输出 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23002218/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com