我有一个2d数组,扮演2x2矩阵的角色。如何找到该矩阵的等级。到现在为止我有这个:
Scanner input=new Scanner(System.in);
int[][] A = new int[2][2];
int[][] B = new int[2][2];
int[][] C = new int[2][2];
System.out.println("Enter elements for matrix A : ");
for (int i=0 ; i < A.length ; i++)
{
for (int j=0 ; j < A[i].length ; j++)
{
A[i][j] = input.nextInt();
}
System.out.println("Matrix A: ");
for (int i=0 ; i < A.length ; i++)
{
System.out.println();
for(int j=0 ; j < A[i].length ; j++)
{
System.out.print(A[i][j]+" ");
}
}
}
如何找到该矩阵(数组)的等级?。
答案 0 :(得分:3)
您可以通过将矩阵转换为行梯形式来找到矩阵的等级。矩阵的行梯形式与矩阵具有相同的等级。行 - 梯形形式矩阵的等级简单地是非零行的总数。在2x2的情况下,你在这里的计算非常简单。请参阅此链接以获取更详细的说明
http://en.wikipedia.org/wiki/Rank_%28linear_algebra%29#Computation
一种更简单的粗略方法(因为你只有2x2矩阵)就是简单地检测矩阵的一列是否是另一列的倍数。这可以通过测试(对您选择的某些数值公差)大致检测这些比率是否相等(使用矩阵表示法,而不是基于整数零的数组索引)
A(1,1)/A(1,2) == A(2,1)/A(2,2)
像往常一样照顾零分裂。如果比率相等,则表明您的列是彼此的倍数,因此矩阵不是满秩(因此是1或0)。如果所有矩阵元素都为零,那么秩为零。
如果这对您的需求来说太粗糙,请使用上面链接中建议的高斯消除方法。
答案 1 :(得分:0)
@Sean Owen:等级也可以是0。