[英]Matrix calculation not working… very odd output Java
这是我要在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] ;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.