当A是 square 矩阵时,这就是我想要做的。
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
矩阵会给我CORRECT输出,但是
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;
}
答案 0 :(得分:1)
在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] ;
}
}